Il TCP (Transmission Control Protocol) inizia con un processo chiamato handshake TCP. Questo handshake inizializza e negozia i parametri tra due dispositivi (tipicamente un client e un server) prima che inizi la trasmissione dei dati. L’handshake TCP prevede tre passaggi: SYN, SYN-ACK e ACK. Innanzitutto, il client invia un pacchetto SYN (sincronizzazione) al server per avviare una richiesta di connessione. Il server risponde con un pacchetto SYN-ACK (sincronizzazione-riconoscimento), indicando che ha ricevuto il SYN ed è disposto a stabilire una connessione. Infine, il client invia un pacchetto ACK (riconoscimento) al server, confermando la ricezione del SYN-ACK. Una volta completata questa stretta di mano, entrambe le parti hanno concordato i numeri di sequenza iniziali, le dimensioni della finestra e altri parametri necessari per una trasmissione affidabile dei dati.
Il TCP è formato incapsulando i dati in segmenti per la trasmissione attraverso una rete. Quando un’applicazione invia dati, TCP li suddivide in unità più piccole note come segmenti. Ogni segmento include un’intestazione TCP contenente informazioni di controllo quali numeri di sequenza, numeri di riconoscimento, dimensioni della finestra e checksum per il rilevamento degli errori. Questi segmenti vengono quindi passati al livello IP per l’instradamento e la consegna attraverso la rete. Alla ricezione, il TCP sul lato ricevente riassembla i segmenti nel flusso di dati originale, garantendo una consegna affidabile e ordinata dei dati anche se i pacchetti arrivano fuori ordine o vengono persi.
I tre passaggi fondamentali del TCP sono:
- Stabilimento della connessione: implica il processo di handshake TCP descritto in precedenza, in cui un client e un server si scambiano pacchetti SYN, SYN-ACK e ACK per stabilire una connessione affidabile prima che inizi la trasmissione dei dati.
- Trasferimento dati: una volta stabilita una connessione, TCP gestisce la trasmissione dei dati in segmenti. I segmenti di dati vengono inviati dal mittente al destinatario e TCP garantisce che arrivino nell’ordine corretto e senza errori utilizzando numeri di sequenza per l’ordinamento e riconoscimenti per l’affidabilità.
- Terminazione della connessione: una volta completato il trasferimento dei dati, TCP avvia un processo di terminazione della connessione per chiudere normalmente la connessione. Ciò comporta una stretta di mano in cui entrambe le parti si scambiano pacchetti FIN (finish) per chiudere la connessione in modo coordinato. Una volta che entrambe le parti riconoscono i pacchetti FIN, la connessione viene completamente chiusa e le risorse allocate alla connessione vengono rilasciate.
TCP funziona stabilendo un canale di comunicazione orientato alla connessione tra due host su una rete. Garantisce la consegna affidabile dei dati attraverso meccanismi quali numeri di sequenza, riconoscimenti e controllo del flusso. Quando un mittente trasmette dati, TCP li suddivide in segmenti, aggiunge intestazioni con informazioni di controllo e le invia al destinatario. Il destinatario conferma la ricezione di ciascun segmento e richiede la ritrasmissione di eventuali segmenti persi o danneggiati. TCP gestisce inoltre il controllo del flusso per evitare di sovraccaricare il ricevitore di dati, regolando le velocità di trasmissione in base alle condizioni della rete. Questa combinazione di funzionalità consente a TCP di fornire un trasferimento dati privo di errori, ordinato e affidabile su diverse reti, rendendolo adatto per applicazioni che richiedono consegna garantita e controllo preciso sulla trasmissione dei dati.