Il Protocollo TCP/IP

Il Multiplexing e Demultiplexing

Ora che abbiamo inquadrato la natura del segmento TCP, possiamo comprendere il funzionamento del protocollo. Il livello di Trasporto, secondo il Modello OSI, riceve le informazioni dal livello Applicazione che utilizza a sua volta diversi protocolli, tra cui il più famoso è l'HTTP (Hyper Text Transfer Protocol). Il livello Applicazione è rappresentato principalmente da APIs (Application Programming Interfaces). Ogni utente per connettersi alla rete deve essere dotato di uno strumento attraverso il quale può accedere alla rete. Nel caso più comune, un'applicazione browser. Per questo motivo, nel seguito faremo riferimento, per vari motivi, a Google Chrome.

Quando un utente si connette ad una rete, attraverso un modem o router (Livello Fisico), acquisisce la possibilità di comunicare con elaboratori fisicamente lontani, ovvero altri hosts. Immaginiamo perciò il seguente scenario, ovvero, che abbiate aperto una finestra di Google Chrome  e che stiate per effettuare una ricerca su Google Search attraverso una scheda di Chrome, mentre su un'altra scheda, stiate scrivendo una importante mail all'interno del vostro dominio di posta elettronica.

Supponiamo anche che nel momento in cui digitiate la parola chiave della ricerca nella prima scheda, dopo aver premuto il tasto di Invio, il browser vi riporti i risultati della ricerca sulla seconda, scollegandovi, non solo, dalla propria casella di posta, ma eliminando definitivamente la scrittura della mail che era in corso. Uno scenario, di certo, non gradito!


Bene, uno degli aspetti più importanti del TCP è di sicuro quello che va sotto il nome di Multiplexing e Demultiplexing. Il Multiplexing e il Demultiplexing sono le due funzionalità del Protocollo TCP che permettono ad un pacchetto (in questo caso il tasto Invio della ricerca) di essere direzionato in maniera corretta, sia nel percorso di andata sia nel percorso di ritorno del Modello OSI. In altri termini, al pacchetto di richiesta inviato dal tasto di Invio, partito dalla scheda di ricerca deve corrispondere un pacchetto di risposta (contenente il risultato aspettato) inviato esattamente alla scheda di partenza (a meno che l'utente non decida volontariamente di aprire la ricerca su un'altra scheda attraverso le funzionalità messe a disposizione dal browser).

Ora, vi mostriamo come viene realizzato questo meccanismo. Gli elementi principali che lo realizzano sono quelle che vanno sotto il nome di Porte (o Porti). Una Porta, o Porto, TCP, è un codice identificativo associato ad una determinata connessione. In Chrome, ad esempio, ogni scheda stabilisce una connessione con un'identificativo univoco. Il protocollo TCP supporta circa 65.000 connessioni contemporanee (vi ricorda qualcosa questo numero?). 

Ogni host inoltre, all'interno della rete o sottorete in cui si trova, è identificato univocamente da un indirizzo IP. Allora, come riesce il TCP a realizzare il Multiplexing? I due pacchetti, di andata e ritorno, contengono al loro interno 4 informazioni importanti che rappresentano le "coordinate" dell'host:

(Indirizzo IP Origine, Indirizzo IP Destinazione, N° Porta di Origine, N° Porta di Destinazione)

Supponiamo infatti che il vostro router abbia indirizzo IP di Origine 194.153.127.3, il Server di Google Search abbia Indirizzo IP di Destinazione 193.230.1.8 e il pacchetto inviato parta dal Porto 345 (corrispondente alla scheda della vostra ricerca) destinato al Porto 123 di Destinazione (Porto del Server GSearch), allora il singolo pacchetto di invio sarà del tipo: 

P1 (194.153.127.3,  193.230.1.8, 345, 123)

mentre il pacchetto P2 di ricezione (o i pacchetti) avrà gli stessi valori, ma invertiti:

P2 (193.230.1.8, 194.153.127.3, 123, 345)

In questo modo il pacchetto di risposta arriverà proprio al porto di partenza da cui è stato inviato. Ad effettuare ed assicurarsi che questa operazione sia conseguita correttamente è il protocollo TCP.