Upload
sabin-buraga
View
2.720
Download
0
Embed Size (px)
DESCRIPTION
Computer Networks course (in Romanian).
Citation preview
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[11]]
ReteleRetele
de de calculatoarecalculatoare ParadigmaParadigma
RPCRPC
Sabin-Corneliu Buraga [email protected]
http://www.infoiasi.ro/~busaco
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[22]]
CuprinsCuprins
•
Remote Procedure Call
(RPC)– Preliminarii– Caracterizare– External Data Representation (XDR)– Functionare– Implementari– Utilizari
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[33]]
PreliminariiPreliminarii
•
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
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[44]]
CaracterizareCaracterizare•
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)
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[55]]
CaracterizareCaracterizare•
Interfetele
ciot
implementeaza protocolul
RPC
•
Probleme:–
Identificarea
si
accesarea procedurii
la distanta–
Transferul
parametrilor–
Transmiterea
valorii
de retur
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[66]]
CaracterizareCaracterizare•
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)
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[77]]
XDRXDR•
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)
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[88]]
XDRXDR•
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 AProcesulProcesul AA
XDR Encode/DecodeXDR Encode/DecodeXDR Encode/Decode
TransportTransportTransport
Procesul BProcesulProcesul BB
XDR Encode/DecodeXDR Encode/DecodeXDR Encode/Decode
TransportTransportTransport
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[99]]
XDRXDR•
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; xdr_int (xdrm, &intreg); ...
Inlocuit
la celalalt
capat
al comunicatiei
cu XDR_DECODE
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[1010]]
XDRXDR
•
Activitatea
de codificare/decodificare
•
In prezent, poate
fi
inlocuit
de reprezentari XML-RPC sau
SOAP (in contextul
serviciilor
Web) –
vezi
cursul
“Tehnologii
Web”
Expe- ditor
ExpeExpe-- ditorditor
Desti- natar
DestiDesti-- natarnatarXDRXDRXDRENCODEENCODEENCODE DECODEDECODEDECODE
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[1111]]
FunctionareFunctionare•
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
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[1212]]
FunctionareFunctionare
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[1313]]
FunctionareFunctionare1.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
RPC3.Clientul
si
serverul
pot comunica
pentru
a realiza
executia
procedurii
la distanta•
Cererile
si
raspunsurile
se (de)codifica
prin
XDR
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[1414]]
FunctionareFunctionare
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[1515]]
FunctionareFunctionare
•
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
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[1616]]
FunctionareFunctionare•
Transferurile
de date prin
RPC pot fi:
–
Sincrone–
Asincrone
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[1717]]
ImplementariImplementari•
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.)
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[1818]]
Implementari|ONCImplementari|ONC RPCRPC
•
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
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[1919]]
Implementari|ONCImplementari|ONC RPCRPC
•
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
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[2020]]
Implementari|ONCImplementari|ONC RPCRPC
•
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>
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[2121]]
Implementari|ONCImplementari|ONC RPCRPC
•
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
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[2222]]
Implementari|ONCImplementari|ONC RPCRPC
•
Programarea
la nivel
inaltmain (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 %s\n”,numar_utiliz, argv[1]);
exit (0);}•
Compilare: gcc prog.c –lrpcsvc –oprog
•
Executie:
./prog fenrir.infoiasi.ro
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[2323]]
Implementari|ONCImplementari|ONC RPCRPC
•
Programarea
la nivel
intermediarint callrpc(char *host,
u_long prognum,u_long versnum,u_long procnum,xdrproc_t inproc,void *in,xdrproc_t outproc,void *out);
Apelata
de clientul
RPC
Argum. de intrare
(codificate XDR)
Rezultatul
Identificarea procedurii
la
distanta
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[2424]]
Implementari|ONCImplementari|ONC RPCRPC
•
Programarea
la nivel
intermediarint registerrpc(
u_long prognum,u_long versnum,u_long procnum,void *(*procname)(),xdrproc_t inproc,xdrproc_t outproc);
Apelata
de serverul
RPC
Identificarea procedurii
la
distanta
Utilizate
la codificarea/decodificarea
XDR
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[2525]]
Implementari|ONCImplementari|ONC RPCRPC
•
Programarea
la nivel
intermediarint svc_run();
•
Functiile
de nivel
intermediar
utilizeaza
doar UDP si
nu
ofera
suport
pentru
autentificare
Apelata
de serverul
RPC, reprezinta
dispatcher-ul
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[2626]]
Implementari|ONCImplementari|ONC RPCRPC
•
Programarea
la nivel
inferior
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[2727]]
Implementari|ONCImplementari|ONC RPCRPC
•
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
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[2828]]
Implementari|ONCImplementari|ONC RPCRPC
•
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
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[2929]]
Implementari|ONCImplementari|ONC RPCRPC
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
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[3030]]
Implementari|alteleImplementari|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
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[3131]]
UtilizariUtilizari•
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
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[3232]]
UtilizariUtilizari•
NFS– Probleme:
•
Numirea
(naming)•
Consistenta
•
Replicarea
(replication)
Arhitectura NFS
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[3333]]
UtilizariUtilizari•
NFS– Procesul
de montare
(protocolul
mount)
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[3434]]
RezumatRezumat
•
Remote Procedure Call
(RPC)– Preliminarii– Caracterizare– External Data Representation (XDR)– Functionare– Implementari– Utilizari
ReteleRetele de de calculatoarecalculatoare
SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[3535]]
Intrebari?