SlideShare a Scribd company logo
Retele de calculatoare




              Retele de calculatoare
                 Paradigma RPC
                 Sabin-Corneliu Buraga
                     busaco@infoiasi.ro
              http://www.infoiasi.ro/~busaco


Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [1]
Retele de calculatoare



                                                      Cuprins
     • Remote Procedure Call (RPC)
         – Preliminarii
         – Caracterizare
         – External Data Representation (XDR)
         – Functionare
         – Implementari
         – Utilizari

Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [2]
Retele de calculatoare



                                              Preliminarii
• Proiectarea aplicatiilor distribuite
  –Orientata pe protocol – socket-uri
        • Se dezvolta protocolul, apoi aplicatiile
          care il implementeaza efectiv
    –Orientata pe functionalitate – RPC
        • Se creeaza aplicatiile, dupa care se divid
          in componente si se adauga protocolul
          de comunicatie intre componente
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [3]
Retele de calculatoare



                                           Caracterizare
• Idee: Apelul unei proceduri care va fi executata
  pe alta masina
• Instrument de programare mai simplu
  decit interfata socket BSD
• O aplicatie RPC va consta dintr-un client si un server,
  serverul fiind localizat pe masina ce executa procedura
• Aplicatia client comunica prin retea cu procedura
  de pe calculatorul la distanta transmitind argumentele
  si receptionind rezultatele
• Clientul si serverul ≡ procese pe masini diferite
• RPC realizeaza comunicarea dintre ele prin socket-uri
  TCP/IP (uzual, UDP), via doua interfete stub (ciot)
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [4]
Retele de calculatoare



                                           Caracterizare
                                        • Interfetele ciot
                                          implementeaza
                                          protocolul RPC
                                        • Probleme:
                                            – Identificarea si
                                              accesarea
                                              procedurii la distanta
                                            – Transferul
                                              parametrilor
                                            – Transmiterea
                                              valorii de retur

Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [5]
Retele de calculatoare



                                           Caracterizare
   • Procedurile ciot se pot genera automat,
     dupa care se “leaga” de programele
     client si server
   • Ciotul serverului asculta la un port si
     realizeaza invocarea rutinelor
     printr-o interfata de apel de proceduri locale
   • Clientul si serverul vor comunica prin mesaje,
     printr-o reprezentare independenta de retea si
     de sistemul de operare:
     External Data Representation (XDR)
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [6]
Retele de calculatoare



                                                                 XDR
• RFC 1014
• Tipuri uzuale
    – Preluate din C:
      int, unsigned int, float, double, void,…
    – Suplimentare: string, fixed array,
      counted array, symbolic constant,…
• Functii de conversie (rpc/xdr.h)
    – xdrmem_create() – asociază unei zone de memorie
      un flux de date RPC
    – xdr_numetip() – realizeaza conversia datelor
• Codificarea argumentelor ≡ marshalling (serializare),
  decodificarea ≡ un-marshalling (deserializare)
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [7]
Retele de calculatoare



                                                                 XDR
• XDR poate fi vazut ca nivel suplimentar
  intre nivelul transport si nivelul aplicatie
  (similar nivelului prezentare de la modelul ISO/OSI)
• Converteste simetric datele client si server


           Procesul A                             Procesul B
           Procesul A                             Procesul B

     XDR Encode/Decode                      XDR Encode/Decode
     XDR Encode/Decode                      XDR Encode/Decode

            Transport                              Transport
            Transport                              Transport

Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [8]
Retele de calculatoare



                                                                 XDR
   • Exemplu:
   #include <rpc/xdr.h>
   #define BUFSIZE 400 /* lungimea zonei de memorie */
   /* conversia unui intreg in format XDR */
   ...
   XDR *xdrm; /* zona de memorie XDR */
   char buf[BUFSIZE];
   int intreg;
   ...
   xdrmem_create (xdrm, buf, BUFSIZE, XDR_ENCODE);
   ...
   intreg = 33;
                                Inlocuit la celalalt capat al
   xdr_int (xdrm, &intreg);
   ...
                                        comunicatiei cu XDR_DECODE
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [9]
Retele de calculatoare



                                                             XDR

   • Activitatea de codificare/decodificare
   Expe-                                                          Desti-
                                                                  Desti-
   Expe-                           XDR
                  ENCODE                       DECODE
                                   XDR
                  ENCODE                       DECODE
   ditor                                                          natar
                                                                   natar
    ditor

   • In prezent, poate fi inlocuit de reprezentari
     XML-RPC sau SOAP (in contextul serviciilor
     Web) – vezi cursul “Tehnologii Web”
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [10]
Retele de calculatoare



                                              Functionare
• Adresele clientului, serverului,
  numele serviciilor sint pastrate la nivel simbolic
• Un serviciu de retea este identificat de portul
  la care exista un daemon asteptind cereri
