• Non ci sono risultati.

Funzionalit`a di un protocollo

Nel documento Tecnologie di rete e Internet (pagine 12-17)

Una definizione molto generica di protocollo potrebbe essere la seguente:

un protocollo definisce la struttura dei dati scambiati, e le modalit`a con cui questi vengono scambiati.

La definizione tuttavia nasconde un fatto fondamentale: un protocollo interagisce con altri protocolli, offrendo a questi funzionalit`a complesse, ed utilizzando funzionalit`a offerte da altri protocolli.

La struttura che si viene a creare `e abituale nella tecnologia informatica:

una gerarchia di strati, a livelli di astrazione crescenti, in cui ciascuno strato utilizza le funzionalit`a offerte dallo strato sottostante, per realizzare nuove funzionalit`a che offre allo strato superiore.

La differenza sostanziale che distingue la tecnologia delle reti dall’infor-matica convenzionale sta nel fatto che l’oggetto di interesse `e la comunica-zione, piuttosto che la elaborazione dei dati. Quindi, in ciascuno strato il compito del protocollo sar`a quello di controllare la comunicazione entro una molteplicit`a di agenti attivi. In analogia, nell’informatica convenzionale un

Applicazione

Figura 1.1Rappresentazione a strati per un protocollo di trasferimento di file

programma coordina azioni semplici (assegnamenti, istruzioni di controllo ecc.) per ottenere funzionalit`a complesse.

Ci`o che uno strato offre allo strato superiore `e una astrazione della co-municazione che avviene tra i diversi agenti di quello strato: sono quindi le caratteristiche della comunicazione che si arricchiscono, di strato in stra-to. L’oggetto dell’astrazione finir`a per essere sempre lo stesso: comunicazio-ne. Il complesso delle funzionalit`a offerte da uno strato viene anche detto interfaccia di comunicazione.

In figura 1.1 vediamo una descrizione a strati di un protocollo per il trasferimento di file.

Possiamo rappresentare una interfaccia di comunicazione concretizzando-la in un insieme di intestazioni di funzioni, un modulo header in C. Tra le fun-zioni offerte troveremo quasi invariabilmente una send ed una receive, che ad ogni strato troveranno connotazioni particolari, anche se tutte svolgeranno fondamentalmente lo stesso compito: comunicare.

La comunicazione avverr`a dunque sempre tra agenti appartenenti allo stesso strato, utilizzando un protocollo comune: si parla in questo caso di comunicazione peer-to-peer.

Il protocollo quindi svolge la funzione di un linguaggio comune a tutti gli agenti che realizzano una certa interfaccia di comunicazione. Questo linguaggio comprende, come si diceva all’inizio, tanto la struttura dei dati

payload header

PDU (Protocol Data Unit)

Figura 1.2Header e payload di una PDU

scambiati, quanto le modalit`a dello scambio.

Il dato scambiato viene genericamente denominato Protocol Data Unit (PDU). Con poche eccezioni, una PDU `e composta da (v. figura 1.2):

• uno header, che contiene informazioni che vengono controllate dal proto-collo, e

• un payload, che invece `e l’oggetto passivo della comunicazione.

Il contenuto dello header viene utilizzato dal protocollo per portare a ter-mine la comunicazione: ad esempio pu`o riportare l’indirizzo del mittente e del destinatario, pu`o mettere in relazione la PDU con altre PDU per riordinarle, pu`o contenere codici per la verifica del contenuto della PDU.

Al contrario, il contenuto del payload non viene utilizzato dal protocollo.

Pur essendo manipolato in vario modo (ad esempio pu`o essere tradotto in un’altra codifica, o frammentato), viene tuttavia restituito inalterato al suo arrivo a destinazione. Quindi `e l’oggetto della comunicazione, e compare co-me paraco-metro nelle funzioni che costituiscono l’interfaccia di comunicazione offerta dallo strato: tanto la send quanto la receive avranno un parametro che indicher`a la collocazione del payload nella memoria locale. Nel primo caso il protocollo costruir`a e spedir`a una PDU prelevando il payload dalla memoria, mentre nel secondo il payload verr`a estratto dalla PDU ricevuta e memorizzato nell’area indicata.

In genere si dice che il payload viene incapsulato nella PDU, come rap-presentato in figura 1.3.

Ogni strato ha proprie regole per la costruzione dello header e per la ma-nipolazione del payload: queste operazioni entrano a far parte del protocollo proprio di quello strato.

Header

IP Segmento

TCP

Ethernet Frame

Payload

Pacchetti

Figura 1.3La PDU di uno strato `e il payload per lo strato sottostante

Possiamo identificare altre funzioni che devono essere svolte da uno strato (v. figura 1.4), la cui realizzazione caratterizza il protocollo ([26] p.13).

Connessione e sconnessione Il modo in cui un agente inizia e termina la comunicazione.

Modalit`a di trasferimento dei dati L’orientamento della comunicazione, la sua temporizzazione ed altre propriet`a.

Gestione degli errori Gli errori possono interessare il contenuto della co-municazione, o l’ordinamento dei messaggi, o la temporizzazione. La loro gestione dipende dal tipo di interfaccia offerta.

Controllo del flusso Pu`o rendersi necessario, ad esempio, rallentare un mittente troppo veloce rispetto al ricevente.

Frammentazione/ricostruzione Serve ad adeguare la dimensione del pay-load offerto dall’interfaccia a quello reso disponibile dall’interfaccia utilizzata dal protocollo. Ad esempio, i payload provenienti dagli agenti che utilizzano l’interfaccia offerta da uno strato possono essere da questo ridotti in fram-menti di dimensioni adatte per essere payload per l’interfaccia offerta dallo strato sottostante; una volta a destinazione, i frammenti verranno riordinati

Funzioni realizzate dallo strato send

receive

send receive

Interfaccia offerta

Interfaccia utilizzata Connessione/sconnessione

Trasferimento dei dati Gestione degli errori Controllo del flusso

Multiplexing/demultiplexing Routing

Frammentazione/ricostruzione

Figura 1.4La struttura di uno strato e delle interfacce che lo interessano

e il payload originario ricostruito e consegnato agli agenti che utilizzano l’in-terfaccia. Pu`o tuttavia avvenire il contrario, nel caso in cui la dimensione della PDU dello strato sottostante sia superiore a quella offerta.

Multiplexing/Demultiplexing Consente di realizzare una interfaccia con-divisa da pi`u agenti dello strato superiore; ad esempio, i payload provenienti dagli agenti che utilizzano l’interfaccia vengono opportunamente convoglia-ti (mulconvoglia-tiplexed) verso altri agenconvoglia-ti che li smisteranno (demulconvoglia-tiplex) verso gli agenti che utilizzano l’interfaccia. Pu`o tuttavia accadere il contrario quando un agente abbia a disposizione interfacce distinte verso la rete.

Routing Poich´e ciascuno strato ha una propria topologia, si rende necessa-ria una funzionalit`a che trovi la strada (route) pi`u adatta tra le due entit`a.

Ad esempio, in un certo strato due agenti possono essere adiacenti, mentre nello strato sottostante la loro comunicazione pu`o dover attraversare altri agenti intermedi.

Quindi ciascuno strato si trova a dover gestire una miriade di problemi impegnativi. L’impostazione di una soluzione non pu`o essere frutto di

de-cisioni locali: `e necessario che esistano solide convenzioni, che garantiscano che le soluzioni studiate per un agente riescano a coordinarsi con le altre.

Nel documento Tecnologie di rete e Internet (pagine 12-17)