Il Protocollo TCP/IP

Il Numero di Sequenza

Finora abbiamo considerato che il pacchetto di invio e di ricezione siano capaci di contenere tutta l'informazione destinata ai due host. Questo tipo di situazione però è piuttosto rara, in quanto l'informazione contenuta nell'area Dati del pacchetto, potrebbe essere molto maggiore, in termini di bytes, rispetto a quello che il pacchetto può effettivamente contenere. L'area Dati del pacchetto infatti è limitata. L'informazione in questo caso viene ditribuita in "più pacchetti", i quali però, dovranno arrivare all'host di destinazione nello stesso ordine con cui sono stati inviati affinché l'informazione non risulti modificata. Supponiamo di inviare un SMS ad un amica del tipo "CIAO, SONO ANNA TI RICORDI DI ME?" e che una volta arrivata al Server venga ricostruita come "ANNA, TI CIAO DI ME SONO RICORDI?". In questo caso l'informazione ricostruita non ha lo stesso significato di quella di partenza.

Essendo la rete, un crocevia infinito di pacchetti che scorrono da una parte all'altra del pianeta, risulta quasi impossibile permettere che un pacchetto contenente la prima parte dell'informazione arrivi a destinazione prima degli altri. Perciò, il TCP mette a disposizione un cosiddetto N° di Sequenza: esso prevede infatti che all'atto della distribuzione dei dell'informazione in pacchetti, i pacchetti vengono contrassegnati. Una volta arrivati a destinazione, l'host sarà capace così di mettere in ordine, attraverso il controllo del N° di sequenza e di riscontro, i pacchetti riuscendo a "ricostruire correttamente" l'informazione.

Uno dei problemi legati a questo tipo di meccanismo è l'eventuale perdita o la dispersione dei pacchetti durante il percorso della rete. E' possibile che un determinato pacchetto, nel percorso delle reti, possa essere soggetto ad una perdita, causata da problemi di trasmissione. Ciò vuol dire che il pacchetto potrebbe non arrivare mai a destinazione. Supponiamo che quel pacchetto sia parte di una serie di pacchetti di sequenza, l'informazione potrebbe non essere mai ricostruita. 

Il protocollo TCP permette di superare questo problema proprio attraverso la connessione che il TCP tra host mittente e destinatario allo scopo di rendere la trasmissione sicura e affidabile. Infatti, per ogni pacchetto inviato e ricevuto esistono dei pacchetti speciali o definiti segnali di ACK (ACKNOWLEDGE) e NACK (NOT ACKNOWLEDGE), che mettono al corrente rispettivamente mittente e destinatario della situazione reciproca di invio e ricezione dei pacchetti. Il segnale di ACK traduce l'informazione "pacchetto ricevuto" mentre il segnale di NACK traduce l'informazione "pacchetto non ricevuto". 

Quando il mittente invia un pacchetto, e quest'ultimo arriva a destinazione, il destinatario risponde con un segnale di ACK. Quando però, il destinatario nel consultare i numeri di sequenza ritrova uno o più pacchetti mancanti, invia un segnale di NACK al mittente, il quale può provvedere all'intero rinvio dei pacchetti oppure al rinvio del solo pacchetto mancante, in base al direttive del protocollo stesso. Un esempio di tale procedura è mostrata in figura.