Anteprima
Vedrai una selezione di 11 pagine su 50
Reti di calcolatori   Pag. 1 Reti di calcolatori   Pag. 2
Anteprima di 11 pagg. su 50.
Scarica il documento per vederlo tutto.
Reti di calcolatori   Pag. 6
Anteprima di 11 pagg. su 50.
Scarica il documento per vederlo tutto.
Reti di calcolatori   Pag. 11
Anteprima di 11 pagg. su 50.
Scarica il documento per vederlo tutto.
Reti di calcolatori   Pag. 16
Anteprima di 11 pagg. su 50.
Scarica il documento per vederlo tutto.
Reti di calcolatori   Pag. 21
Anteprima di 11 pagg. su 50.
Scarica il documento per vederlo tutto.
Reti di calcolatori   Pag. 26
Anteprima di 11 pagg. su 50.
Scarica il documento per vederlo tutto.
Reti di calcolatori   Pag. 31
Anteprima di 11 pagg. su 50.
Scarica il documento per vederlo tutto.
Reti di calcolatori   Pag. 36
Anteprima di 11 pagg. su 50.
Scarica il documento per vederlo tutto.
Reti di calcolatori   Pag. 41
Anteprima di 11 pagg. su 50.
Scarica il documento per vederlo tutto.
Reti di calcolatori   Pag. 46
1 su 50
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Come si realizza RPC

Importante!!! Utilizzo di procedure stub (è una procedura che finge di essere la procedura lato Server ma lato Client):

  • il Client invoca uno stub che si incarica del trattamento dei parametri e richiede al supporto il trasporto del messaggio di richiesta;
  • il messaggio di richiesta arriva a un Server stub, che estrae dal messaggio i parametri, invoca la procedura e al completamento del servizio rimanda il risultato al Client.

Un Client ha una procedura stub locale per ogni procedura remota che può chiamare;

Un Server ha uno stub locale per ogni procedura che può essere chiamata da un Client remoto.

I compiti degli stub sono:

  • marshalling dei parametri, cioè impacchettare i parametri in un messaggio;
  • estrazione parametri dai messaggi (unmarshalling);
  • trasformare la rappresentazione dei dati;
  • accedere alle primitive di comunicazione per spedire e ricevere messaggi.

Gli stub sono generati

automaticamente (mediante compilatori speciali) a partire dalla specifica interfaccia. Definizione interfaccia (prima cosa da fare) → INTERFACE DEFINITION LANGUAGE (IDL) Definizione di linguaggi astratti per la specifica del servizio. IDL sono linguaggi usati per specificare le operazioni dell'interfaccia e i loro parametri. Una specifica IDL viene elaborata da un compilatore che produce sia il Client sia il Server stub. I compilatori per IDL possono produrre stub in differenti linguaggi. Fase di Binding (collegamento client – server) In RPC il binding avviene in due fasi: 1) NAMING: Risolto associando staticamente un identificatore (ad es. un numero) all'interfaccia del servizio. 2) ADDRESSING: In questa fase si cercano gli eventuali servitori pronti per il servizio. Possibilità: - Client può chiedere direttamente indirizzo al server usando broadcast/multicast; - Client può interrogare un name server, che registra tutti i servitori.

Il genere si usa lo stesso binding per molte richieste e chiamate allo stesso server. Il name server consente il collegamento tra il Client e il Server. Le operazioni di ricerca, registrazioni, aggiornamento ed eliminazione sono:

  • lookup;
  • register;
  • unregister.

Diverse possibili architetture:

  • Centralizzata: Un server centrale che mantiene la lista di tutti i servizi all'interno della rete;
  • Decentralizzata: Un server in ciascun host che mantiene una lista di servizi locali. Il chiamante deve sapere in anticipo quale host fornisce il servizio desiderato (Sun/ON RPC);
  • Ibrida: Un server centrale, possibilmente replicato, che mantiene una lista di fornitori di servizi (un Server che mantiene altri Server).

IL PORT MAPPER

Naming in Sun/ONC RPC:

