1 La comunicazioneSun RPC Il modello Client/Server
Possibilità di invocare una procedura non locale ? operazione che interessa un nodo remoto e ne richiede un servizio
RPC Remote Procedure Call
2 Sun RPCProprietà e Requisiti Il modello Client/Server
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)
3 Sun RPCProprietà e Requisiti Il modello Client/Server
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
4 Sun RPCSemantica di Interazione Il modello Client/Server
A fronte di possibilità di guasto, il cliente può controllare o meno il servizio
maybe
at least once (SUN RPC)
at most once
exactly once
Per il parallelismo e la sincronizzazione possibile
operazioni per il servitore
sequenziali (SUN RPC)
paralleli
operazioni per il cliente
sincrone (SUN RPC)
asincrone
5 Sun RPCImplementazione Il modello Client/Server
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)
6 Sun RPCImplementazione ONC Il modello Client/Server
Il meccanismo usa una tecnica nota come wrapping uso una chiamata callrpc() ? il programmatore sa che sta facendo una rpc ? non cè trasparenza
7 Sun RPCNetwork Computing Architecture (NCA) Il modello Client/Server
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
8 Sun RPCIn Unix Il modello Client/Server
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
9 Sun RPC Il modello Client/Server
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 gt se un server in RPC richiede, a sua volta, un servizio al programma chiamante
10 Sun RPCNaming Il modello Client/Server
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 gt identificazione del client presso il server e viceversa
11 Sun RPCControllo degli Accessi Il modello Client/Server
Null authentication
UNIX authentication modalità UNIX
struct auth_unix
unsigned int stamp
char machine255
unsigned int uid
unsigned int gid
unsigned int gids16
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
12 Sun RPCServizi Standard Il modello Client/Server 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 (demo ne rstad) rusers 100002 (demone rusersd) nfs 100003 (demone nfsd) 13 Sun RPCIl Port mapper Il modello Client/Server
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
14 Sun RPCIl Port mapper Il modello Client/Server
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
15 Sun RPCGestione del servizio Il gestore del trasporto Il modello Client/Server 16 Sun RPCUn esempio di Broadcast getTime() Il modello Client/Server 17 Sun RPCUn esempio di Broadcast getTime() Il modello Client/Server 18 Sun RPCLa gestione dei parametri Il modello Client/Server
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 MAXNAMELEN256 const MAXSTRLEN255
struct r_arg
string filenameltMAXNAMELENgt int start int length
struct w_arg
string filename ltMAXNAMELENgt opaque blockltgt int start
struct r_res int errno int reads opaque blockltgt
struct w_res int errno int writes
19 Sun RPCDefinizione XDR Il modello Client/Server
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 ltfra angle-bracketsgt
lunghezza arbitraria con ltangle-brackets vuotigt
string nomelt30gt tradotto in char nome
string cognomeltgt tradotto in 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 bufferlt512gt tradotto da RPCGEN in
struct u_int buffer_len
char buffer_val
buffer
20 Sun RPCDefinizione XDR Il modello Client/Server
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 palette8 tradotto da RPCGEN in colortype palette8
Dichiarazione vettori a lunghezza variabile
variable-array-declaration type-ident variable-ident "lt" value "gt
è possibile specificare la lunghezza massima del vettore oppure lasciare la lunghezza arbitraria
int heights lt12gt tradotto da RPCGEN in
structu_int heights_len
int heights_valwidths
Ci sono inoltre
Dichiarazione di tipi puntatori come supporto offerto al trasferimento di strutture recursive
Definizione di tipi struttura
Definizione di tipi unione
21 Sun RPCDefinizione Programmi RPC Il modello Client/Server
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
22 Sun RPC vs Java RMI Il modello Client/Server
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
PowerShow.com is a leading presentation sharing website. It has millions of presentations already uploaded and available with 1,000s more being uploaded by its users every day. Whatever your area of interest, here you’ll be able to find and view presentations you’ll love and possibly download. And, best of all, it is completely free and easy to use.
You might even have a presentation you’d like to share with others. If so, just upload it to PowerShow.com. We’ll convert it to an HTML5 slideshow that includes all the media types you’ve already added: audio, video, music, pictures, animations and transition effects. Then you can share it with your target audience as well as PowerShow.com’s millions of monthly visitors. And, again, it’s all free.
About the Developers
PowerShow.com is brought to you by CrystalGraphics, the award-winning developer and market-leading publisher of rich-media enhancement products for presentations. Our product offerings include millions of PowerPoint templates, diagrams, animated 3D characters and more.