• Pentru RPC,
  un port ≡ canal logic de comunicare
• Portmapper ≡ serviciu de reţea responsabil
  cu asocierea de servicii la diferite porturi
  ⇒ numerele de port pentru un anumit serviciu
     nu mai sunt fixe
• Portmapper-ul este disponibil la portul 111
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [11]
Retele de calculatoare

                                                  Functionare




Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [12]
Retele de calculatoare



                                              Functionare
  1. Se determina adresa la care
     serverul va oferi serviciul
      • La initializare, serverul stabileste si inregistreaza
        via portmapper portul la care va oferi serviciul
        (portul a)
  2. Clientul consulta portmapper-ul
     de pe masina serverului pentru a identifica
     portul la care trebuie sa trimita cererea RPC
  3. Clientul si serverul pot comunica pentru
     a realiza executia procedurii la distanta
      • Cererile si raspunsurile se (de)codifica prin XDR
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [13]
Retele de calculatoare




                                                     Functionare
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [14]
Retele de calculatoare



                                              Functionare

   • Atunci cind un server furnizeaza mai multe
     servicii, este de obicei folosita
     o rutina dispatcher
   • Dispatcher-ul identifica cererile specifice
     si apeleaza procedura corespunzatoare,
     dupa care rezultatul este trimis inapoi
     clientului pentru a-si continua executia


Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [15]
Retele de calculatoare



                                              Functionare
   • Transferurile de date prin RPC pot fi:
       – Sincrone
       – Asincrone




Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [16]
Retele de calculatoare



                                          Implementari
• Open Network Computing RPC (ONC RPC)
   – Sun Microsystems
   – Cea mai raspindita implementare in mediile Unix
   – RFC 1057
   – Interfata RPC este structurata pe 3 niveluri:
       • Superior: independent de sistem, hardware sau retea
       • Intermediar: face apel la functiile definite de biblioteca
         RPC: registerrpc(), callrpc(), svc_run()
       • Inferior: da posibilitatea de a controla intim
         mecanismele RPC (alegerea modului de transport al
         datelor, sincronizarea apelurilor etc.)

Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [17]
Retele de calculatoare



                      Implementari|ONC RPC
• Procedurile la distanta se vor include
  intr-un program la distanta – unitate software
  care se va executa pe o masina la distanta
• Fiecare program la distanta corespunde unui server:
  proceduri la distanta + date globale
• Fiecare program la distanta se identifica
  printr-un identificator unic stocat pe 32 biti
• Fiecare procedura va fi identificata prin index (1..n)
• Identificatori standard Sun RPC:
   –   00   00   00   00   –   1F FF FF FF aplicatiile RPC ale sistemului
   –   20   00   00   00   –   3F FF FF FF programele utilizatorilor
   –   40   00   00   00   –   5F FF FF FF identificatori temporari
   –   60   00   00   00   –   FF FF FF FF valori rezervate
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [18]
Retele de calculatoare



                 Implementari|ONC RPC
• Exemple:
   – 10000 meta-serverul portmapper
   – 10001 rstatd – informatii despre sistemul aflat la
     distanta; procedurile rstat() sau perfmeter()
   – 10002 rusersd – informatii despre utilizatorii
     conectati pe masina la distanta
   – 10003 serverul nfs – acces la sistemul de fisiere
     in retea NFS (Network File System)
   – 10004 serviciile NIS (Network Information Service),
     denumite anterior Yellow Pages
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [19]
Retele de calculatoare



                 Implementari|ONC RPC
• Fiecare program la distanta
  are asociat un numar de versiune
   – Pentru a modifica detalii de implementare
   – Util la extinderea capabilitatilor aplicatiei RPC
   – Initial versiunea = 1
   – Urmatoarele versiuni se identifica in mod unic
     prin alte numere de versiune

• O functionalitate ≡ <id_prog, vers, index_proc>

Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [20]
Retele de calculatoare



                 Implementari|ONC RPC
• Programare
   – Biblioteca RPC
       • Rutinele XDR
       • Biblioteca RPC run-time
          –Apelul unui serviciu RPC
          –Inregistrarea la un portmapper
          –Trimiterea cererilor (via dispatcher)
            procedurii dorite
   – Generatorul automat de aplicatii RPC rpcgen
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [21]
Retele de calculatoare



                 Implementari|ONC RPC
• Programarea la nivel inalt
main (int argc, char *argv[]) {
  int numar_utiliz;
  if (argc != 2) { /* eroare */ }
  if ((numar_utiliz = rusers (argv[1])) < 0)
    { /* eroare RPC */ }
  printf (“%d utilizatori pe masina %sn”,
                      numar_utiliz, argv[1]);
  exit (0);
}
• Compilare: gcc prog.c –lrpcsvc –oprog
• Executie: ./prog fenrir.infoiasi.ro
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [22]
Retele de calculatoare



                 Implementari|ONC RPC