In Sun/ONC RPC il naming è completamente decentralizzato, e viene realizzato tramite il port mapper. Portmap è un servizio in ascolto sulla porta 111 che fornisce le funzionalità di lookup e registrazione servizi.

Ogni servizio è univocamente identificato da un program ID. I servizi possono avere versioni diverse. Malfunzionamenti e RPC Un'importante differenza tra RPC e chiamate di procedure locali riguarda i possibili malfunzionamenti: - macchina Client in crash durante la chiamata; - messaggi persi o duplicati; - la macchina Server può andare in crash. In caso di Server stateful, in seguito al crash il Server potrebbe perdere lo stato dell'iterazione con il Client; - Orfani, sono così dette le procedure di servizio correntemente in esecuzione, ma richieste da Client andati in crash. A seconda delle misure che vengono prese per fronteggiare questi guasti, si ottengono differenti semantiche di chiamata di procedura remota: - semantica may-be: nel caso in cui non si prendano misure per la tolleranza ai guasti, si ottiene una semantica di chiamata di procedura remota di tipo may-be. Se la chiamata fallisce il Client non può desumere cosa

è successo. Se la chiamata ha successo potrebbe essere stata eseguita anche più diuna volta;

  • semantica at-least-once: nel caso in cui il Client stub decida di riprovare a spedire il messaggio di richiesta un numero N di volte. Se la chiamata ha successo, la procedura è stata eseguita una o più volte (richieste e messaggi duplicati), da cui at-least-once (almeno una volta). Se la chiamata fallisce può essere un malfunzionamento di rete o un server crash. Questa procedura va bene per operazioni idempotenti cioè che possono essere eseguite molte volte con lo stesso effetto sullo stato di interazione;
  • semantica at-most-once: il Server potrebbe tenere traccia degli identificatori delle richieste e scartare richieste duplicate. Inoltre potrebbe memorizzare il messaggio di risposta e ritrasmetterlo fino al ricevimento di un acknowledge da parte del Client. Permette di ottenere un operazione eseguita al massimo una volta cioè: non eseguita,

Eseguita parzialmente o una sola volta;

  • semantica exactly-once (difficilissima da realizzare): Il Server potrebbe implementare le procedure come transazioni atomiche, in modo che le procedure siano eseguite del tutto o per niente. Viene eseguita o una sola volta o non eseguita. E' il caso ideale ma di solito si usa at-most-once.

Malfunzionamenti Client e ORFANI:

In caso di crash del client, si deve trattare il caso degli orfani, con diverse strategie:

  • sterminio: ogni orfano viene distrutto;
  • terminazione a tempo: ogni calcolo ha una scadenza, oltre il quale viene abortito;
  • reincarnazione: il tempo viene diviso in epoche; tutto quello che è relativo a un'epoca precedente è considerato obsoleto.

Eterogeneità e conversione rappresentazione dati

Il Client e il Server possono eseguire su architetture diverse che usano differenti rappresentazioni dei dati: caratteri, lunghezza, ordine etc..

Per comunicare tra nodi eterogenei due

soluzioni:
  • ogni nodo converte i dati per il destinatario (prestazioni);
  • concordare un formato comune di rappresentazione dei dati (flessibilità).
Standard più usato → XDR (vedi capitoli precedenti) XDR dunque si colloca nel livello 6 di presentazione della pila OSI.
gRPC (Google Remote Procedure Call) RPC sviluppato da Google. gRPC utilizza i Google Protocol Buffer (Protobuf) per la definizione dell'interfaccia del servizio e dei messaggi scambiati tra stub (chiamato anche client) e server. gRPC è stato pensato per essere cross-language, lasciando totale libertà di implementazione al programmatore. Il server e il Client possono essere implementati in un linguaggio di programmazione differenti.
SERVIZI INTERNET Crescita di host collegati, domini e siti registrati su internet.
  • Forte crescita dei social.
  • Canali di accesso: sempre di più verso dispositivi mobili e telefoni cellulari.
I SERVIZI DEL LIVELLO APPLICAZIONE

