35
Retele Retele de de calculatoare calculatoare Sabin Sabin - - Corneliu Corneliu Buraga Buraga 2006/2007 2006/2007 www.infoiasi.ro/~busaco www.infoiasi.ro/~busaco / / [ [ 1 1 ] ] Retele Retele de de calculatoare calculatoare Paradigma Paradigma RPC RPC Sabin-Corneliu Buraga [email protected] http://www.infoiasi.ro/~busaco

Computer Networks. RPC

Embed Size (px)

DESCRIPTION

Computer Networks course (in Romanian).

Citation preview

Page 1: Computer Networks. RPC

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

Page 2: Computer Networks. RPC

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

Page 3: Computer Networks. RPC

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

Page 4: Computer Networks. RPC

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)

Page 5: Computer Networks. RPC

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

Page 6: Computer Networks. RPC

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)

Page 7: Computer Networks. RPC

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)

Page 8: Computer Networks. RPC

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

Page 9: Computer Networks. RPC

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

Page 10: Computer Networks. RPC

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

Page 11: Computer Networks. RPC

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

Page 12: Computer Networks. RPC

ReteleRetele de de calculatoarecalculatoare

SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[1212]]

FunctionareFunctionare

Page 13: Computer Networks. RPC

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

Page 14: Computer Networks. RPC

ReteleRetele de de calculatoarecalculatoare

SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[1414]]

FunctionareFunctionare

Page 15: Computer Networks. RPC

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

Page 16: Computer Networks. RPC

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

Page 17: Computer Networks. RPC

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.)

Page 18: Computer Networks. RPC

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

Page 19: Computer Networks. RPC

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

Page 20: Computer Networks. RPC

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>

Page 21: Computer Networks. RPC

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

Page 22: Computer Networks. RPC

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

Page 23: Computer Networks. RPC

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

Page 24: Computer Networks. RPC

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

Page 25: Computer Networks. RPC

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

Page 26: Computer Networks. RPC

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

Page 27: Computer Networks. RPC

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

Page 28: Computer Networks. RPC

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

Page 29: Computer Networks. RPC

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

Page 30: Computer Networks. RPC

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

Page 31: Computer Networks. RPC

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

Page 32: Computer Networks. RPC

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

Page 33: Computer Networks. RPC

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)

Page 34: Computer Networks. RPC

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

Page 35: Computer Networks. RPC

ReteleRetele de de calculatoarecalculatoare

SabinSabin--CorneliuCorneliu BuragaBuraga 2006/2007 2006/2007 –– www.infoiasi.ro/~busacowww.infoiasi.ro/~busaco// [[3535]]

Intrebari?