• Programarea la nivel intermediar
int callrpc(char *host,
              u_long prognum, Identificarea
  Apelata de  u_long versnum, procedurii la
 clientul RPC                   distanta
              u_long procnum,
              xdrproc_t inproc,
 Argum. de
    intrare   void *in,
 (codificate  xdrproc_t outproc,
     XDR)
              void *out);        Rezultatul
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [23]
Retele de calculatoare



                 Implementari|ONC RPC
• Programarea la nivel intermediar
int registerrpc(
            u_long prognum,   Identificarea
 Apelata de                   procedurii la
            u_long versnum,
  serverul                      distanta
            u_long procnum,
    RPC
            void *(*procname)(),
            xdrproc_t inproc,
            xdrproc_t outproc);
  Utilizate la codificarea/decodificarea XDR
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [24]
Retele de calculatoare



                 Implementari|ONC RPC
• Programarea la nivel intermediar
int svc_run();

           Apelata de serverul RPC,
           reprezinta dispatcher-ul

• Functiile de nivel intermediar utilizeaza doar
  UDP si nu ofera suport pentru autentificare


Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [25]
Retele de calculatoare



                 Implementari|ONC RPC
• Programarea la nivel inferior




Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [26]
Retele de calculatoare



                 Implementari|ONC RPC
 • Generatorul automat
   de aplicatii RPC
   rpcgen
     – Produce rutinele ciot
       pentru client si server
     – Genereaza automat
       functiile de
       conversie XDR
     – Genereaza
       rutina dispatcher
     – Se utilizeaza
       biblioteca rpclib

Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [27]
Retele de calculatoare



                 Implementari|ONC RPC
 • Realizarea de aplicatii RPC cu rpcgen
     – Fisier-specificatie RPC .x
         • Declaratii de constante utilizate de client si server
         • Declaratii de tipuri de date globale
         • Declaratii de programe la distanta, proceduri,
           tipuri parametri, tipul rezultatului,
           identificatorul unic de program
     – Programul server.c care contine procedurile
     – Programul client.c care invoca procedurile
 • Pentru a lista programele RPC inregistrate:
   rpcinfo
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [28]
Retele de calculatoare



                 Implementari|ONC RPC