tipi fondamentali: terminale remoto (accesso a nodi remoti);

  • file transfer (trasferimento file tra nodi diversi);
  • comandi remoti (applicazioni): esecuzione di comandi remoti e servizi remoti.

Le proprietà fondamentali del livello sono:

  • trasparenza;
  • modelli Client/Server e le sue evoluzioni;
  • standardizzazione.

È molto importante distinguere tra:

  • Programmi applicativi (Client che si interfacciano con l'utente);
  • Protocolli applicativi o di trasferimento (protocolli che regolano lo scambio dei messaggi tra Client e Server);
  • Protocolli di specifica del formato dei dati (definiscono formato messaggi);
  • Protocolli di comunicazione (protocolli di trasporto, TCP o UDP).

TELNET E RLOGIN

Telnet e rlogin permettono il collegamento (sessione login) con macchina remota. Il terminale locale diventa un terminale del sistema remoto.

  • Telnet è uno standard in TCP/IP, rlogin è invece per i sistemi Unix (remote)

login);

  • I programmi applicativi telnet e rlogin hanno interfaccia verso utente da linea di comando;
  • Il protocollo di comunicazione è TCP/IP;
  • il loro uso però è caldamente sconsigliato per motivi di sicurezza (meglio ssh).

TELNET

Protocollo applicativo di Telnet

  • Client stabilisce una connessione TCP con Server (porta 23);
  • quindi accetta caratteri da utente e li manda al Server e contemporaneamente accetta caratteri del server e li visualizza sul terminale utente;
  • server accetta la richiesta di connessione da Client e inoltra dati da connessione TCP al sistema locale.

Caratteristiche principali:

  • gestione eterogeneità tramite interfaccia standard (NVT);
  • Client e Server negoziano le opzioni del collegamento (ASCII a 7 bit o 8 bit);
  • comunicazione simmetrica.

Network Virtual Terminal (NVT)

Nella rete Internet c'è una mancanza di standardizzazione dei terminali. Definizione di un terminale virtuale, detto

NVT (Network Virtual Terminal), cioè una Soluzione: standardizzazione di un terminale, con un formato definito e standardizzato di rappresentazione e codifica dei dati, dei caratteri di controllo, delle funzioni. Ogni stazione di lavoro effettua conversione da terminale locale a terminale virtuale e viceversa. NVT presenta caratteri di controllo per gestire la comunicazione, che vengono inviati insieme ai dati normali. Possibilità di negoziare la connessione, sia alla inizializzazione sia successivamente per selezionare le opzioni del protocollo di comunicazione (half-duplex o full-duplex, tipo di terminale, codifica 7-8 bit, ...). Protocollo per negoziare è simmetrico.

RLOGIN

Servizio di login remoto → login su un'altra macchina UNIX (non è un protocollo sicuro).

Caratteristiche rlogin:

  • conosce l'ambiente di partenza e quello di arrivo;
  • utilizzo di una sola connessione TCP/IP;
  • esporta l'ambiente del client verso il Server;
flow control: il client rlogin tratta localmente i caratteri di controllo (es: ctrl-S e ctrl-Q fermano e fanripartire l'output del terminale, senza attendere l'invio del carattere al server). TRASFERIMENTO FILE (FTP)

FTP (file transfer protocol) stabilisce un collegamento con una macchina remota per il trasferimento di file.

Ci sono però problemi di sicurezza poiché la trasmissione delle password è in chiaro. Possibile uso di FTPover SSL o di alternative sicure come scp (trasferimento di file su canale ssh).

  • Vari programmi applicativi, da linea di comando o con interfaccia grafica;
  • Protocollo di comunicazione TCP;
  • Protocollo ftp con comandi come STOR local-file o RETR remote-file;
  • utilizza varie interfacce;
  • ftp usa due connessioni per ogni collegamento: una di controllo e una di dati.
Dettagli
Publisher
A.A. 2020-2021
50 pagine
SSD Ingegneria industriale e dell'informazione ING-INF/01 Elettronica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher totto99 di informazioni apprese con la frequenza delle lezioni di Reti di calcolatori e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Ferrara o del prof Tortonesi Mauro.