
Come abbiamo visto in un precedente articolo, l’architettura TCP/IP è stratificata.
Man mano che si procede dallo strato applicazione a quello fisico, ogni livello provvede ad aggiungere la propria intestazione alla PDU (Protocol Data Unit) del livello precedente (processo chiamato imbustamento o incapsulamento).
Ogni livello ripete questa operazione di incapsulamento dei dati, aggiungendo la propria intestazione, e passando la nuova PDU allo strato inferiore. L’intestazione che viene aggiunta ad ogni passaggio, contiene le informazioni di controllo del protocollo di quel livello.
Nella figura seguente una rappresentazione grafica dei passaggi.
Numeri di porta
Ad ogni protocollo dello stack TCP/IP è assegnato un numero a 16 bit detto numero di porta. Ad esempio, a HTTP è assegnato il numero 80, a FTP il numero 21, al DNS il numero 53, ecc.
Comunicazione tra applicazioni sulla rete
Quando una applicazione deve inviare dati sulla rete verso un’altra applicazione in esecuzione su un altro host, deve comunicare:
- i dati da trasmettere;
- l’indirizzo IP del host sorgente;
- l’indirizzo IP del host destinazione;
- il numero di porta dell’applicazione che trasmette;
- il numero di porta dell’applicazione destinazione.
Gli indirizzi IP di sorgente e destinazione, sono inseriti nella intestazione del pacchetto IP. I numeri di porta sorgente e destinazione sono invece inseriti nella intestazione della PDU TCP (o UDP).
Anche i protocolli TCP e UDP sono identificati da un codice numerico: 6 per TCP e 17 per UDP. Questi identificativi sono inseriti nella intestazione del pacchetto IP in modo che sia noto con quale protocollo è stata costruita la PDU.
Il Socket e la Connessione
L’insieme di [indirizzo IP: protocollo : porta] che identifica una applicazione e l’host che la esegue, viene detto Socket.
In TCP, la coppia di socket sorgente e destinazione identifica una connessione. Una connessione è dunque identificata da 5 parametri: protocollo, indirizzo IP mittente, porta mittente, indirizzo IP destinazione, porta destinazione.
La comunicazione tra i protocolli
Come detto, ogni volta che i dati passano da un livello all’altro, essi subiscono un incapsulamento. I dati provenienti dal livello superiore vengono inseriti in una busta virtuale.
Come si vede dalla figura precedente, lo strato di trasporto predispone la T-PDU secondo il protocollo opportuno (TCP o UDP, essi creano PDU diversi). Esso prende i dati da trasferire dallo strato applicazione e vi aggiunge una intestazione che contiene, tra l’altro, il numero della porta sorgente (che individua l’applicazione che sta trasferendo i dati) e il numero della porta destinazione (che individua l’applicazione che riceverà i dati).
Il segmento TCP così formato (o il datagramma come viene chiamato nel caso UDP) viene passato al livello Internet sottostante. Qui, il protocollo IP imbusta tale segmento e vi aggiunge la propria intestazione. Questa comprenderà, tra l’altro, l’indirizzo IP dell’host sorgente, l’indirizzo IP dell’host destinazione e il codice numerico che identifica il protocollo di trasporto utilizzato (TCP o UDP). Questo codice serve per comprendere da quale protocollo è stato creato il T-PDU presente nella busta.
Il pacchetto IP così preparato viene passato al livello Data Link, lo strato 2, che provvede (ad esempio attraverso la scheda di rete di un PC in una LAN) a imbustarlo aggiungendo la sua intestazione, seguendo un protocollo di livello 2 (HDLC, PPP, Ethernet, ecc). In questa intestazione sarà presente l’informazione relativa agli indirizzi MAC destinazione e sorgente e, talvolta, un codice relativo al protocollo di livello 3 che ha generato il pacchetto (nel nostro esempio, IP).
Infine, la nuova busta verrà passata al livello fisico (strato 1) per la trasmissione sulla linea. Dal lato destinatario si procederà adesso nel verso contrario. La busta verrà aperta dapprima dal livello Data Link che procederà a estrarre solo le informazioni che gli competono per poi passare la busta via via ai livelli superiori fino all’applicazione destinataria.