Cos'e' un RPC? RPC (Remote Procedure Call) e' un particolare servizio
introdotto dalla Sun Microsystem (almeno per quanto riguarda quella parte
che impiega i protocolli UDP e TCP a livello di trasporto e che viene
indicato sotto il termine ONC acronimo di Open Network Computing).
Effettivamente questa non e' l'unica implementazione (ce ne sono 3), tuttavia
discutero' basandomi su questa.
Vediamo innanzitutto a cosa serve. In poche parole abbiamo due sistemi: il
nostro locale e uno remoto.
Attraverso un client per un determinato rpc, il nostro computer
contatta quello remoto per eseguire una chiamata di procedura: cio' come
viene spiegato in breve sull'ottimo libro di Richard W. Stevens sullo
sviluppo del software di networking, equivale a permettere al nostro sistema
di eseguire del codice su quello remoto
Vediamo come
funziona una connessione su servizio rpc.
1) Il client (C) chiama una procedura locale sul suo sistema nota come
stub del client. Questa procedura servira' per standardizzare i pacchetti
per il server (S): la loro costruzione prendera' il nome di marshaling.
2) Tali messaggi vengono passati a S utilizzando il protocollo UDP o TCP a
seconda del servizio rpc.
3) S avvia una sua procedura di stub che permette di disassemblare tali
pacchetti e di ricostruirli in un formato piu' congeniale al server e
alla sua architettura.
4) La stub del server esegue la procedura richiesta dal client con i
parametri passati dal client.
5) Il server restituisce il risultato di tale chiamata alla sua stub.
6) La stub del server manda il risultato della procedura al client
con il protocollo di trasporto utilizzato.
7) La stub del client riceve il pacchetto/i contenenti i risultati della
procedura visti come se fossero stati eseguiti sul client.