Diapositiva 1 - PowerPoint PPT Presentation

About This Presentation
Title:

Diapositiva 1

Description:

Title: Diapositiva 1 Author: Fabio Tarantino Last modified by: Fabio Tarantino Created Date: 10/30/2003 8:13:58 AM Document presentation format: Presentazione su schermo – PowerPoint PPT presentation

Number of Views:46
Avg rating:3.0/5.0
Slides: 23
Provided by: FabioTa
Category:

less

Transcript and Presenter's Notes

Title: Diapositiva 1


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
  • efficienza, sicurezza???
Write a Comment
User Comments (0)
About PowerShow.com