struct request          /*        cererea adresata serverului */
  {
     char tren_d[100]; /*         descrierea trenului */
     char nr_tren[10]; /*         numarul trenului */
     int optiuni;        /*       PLECARI sau SOSIRI /*
  };
struct answer           /*        raspuns primit de client */
  {
     char raspuns[4000];
  };
program TRENURI
{
  version VERSIUNE
  {                      /*       proc. apelata la distanta */
     answer TREN (request)        = 1;
  } = 1;                 /*       versiunea 1 (prima) */
} = 0x200000f1;          /*       identif. unic al prog. */

                                         Exemplu de specificatie .x
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [29]
Retele de calculatoare



                            Implementari|altele
 • Distributed Computing Environment DCE RPC
     – Alternativa la Sun ONC RPC
     – Utilizat si de serverele Windows
 • Object RPC (ORPC)
     – Mesajele de cerere/raspuns la distanta
       se incapsuleaza in obiecte
     – Descendenti directi:
       (D)COM (Distributed Component Object Model) &
       CORBA (Common Object Request Broker Architecture)
     – Folosit si de GNOME (via ORBit)
     – In Java: RMI (Remote Method Invocation)
     – La .NET: .NET Remoting
 • SOAP (Simple Object Access Protocol)
     – XML ca XDR, HTTP ca protocol de transfer
     – Baza pentru implementarea serviciilor Web
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [30]
Retele de calculatoare



                                                      Utilizari
• Accesul la sisteme de fisiere la distanta
  NFS (Network File System)
   – Sistem distribuit de fisiere (distributed file system)
   – Utilizeaza filosofia sistemului de fisiere Unix
   – Ierarhia de directoare NFS foloseste terminologia
     Unix (arbore, director, cale, fisier etc.)
   – Operatii asupra unui fisier la distanta: operatii I/O,
     creare/redenumire/stergere, stat, listarea intrarilor
   – Server – nfsd si client – nfs comunicind prin RPC
   – Sistemul de fisiere la distanta va fi disponibil
     prin comanda mount
   – RFC 1094
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [31]
Retele de calculatoare



• NFS                                                 Utilizari
   – Probleme:
       • Numirea (naming)
       • Consistenta
       • Replicarea (replication)




  Arhitectura
         NFS
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [32]
Retele de calculatoare



                                                      Utilizari
• NFS
   – Procesul de montare (protocolul mount)




Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [33]
Retele de calculatoare



                                                    Rezumat
     • Remote Procedure Call (RPC)
         – Preliminarii
         – Caracterizare
         – External Data Representation (XDR)
         – Functionare
         – Implementari
         – Utilizari

Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [34]
Retele de calculatoare




                         Intrebari?




Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [35]

More Related Content

What's hot

Computer Networks. P2P
Computer Networks. P2PComputer Networks. P2P
Computer Networks. P2P
Sabin Buraga
 
Computer Networks. TCP/IP
Computer Networks. TCP/IPComputer Networks. TCP/IP
Computer Networks. TCP/IP
Sabin Buraga
 
Computer Networks. Main concepts
Computer Networks. Main conceptsComputer Networks. Main concepts
Computer Networks. Main concepts
Sabin Buraga
 
Computer Networks. IP
Computer Networks. IPComputer Networks. IP
Computer Networks. IP
Sabin Buraga
 
Computer Networks. Security: monitoring & testing
Computer Networks. Security: monitoring & testingComputer Networks. Security: monitoring & testing
Computer Networks. Security: monitoring & testing
Sabin Buraga
 
Computer Networks. Domain Name System
Computer Networks. Domain Name SystemComputer Networks. Domain Name System
Computer Networks. Domain Name System
Sabin Buraga
 
Computer Networks. Retrospective & perspective
Computer Networks. Retrospective & perspectiveComputer Networks. Retrospective & perspective
Computer Networks. Retrospective & perspective
Sabin Buraga
 

What's hot (7)

Computer Networks. P2P
Computer Networks. P2PComputer Networks. P2P
Computer Networks. P2P
 
Computer Networks. TCP/IP
Computer Networks. TCP/IPComputer Networks. TCP/IP
Computer Networks. TCP/IP
 
Computer Networks. Main concepts
Computer Networks. Main conceptsComputer Networks. Main concepts
Computer Networks. Main concepts
 
Computer Networks. IP
Computer Networks. IPComputer Networks. IP
Computer Networks. IP
 
Computer Networks. Security: monitoring & testing
Computer Networks. Security: monitoring & testingComputer Networks. Security: monitoring & testing
Computer Networks. Security: monitoring & testing
 
Computer Networks. Domain Name System
Computer Networks. Domain Name SystemComputer Networks. Domain Name System
Computer Networks. Domain Name System
 
Computer Networks. Retrospective & perspective
Computer Networks. Retrospective & perspectiveComputer Networks. Retrospective & perspective
Computer Networks. Retrospective & perspective
 

Similar to Computer Networks. RPC

Retele de calculatoare
Retele de calculatoareRetele de calculatoare
Retele de calculatoare
Viorel Gurdiș
 
Suport 01-cls9-tic-cap05-utilizarea internetului
Suport 01-cls9-tic-cap05-utilizarea internetuluiSuport 01-cls9-tic-cap05-utilizarea internetului
Suport 01-cls9-tic-cap05-utilizarea internetuluiGeorge Brebenel
 
Radicomunicatii digitale (cristian colonati) (2004)
Radicomunicatii digitale (cristian colonati) (2004)Radicomunicatii digitale (cristian colonati) (2004)
Radicomunicatii digitale (cristian colonati) (2004)
ivan ion
 
123 radicomunicatii digitale yo4 uq (2004)
123 radicomunicatii digitale   yo4 uq (2004)123 radicomunicatii digitale   yo4 uq (2004)
123 radicomunicatii digitale yo4 uq (2004)
ivan ion
 
Radicomunicatii digitale (Cristian Colonati) (2004).pdf
Radicomunicatii digitale (Cristian Colonati) (2004).pdfRadicomunicatii digitale (Cristian Colonati) (2004).pdf
Radicomunicatii digitale (Cristian Colonati) (2004).pdf
ivan ion
 
123 Radicomunicatii digitale - YO4UQ (2004).pdf
123 Radicomunicatii digitale - YO4UQ (2004).pdf123 Radicomunicatii digitale - YO4UQ (2004).pdf
123 Radicomunicatii digitale - YO4UQ (2004).pdf
ivan ion
 
Tipuri de Retele _Alina Gheorghita _12B.pdf
Tipuri de Retele _Alina Gheorghita _12B.pdfTipuri de Retele _Alina Gheorghita _12B.pdf
Tipuri de Retele _Alina Gheorghita _12B.pdf
IonelStanescu
 
Vincentiu Cuc - Platforma IT IMI
Vincentiu Cuc - Platforma IT IMIVincentiu Cuc - Platforma IT IMI
Vincentiu Cuc - Platforma IT IMIIMI PQ NET Romania
 
Programare Web - De la CGI la servere de aplicatii
Programare Web - De la CGI la servere de aplicatiiProgramare Web - De la CGI la servere de aplicatii
Programare Web - De la CGI la servere de aplicatii
Sabin Buraga
 
WADe 2017-2018 (2/12) Service-based Web Application Development. REST
WADe 2017-2018 (2/12) Service-based Web Application Development. RESTWADe 2017-2018 (2/12) Service-based Web Application Development. REST
WADe 2017-2018 (2/12) Service-based Web Application Development. REST
Sabin Buraga
 
The Bluetooth Protocol
The Bluetooth ProtocolThe Bluetooth Protocol
The Bluetooth Protocol
Vlad Petre
 
Prezentare Distinct New Media Ro
Prezentare Distinct New Media RoPrezentare Distinct New Media Ro
Prezentare Distinct New Media RoAdrian Dragomir
 
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
Sabin Buraga
 
Sabin Buraga – Dezvoltator Web (...în 2017)
Sabin Buraga – Dezvoltator Web (...în 2017)Sabin Buraga – Dezvoltator Web (...în 2017)
Sabin Buraga – Dezvoltator Web (...în 2017)
Sabin Buraga
 
Sistec - Tehnologie pt afaceri!
Sistec - Tehnologie pt afaceri!Sistec - Tehnologie pt afaceri!
Sistec - Tehnologie pt afaceri!
Raluca Vasilescu
 
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...Codecamp Romania
 
Konica minolta 10 nov 2010
Konica minolta   10 nov 2010Konica minolta   10 nov 2010
Konica minolta 10 nov 2010Agora Group
 

Similar to Computer Networks. RPC (20)

Retele de calculatoare
Retele de calculatoareRetele de calculatoare
Retele de calculatoare
 
Suport 01-cls9-tic-cap05-utilizarea internetului
Suport 01-cls9-tic-cap05-utilizarea internetuluiSuport 01-cls9-tic-cap05-utilizarea internetului
Suport 01-cls9-tic-cap05-utilizarea internetului
 
Radicomunicatii digitale (cristian colonati) (2004)
Radicomunicatii digitale (cristian colonati) (2004)Radicomunicatii digitale (cristian colonati) (2004)
Radicomunicatii digitale (cristian colonati) (2004)
 
123 radicomunicatii digitale yo4 uq (2004)
123 radicomunicatii digitale   yo4 uq (2004)123 radicomunicatii digitale   yo4 uq (2004)
123 radicomunicatii digitale yo4 uq (2004)
 
Radicomunicatii digitale (Cristian Colonati) (2004).pdf
Radicomunicatii digitale (Cristian Colonati) (2004).pdfRadicomunicatii digitale (Cristian Colonati) (2004).pdf
Radicomunicatii digitale (Cristian Colonati) (2004).pdf
 
123 Radicomunicatii digitale - YO4UQ (2004).pdf
123 Radicomunicatii digitale - YO4UQ (2004).pdf123 Radicomunicatii digitale - YO4UQ (2004).pdf
123 Radicomunicatii digitale - YO4UQ (2004).pdf
 
It modullul 1 15oct
It modullul 1 15octIt modullul 1 15oct
It modullul 1 15oct
 
Tipuri de Retele _Alina Gheorghita _12B.pdf
Tipuri de Retele _Alina Gheorghita _12B.pdfTipuri de Retele _Alina Gheorghita _12B.pdf
Tipuri de Retele _Alina Gheorghita _12B.pdf
 
Cours
CoursCours
Cours
 
Vincentiu Cuc - Platforma IT IMI
Vincentiu Cuc - Platforma IT IMIVincentiu Cuc - Platforma IT IMI
Vincentiu Cuc - Platforma IT IMI
 
Programare Web - De la CGI la servere de aplicatii
Programare Web - De la CGI la servere de aplicatiiProgramare Web - De la CGI la servere de aplicatii
Programare Web - De la CGI la servere de aplicatii
 
Axiologic quark
Axiologic quarkAxiologic quark
Axiologic quark
 
WADe 2017-2018 (2/12) Service-based Web Application Development. REST
WADe 2017-2018 (2/12) Service-based Web Application Development. RESTWADe 2017-2018 (2/12) Service-based Web Application Development. REST
WADe 2017-2018 (2/12) Service-based Web Application Development. REST
 
The Bluetooth Protocol
The Bluetooth ProtocolThe Bluetooth Protocol
The Bluetooth Protocol
 
Prezentare Distinct New Media Ro
Prezentare Distinct New Media RoPrezentare Distinct New Media Ro
Prezentare Distinct New Media Ro
 
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
 
Sabin Buraga – Dezvoltator Web (...în 2017)
Sabin Buraga – Dezvoltator Web (...în 2017)Sabin Buraga – Dezvoltator Web (...în 2017)
Sabin Buraga – Dezvoltator Web (...în 2017)
 
Sistec - Tehnologie pt afaceri!
Sistec - Tehnologie pt afaceri!Sistec - Tehnologie pt afaceri!
Sistec - Tehnologie pt afaceri!
 
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
 
Konica minolta 10 nov 2010
Konica minolta   10 nov 2010Konica minolta   10 nov 2010
Konica minolta 10 nov 2010
 

More from Sabin Buraga

Web 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturaleWeb 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturale
Sabin Buraga
 
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebWeb 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Sabin Buraga
 
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebWeb 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Sabin Buraga
 
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Sabin Buraga
 
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Sabin Buraga
 
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelWeb 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Sabin Buraga
 
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Sabin Buraga
 
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Sabin Buraga
 
Web 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTWeb 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma REST
Sabin Buraga
 
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Sabin Buraga
 
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Sabin Buraga
 
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeWeb 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Sabin Buraga
 
STAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSTAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor Web
Sabin Buraga
 
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSTAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
Sabin Buraga
 
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
Sabin Buraga
 
STAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSTAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.js
Sabin Buraga
 
STAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSTAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului Web
Sabin Buraga
 
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSTAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
Sabin Buraga
 
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSTAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
Sabin Buraga
 
STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5
Sabin Buraga
 

More from Sabin Buraga (20)

Web 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturaleWeb 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturale
 
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebWeb 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
 
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebWeb 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
 
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
 
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
 
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelWeb 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
 
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
 
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
 
Web 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTWeb 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma REST
 
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
 
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
 
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeWeb 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
 
STAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSTAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor Web
 
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSTAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
 
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
 
STAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSTAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.js
 
STAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSTAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului Web
 
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSTAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
 
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSTAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
 
STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5
 

Computer Networks. RPC

  • 1. Retele de calculatoare Retele de calculatoare Paradigma RPC Sabin-Corneliu Buraga busaco@infoiasi.ro http://www.infoiasi.ro/~busaco Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [1]
  • 2. Retele de calculatoare Cuprins • Remote Procedure Call (RPC) – Preliminarii – Caracterizare – External Data Representation (XDR) – Functionare – Implementari – Utilizari Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [2]
  • 3. Retele de calculatoare Preliminarii • Proiectarea aplicatiilor distribuite –Orientata pe protocol – socket-uri • Se dezvolta protocolul, apoi aplicatiile care il implementeaza efectiv –Orientata pe functionalitate – RPC • Se creeaza aplicatiile, dupa care se divid in componente si se adauga protocolul de comunicatie intre componente Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [3]
  • 4. Retele de calculatoare Caracterizare • Idee: Apelul unei proceduri care va fi executata pe alta masina • Instrument de programare mai simplu decit interfata socket BSD • O aplicatie RPC va consta dintr-un client si un server, serverul fiind localizat pe masina ce executa procedura • Aplicatia client comunica prin retea cu procedura de pe calculatorul la distanta transmitind argumentele si receptionind rezultatele • Clientul si serverul ≡ procese pe masini diferite • RPC realizeaza comunicarea dintre ele prin socket-uri TCP/IP (uzual, UDP), via doua interfete stub (ciot) Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [4]
  • 5. Retele de calculatoare Caracterizare • Interfetele ciot implementeaza protocolul RPC • Probleme: – Identificarea si accesarea procedurii la distanta – Transferul parametrilor – Transmiterea valorii de retur Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [5]
  • 6. Retele de calculatoare Caracterizare • Procedurile ciot se pot genera automat, dupa care se “leaga” de programele client si server • Ciotul serverului asculta la un port si realizeaza invocarea rutinelor printr-o interfata de apel de proceduri locale • Clientul si serverul vor comunica prin mesaje, printr-o reprezentare independenta de retea si de sistemul de operare: External Data Representation (XDR) Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [6]
  • 7. Retele de calculatoare XDR • RFC 1014 • Tipuri uzuale – Preluate din C: int, unsigned int, float, double, void,… – Suplimentare: string, fixed array, counted array, symbolic constant,… • Functii de conversie (rpc/xdr.h) – xdrmem_create() – asociază unei zone de memorie un flux de date RPC – xdr_numetip() – realizeaza conversia datelor • Codificarea argumentelor ≡ marshalling (serializare), decodificarea ≡ un-marshalling (deserializare) Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [7]
  • 8. Retele de calculatoare XDR • XDR poate fi vazut ca nivel suplimentar intre nivelul transport si nivelul aplicatie (similar nivelului prezentare de la modelul ISO/OSI) • Converteste simetric datele client si server Procesul A Procesul B Procesul A Procesul B XDR Encode/Decode XDR Encode/Decode XDR Encode/Decode XDR Encode/Decode Transport Transport Transport Transport Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [8]
  • 9. Retele de calculatoare XDR • Exemplu: #include <rpc/xdr.h> #define BUFSIZE 400 /* lungimea zonei de memorie */ /* conversia unui intreg in format XDR */ ... XDR *xdrm; /* zona de memorie XDR */ char buf[BUFSIZE]; int intreg; ... xdrmem_create (xdrm, buf, BUFSIZE, XDR_ENCODE); ... intreg = 33; Inlocuit la celalalt capat al xdr_int (xdrm, &intreg); ... comunicatiei cu XDR_DECODE Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [9]
  • 10. Retele de calculatoare XDR • Activitatea de codificare/decodificare Expe- Desti- Desti- Expe- XDR ENCODE DECODE XDR ENCODE DECODE ditor natar natar ditor • In prezent, poate fi inlocuit de reprezentari XML-RPC sau SOAP (in contextul serviciilor Web) – vezi cursul “Tehnologii Web” Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [10]
  • 11. Retele de calculatoare Functionare • Adresele clientului, serverului, numele serviciilor sint pastrate la nivel simbolic • Un serviciu de retea este identificat de portul la care exista un daemon asteptind cereri • Pentru RPC, un port ≡ canal logic de comunicare • Portmapper ≡ serviciu de reţea responsabil cu asocierea de servicii la diferite porturi ⇒ numerele de port pentru un anumit serviciu nu mai sunt fixe • Portmapper-ul este disponibil la portul 111 Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [11]
  • 12. Retele de calculatoare Functionare Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [12]
  • 13. Retele de calculatoare Functionare 1. Se determina adresa la care serverul va oferi serviciul • La initializare, serverul stabileste si inregistreaza via portmapper portul la care va oferi serviciul (portul a) 2. Clientul consulta portmapper-ul de pe masina serverului pentru a identifica portul la care trebuie sa trimita cererea RPC 3. Clientul si serverul pot comunica pentru a realiza executia procedurii la distanta • Cererile si raspunsurile se (de)codifica prin XDR Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [13]
  • 14. Retele de calculatoare Functionare Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [14]
  • 15. Retele de calculatoare Functionare • Atunci cind un server furnizeaza mai multe servicii, este de obicei folosita o rutina dispatcher • Dispatcher-ul identifica cererile specifice si apeleaza procedura corespunzatoare, dupa care rezultatul este trimis inapoi clientului pentru a-si continua executia Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [15]
  • 16. Retele de calculatoare Functionare • Transferurile de date prin RPC pot fi: – Sincrone – Asincrone Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [16]
  • 17. Retele de calculatoare Implementari • Open Network Computing RPC (ONC RPC) – Sun Microsystems – Cea mai raspindita implementare in mediile Unix – RFC 1057 – Interfata RPC este structurata pe 3 niveluri: • Superior: independent de sistem, hardware sau retea • Intermediar: face apel la functiile definite de biblioteca RPC: registerrpc(), callrpc(), svc_run() • Inferior: da posibilitatea de a controla intim mecanismele RPC (alegerea modului de transport al datelor, sincronizarea apelurilor etc.) Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [17]
  • 18. Retele de calculatoare Implementari|ONC RPC • Procedurile la distanta se vor include intr-un program la distanta – unitate software care se va executa pe o masina la distanta • Fiecare program la distanta corespunde unui server: proceduri la distanta + date globale • Fiecare program la distanta se identifica printr-un identificator unic stocat pe 32 biti • Fiecare procedura va fi identificata prin index (1..n) • Identificatori standard Sun RPC: – 00 00 00 00 – 1F FF FF FF aplicatiile RPC ale sistemului – 20 00 00 00 – 3F FF FF FF programele utilizatorilor – 40 00 00 00 – 5F FF FF FF identificatori temporari – 60 00 00 00 – FF FF FF FF valori rezervate Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [18]
  • 19. Retele de calculatoare Implementari|ONC RPC • Exemple: – 10000 meta-serverul portmapper – 10001 rstatd – informatii despre sistemul aflat la distanta; procedurile rstat() sau perfmeter() – 10002 rusersd – informatii despre utilizatorii conectati pe masina la distanta – 10003 serverul nfs – acces la sistemul de fisiere in retea NFS (Network File System) – 10004 serviciile NIS (Network Information Service), denumite anterior Yellow Pages Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [19]
  • 20. Retele de calculatoare Implementari|ONC RPC • Fiecare program la distanta are asociat un numar de versiune – Pentru a modifica detalii de implementare – Util la extinderea capabilitatilor aplicatiei RPC – Initial versiunea = 1 – Urmatoarele versiuni se identifica in mod unic prin alte numere de versiune • O functionalitate ≡ <id_prog, vers, index_proc> Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [20]
  • 21. Retele de calculatoare Implementari|ONC RPC • Programare – Biblioteca RPC • Rutinele XDR • Biblioteca RPC run-time –Apelul unui serviciu RPC –Inregistrarea la un portmapper –Trimiterea cererilor (via dispatcher) procedurii dorite – Generatorul automat de aplicatii RPC rpcgen Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [21]
  • 22. Retele de calculatoare Implementari|ONC RPC • Programarea la nivel inalt main (int argc, char *argv[]) { int numar_utiliz; if (argc != 2) { /* eroare */ } if ((numar_utiliz = rusers (argv[1])) < 0) { /* eroare RPC */ } printf (“%d utilizatori pe masina %sn”, numar_utiliz, argv[1]); exit (0); } • Compilare: gcc prog.c –lrpcsvc –oprog • Executie: ./prog fenrir.infoiasi.ro Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [22]
  • 23. Retele de calculatoare Implementari|ONC RPC • Programarea la nivel intermediar int callrpc(char *host, u_long prognum, Identificarea Apelata de u_long versnum, procedurii la clientul RPC distanta u_long procnum, xdrproc_t inproc, Argum. de intrare void *in, (codificate xdrproc_t outproc, XDR) void *out); Rezultatul Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [23]
  • 24. Retele de calculatoare Implementari|ONC RPC • Programarea la nivel intermediar int registerrpc( u_long prognum, Identificarea Apelata de procedurii la u_long versnum, serverul distanta u_long procnum, RPC void *(*procname)(), xdrproc_t inproc, xdrproc_t outproc); Utilizate la codificarea/decodificarea XDR Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [24]
  • 25. Retele de calculatoare Implementari|ONC RPC • Programarea la nivel intermediar int svc_run(); Apelata de serverul RPC, reprezinta dispatcher-ul • Functiile de nivel intermediar utilizeaza doar UDP si nu ofera suport pentru autentificare Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [25]
  • 26. Retele de calculatoare Implementari|ONC RPC • Programarea la nivel inferior Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [26]
  • 27. Retele de calculatoare Implementari|ONC RPC • Generatorul automat de aplicatii RPC rpcgen – Produce rutinele ciot pentru client si server – Genereaza automat functiile de conversie XDR – Genereaza rutina dispatcher – Se utilizeaza biblioteca rpclib Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [27]
  • 28. Retele de calculatoare Implementari|ONC RPC • Realizarea de aplicatii RPC cu rpcgen – Fisier-specificatie RPC .x • Declaratii de constante utilizate de client si server • Declaratii de tipuri de date globale • Declaratii de programe la distanta, proceduri, tipuri parametri, tipul rezultatului, identificatorul unic de program – Programul server.c care contine procedurile – Programul client.c care invoca procedurile • Pentru a lista programele RPC inregistrate: rpcinfo Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [28]
  • 29. Retele de calculatoare Implementari|ONC RPC struct request /* cererea adresata serverului */ { char tren_d[100]; /* descrierea trenului */ char nr_tren[10]; /* numarul trenului */ int optiuni; /* PLECARI sau SOSIRI /* }; struct answer /* raspuns primit de client */ { char raspuns[4000]; }; program TRENURI { version VERSIUNE { /* proc. apelata la distanta */ answer TREN (request) = 1; } = 1; /* versiunea 1 (prima) */ } = 0x200000f1; /* identif. unic al prog. */ Exemplu de specificatie .x Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [29]
  • 30. Retele de calculatoare Implementari|altele • Distributed Computing Environment DCE RPC – Alternativa la Sun ONC RPC – Utilizat si de serverele Windows • Object RPC (ORPC) – Mesajele de cerere/raspuns la distanta se incapsuleaza in obiecte – Descendenti directi: (D)COM (Distributed Component Object Model) & CORBA (Common Object Request Broker Architecture) – Folosit si de GNOME (via ORBit) – In Java: RMI (Remote Method Invocation) – La .NET: .NET Remoting • SOAP (Simple Object Access Protocol) – XML ca XDR, HTTP ca protocol de transfer – Baza pentru implementarea serviciilor Web Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [30]
  • 31. Retele de calculatoare Utilizari • Accesul la sisteme de fisiere la distanta NFS (Network File System) – Sistem distribuit de fisiere (distributed file system) – Utilizeaza filosofia sistemului de fisiere Unix – Ierarhia de directoare NFS foloseste terminologia Unix (arbore, director, cale, fisier etc.) – Operatii asupra unui fisier la distanta: operatii I/O, creare/redenumire/stergere, stat, listarea intrarilor – Server – nfsd si client – nfs comunicind prin RPC – Sistemul de fisiere la distanta va fi disponibil prin comanda mount – RFC 1094 Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [31]
  • 32. Retele de calculatoare • NFS Utilizari – Probleme: • Numirea (naming) • Consistenta • Replicarea (replication) Arhitectura NFS Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [32]
  • 33. Retele de calculatoare Utilizari • NFS – Procesul de montare (protocolul mount) Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [33]
  • 34. Retele de calculatoare Rezumat • Remote Procedure Call (RPC) – Preliminarii – Caracterizare – External Data Representation (XDR) – Functionare – Implementari – Utilizari Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [34]
  • 35. Retele de calculatoare Intrebari? Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [35]