Il modello Client/Server
La comunicazione
Sun RPC
• Possibilità di invocare una procedura non locale  operazione che interessa un
nodo remoto e ne richiede un servizio
• RPC – Remote Procedure Call
Ho s t
P r ogr amma
Ho s t B
P r ogr amma clien t
P r ocedu r a
locale
2003-2004
Ho s t A
Con n ession e
di
r et e
Reti di Calcolatori
P r ocedu r a
ser ver
1
IlSun
modello
Client/Server
RPC
Proprietà e Requisiti
• Eterogeneità:
dati diversi su macchine diverse
• semantica diversa del modello locale esteso in modo remoto
• Efficienza: implementazioni efficienti del modello
• reti locali ad elevata velocità di trasferimento dati
• Autenticazione: controllo di accesso da parte di utenti autorizzati
• Possibilità di invocare una procedura non locale  operazione che interessa un nodo
remoto e ne richiede un servizio
• Il supporto scambia messaggi per consentire
• identificazione dei messaggi di chiamata e risposta
• identificazione unica della procedura remota
• autenticazione del chiamante e del servitore
• amministrazione della rete e gestione di alcuni tipi di errori dovuti alla
distribuzione
•implementazione errata
•errori dell'utente
•roll-over (ritorno indietro)
2003-2004
Reti di Calcolatori
2
IlSun
modello
Client/Server
RPC
Proprietà e Requisiti
• Il meccanismo RPC deve gestire i seguenti eventi anomali:
• incongruenze di protocollo RPC
• incongruenze fra versioni di programmi
• errori di protocollo (ad esempio parametri errati)
• autenticazione fallita sulla procedura remota e identificazione del motivo
del rifiuto dell'accesso
• altre ragioni per cui la procedura remota non viene chiamata o eseguita
2003-2004
Reti di Calcolatori
3
IlSun
modello
Client/Server
RPC
Semantica di Interazione
• A fronte di possibilità di guasto, il cliente può controllare o meno il servizio
•
•
•
•
maybe
at least once
at most once
exactly once
(SUN RPC)
• Per il parallelismo e la sincronizzazione possibile
• operazioni per il servitore
• sequenziali
(SUN RPC)
• paralleli
• operazioni per il cliente
• sincrone
(SUN RPC)
• asincrone
2003-2004
Reti di Calcolatori
4
IlSun
modello
Client/Server
RPC
Implementazione
• RPC meccanismo classificabile in due categorie secondo il grado di
trasparenza
• Open Network Computing (Sun Microsystems)
• Network Computing Architecture (Apollo)
Open Network Computing (ONC)
• chiamata RPC Sun
(diversa dalla locale)
• primitiva callrpc()
• parametri necessari
•nome del nodo remoto
•identificatore della procedura da eseguire
•specifiche di trasformazione degli argomenti
•(eXternal Data Representation XDR)
2003-2004
Reti di Calcolatori
5
IlSun
modello
Client/Server
RPC
Implementazione ONC
Clie n t
Se rv e r
P r ogr amma clien t
P r ocesso ser ver
esecu zion e r ich iesta
ch iamata
callrpc()
ser vizio
r itor n o
r isposta
r ich iesta completata
• Il meccanismo usa una tecnica nota come wrapping: uso una chiamata
callrpc()  il programmatore sa che sta facendo una rpc  non c’è
trasparenza
2003-2004
Reti di Calcolatori
6
RPC
IlSun
modello
Client/Server
Network Computing Architecture (NCA)
• Ai due lati della comunicazione, client e server
• routines stub per ottenere la trasparenza
Chiamate locali allo stub: gli stub sono forniti dall'implementazione generati
automaticamente  Le parti di programma sono "del tutto" inalterate ci si
dirige verso lo stub che nasconde le operazioni
Cli e n t
In t er fa ccia
St u b del clien t
Comunicazione di rete
P r ogr a m m a clien t
S e rv e r
RP C r u n -t im e
2003-2004
P r ocedu r a ser ver
In t er fa ccia
St u b del ser ver
RP C r u n -t im e
Reti di Calcolatori
7
RPC
IlSun
modello
Client/Server
In Unix
• Le RPC sfruttano i servizi delle socket
• sia TCP per stream  servizi con connessione
• sia UDP per datagrammi (default SUN) servizi senza connessione
• attesa del risultato e previste ritrasmissioni
Ap p li c a zi o n e d i s tri bu i ta ba s a ta s u RP C
Defin izion e ed u t ilizzo di ser vizi RP C
Gest ion e a va n za t a del pr ot ocollo RP C
Interfaccia RPC
Ut ilizzo di ser vizi RP C st a n da r d
In t er fa ccia socket (BSD)
P r ot ocolli di t r a spor t o (UDP e TCP )
2003-2004
Reti di Calcolatori
8
Il modello Client/Server
Sun RPC
• Un programma contiene più procedure remote che possono essere invocate
• Sono previste versioni multiple delle procedure
• Un unico argomento in ingresso ed in uscita per ogni invocazione
• Semantica e controllo concorrenza  mutua esclusione garantita nell'ambito
di un programma:
• una sola invocazione per volta
• Semantica e affidabilità
• Uso di protocollo UDP
• Semantica at-least-once
• Vengono fatte un numero a default di ritrasmissioni dopo un intervallo di
time-out (in genere 4 secondi)
• Non si prevede alcuna concorrenza a default nell'ambito dello stesso
programma server
• Possibilità di deadlock ==> se un server in RPC richiede, a sua volta, un
servizio al programma chiamante
2003-2004
Reti di Calcolatori
9
IlSun
modello
Client/Server
RPC
Naming
Messaggio RPC deve contenere per la identificazione globale
• numero di programma
• numero di versione
• numero di procedura
• Numeri di programma (32 bit)
• 0 - 1FFFFFFFh predefinito Sun
• Applicazioned'interesse comune
• 20000000h - 3FFFFFFFh definibile dall'utente
• Applicazioni debug dei nuovi servizi
• 40000000h - 5FFFFFFFh riservato alle applicazioni
• Per generare dinamicamente numeri di programma
• Altri gruppi riservati per estensioni
• notare: 32 bit per il numero di programma ma ci sono solo 16 bit di porte 
Aggancio DINAMICO gestito direttamente da RPC
• Autenticazione
• sicurezza ==> identificazione del client presso il server e viceversa
• sia in chiamata sia in risposta
2003-2004
Reti di Calcolatori
10
IlSun
modello
Client/Server
RPC
Controllo degli Accessi
• Null authentication
• UNIX authentication: modalità UNIX
struct auth_unix {
unsigned int stamp;
char machine[255];
unsigned int uid;
unsigned int gid;
unsigned int gids[16];
};
La struttura del controllore è Null authentication  Problemi
- identificazione troppo legata a UNIX
- non universalità dell'identificazione legata a UID e GID
- mancanza di un controllore passato al partner
• Data Encryption Standard authentication
- client come stringa di caratteri netname
- identificazione unica del cliente
- controllore tempo del sistema client cifrato
2003-2004
Reti di Calcolatori
11
IlSun
modello
Client/Server
RPC
Servizi Standard
Routine di libreria
RPC
Descrizione
rnusers()
Fornisce il numero di utenti di un nodo
rusers()
Fornisce informazioni sugli utenti di un nodo
havedisk()
Determina se un nodo ha un'unità disco
rstat()
Ottiene dati sulle prestazioni verso un nodo
rwall()
Invia al nodo un messaggio
getmaster()
Ottiene il nome del nodo master per NIS
getrpcport()
Ottiene informazioni riguardo agli indirizzi TCP legati ai
servizi RPC
yppasswd()
Aggiorna la parola d'accesso in NIS
Esempi di Numeri di programma noti
portmap
100000 (port mapper)
rstat 100002 (demone rstad)
rusers 100002 (demone rusersd)
nfs
100003 (demone nfsd)
2003-2004
Reti di Calcolatori
12
IlSun
modello
Client/Server
RPC
Il Port mapper
• Per gestire il mapping delle applicazioni sulle porte è necessario usufruire di
un servizio standard che si occupa di questa allocazione dinamica
• Lavora sulla porta 111 e si occupa del dispatching delle porte
Nodo chiamante
Gestore trasporto
Nodo re moto
prog,vers,
prot
porta
Port mapper
prog, ve rs, prot
Nume ro di porta
Porta 111
Programma 1
Porta A
Programma 2
Porta B
2003-2004
Reti di Calcolatori
13
IlSun
modello
Client/Server
RPC
Il Port mapper
• Il port mapper abilita due gestori di trasporto propri  uno per UDP ed uno
per TCP con due socket legate allo stesso numero di porta (111)
• Il port mapper gestisce la tabella identifica il numero di porta associato ad un
qualsiasi programma  allocazione dinamica dei servizi sui nodi
• Il port mapper registra i servizi sul nodo e offre procedure per ottenere
informazioni; gestisce le seguenti operazioni:
• Inserimento di un servizio
• Eliminazione di un servizio
• Corrispondenza associazione astratta e porta
• Intera lista di corrispondenza
• Supporto all'esecuzione remota
• port mapper utilizza a default solo il trasporto UDP (perché i servizi sono
molto brevi)
• Questi servizi possono essere invocati sia da locale sia da nodi (e clienti)
remoti
2003-2004
Reti di Calcolatori
14
IlSun
modello
Client/Server
RPC
Gestione del servizio: Il gestore del trasporto
Nodo CLIENT
Nodo SERVER
porta
prog, ve rs, prot
Nume ro di porta
Porta A
Cliente2
Cliente1
Port mapper
porta 111
Gestore trasporto
Gestore trasporto
Programma 1
Porta A
Porta A
Dispatching
Servizi
Gestore trasporto
Gestore trasporto
Porta B
Porta B
Programma 2
2003-2004
Reti di Calcolatori
15
IlSun
modello
Client/Server
RPC
Un esempio di Broadcast: getTime()
Server
Client
servizio GETTIME
Broadcast per il
servizio GETTIME del
programma TIME
nella sua versione 1
Server
servizio SETTIME
Server
servizio SETTIME
GETTIME
Server
servizio GETTIME
2003-2004
Reti di Calcolatori
16
IlSun
modello
Client/Server
RPC
Un esempio di Broadcast: getTime()
Port mapper del
server
Client
servizio RPC5S
..........
clnt_broadcast(RPC5,RPC5V,RPC5S,....,eres);
........
Port mapper del
server
servizio RPC5S
bool_t eres(res,remote_addr)
.........
Port mapper del
Server
server
Port mapper del
server
servizio RPC6S
GETTIME
servizio RPC5S
2003-2004
Reti di Calcolatori
17
IlSun
modello
Client/Server
RPC
La gestione dei parametri
• I paramteri delle funzioni devono essere gestiti in automatico dalle stub  è necessario
definire degli strumenti descrittivi affinché le stub vengano generate in modo corretto
• Linguaggio dichiarativo di specifica dei dati e della interazione per RPC due
sottoinsiemi di definizioni
1. definizioni di tipi di dati
• definizioni XDR per generare le definizioni in C e le relative funzioni per la
conversione in XDR
2. definizioni delle specifiche di protocollo RPC
• definizioni di programmi RPC per il protocollo RPC (identificazione del
servizio e parametri di chiamata)
Esempio:
/* definizioni XDR */
const MAXNAMELEN=256; const MAXSTRLEN=255;
struct r_arg {
string filename<MAXNAMELEN>; int start; int length;};
struct w_arg {
string filename <MAXNAMELEN>; opaque block<>; int start;};
struct r_res { int errno; int reads; opaque block<>;};
struct w_res { int errno; int writes;};
/* definizione di programma RPC */
program ESEMPIO {
version ESEMPIOV {
int
PING(int)=1; r_res READ(r_arg)=2; w_res WRITE(w_arg)=3;}=1; }=0x20000020;
2003-2004
Reti di Calcolatori
18
IlSun
modello
Client/Server
RPC
Definizione XDR
• XDR descrive solo tipi da tradurre in C  nessuna ridondanza della codifica
• Dichiarazioni di tipi atomici del linguaggio C con aggiunte
• bool
• due valori: TRUE e FALSE  tradotto nel tipo bool_t
• string con due utilizzi
• con specifica del numero massimo di caratteri <fra angle-brackets>
• lunghezza arbitraria con <angle-brackets vuoti>
string nome<30>;
string cognome<>;
tradotto in
tradotto in
char *nome;
char *cognome;
• Diverse funzioni XDR generate dal compilatore per gestire la conversione (xdr_string())
• opaque una sequenza di bytes senza un tipo di appartenenza (con o senza la
massima lunghezza)
opaque buffer<512>;
tradotto da RPCGEN in
struct
{u_int buffer_len;
char *buffer_val;
} buffer;
opaque file<>;
tradotto da RPCGEN in
struct
{u_int file_len;
char *file_val;
} file;
2003-2004
Reti di Calcolatori
19
IlSun
modello
Client/Server
RPC
Definizione XDR
• Dichiarazioni di tipi semplici  Analoga alla dichiarazione in linguaggio C
• simple-declaration: type-ident variable-ident
colortype color; tradotto da RPCGEN in colortype color;
• Dichiarazione di vettori a lunghezza fissa
• fixed-array-declaration: type-ident variable-ident "[" value "]"
colortype palette[8]; tradotto da RPCGEN in colortype palette[8];
• Dichiarazione vettori a lunghezza variabile
• variable-array-declaration: type-ident variable-ident "<" value ">
• è possibile specificare la lunghezza massima del vettore oppure lasciare la
lunghezza arbitraria
int heights <12>;
tradotto da RPCGEN in
struct{u_int heights_len;
int *heights_val;}widths;
• Ci sono inoltre:
• Dichiarazione di tipi puntatori come supporto offerto al trasferimento di strutture
recursive
• Definizione di tipi struttura
• Definizione di tipi unione
• Definizione di tipi enumerazione
• Definizione di tipi costante
• Definizione di tipi non standard
2003-2004
Reti di Calcolatori
20
IlSun
modello
Client/Server
RPC
Definizione Programmi RPC
• specifiche di protocollo RPC
• identificatore unico del servizio offerto
• modalità d'accesso alla procedura mediante i parametri di chiamata e di risposta
program-definition:
"program" program-ident "{“ version-list "}" "=" value
version-list:
version ";“ version ";" version-list
version:
"version" version-ident "{“ procedure-list "}" "=" value
procedure-list:
procedure ";"
procedure ";" procedure-list
procedure:
type-ident procedure-ident
"(" type-ident ")" "=" value
• il compilatore, genera le due procedure stub
Definizione di programma RPC
Definizione di protocollo RPC in C
program TIMEPROG {
version TIMEVERS {
usigned int TIMEGET(void) = 1;
void TIMESET(unsigned int) = 2;
} = 1;
#define TIMEPROG ((u_long) 44)
#define TIMEVERS ((u_long) 1)
#define TIMEGET ((u_long) 1)
#define TIMESET ((u_long) 2)
} = 44;
2003-2004
Reti di Calcolatori
21
Il modello Client/Server
Sun RPC vs Java RMI
• La infrastruttura Java consente di ottenere riferimenti ad oggetti remoti e richiedere
operazioni ad oggetti che non sono residenti localmente
• Il fatto di avere Java e le classi rende necessario integrare il concetto di classi e di
riferimenti remoti
• Un oggetto Java può riferire oggetti remoti solo se questi hanno predefinito una
interfaccia Remota
• Dalla parte cliente, un proxy capace di portare le richieste dall'altra parte
• Dalla parte server, uno stub che passa la richiesta al remoteObject
• Se si passa un oggetto che possiede una InterfacciaRemota, si passa un riferimento e si
creano skeleton e stub
• La generazione degli skeleton e stub può avvenire automaticamente
• Uso normale: richiesta ad un gestore di nomi
• Sistema di Binding:
• un Registry per ogni nodo che registra le possibilità di servizio locale e che
risponde alle richieste remote
• Trasporto:
• uso di unica connessione TCP tra nodi per trasportare richieste e operazioni
• efficienza, sicurezza???;
2003-2004
Reti di Calcolatori
22
Scarica

Reti V parte