Sobes.tech
Junior

Come funziona il protocollo TCP?

sobes.tech AI

Risposta dell'AI

TCP (Transmission Control Protocol) è un protocollo di livello di trasporto che garantisce una consegna affidabile e orientata alla connessione dei dati.

Aspetti chiave del funzionamento:

  1. Handshake a tre vie (Three-way Handshake):

    • Il client invia un pacchetto SYN (Synchronize) con un numero di sequenza iniziale (ISN).
    • Il server riceve il SYN, invia un SYN-ACK (Synchronize-Acknowledge) contenente il suo ISN e una conferma (ACK) dell'ISN del client (numero di riconoscimento = client ISN + 1).
    • Il client riceve il SYN-ACK, invia un ACK che conferma l'ISN del server (numero di riconoscimento = server ISN + 1).
    • La connessione è stabilita, e i dati possono essere trasmessi.
  2. Trasmissione di flusso di dati: I dati vengono trasmessi come un flusso continuo di byte, non come pacchetti separati. TCP segmenta il flusso di dati in segmenti per la trasmissione.

  3. Numerazione di sequenza (Sequence Numbers): Ogni byte nel flusso di dati ha un numero unico. I segmenti contengono il numero del primo byte che contengono (numero di sequenza) e il numero di riconoscimento (acknowledgement number), che indica il prossimo byte che il mittente si aspetta di ricevere.

  4. Riconoscimenti (Acknowledgements - ACK): Il destinatario invia un ACK per comunicare al mittente quali dati sono stati ricevuti con successo. Se il mittente non riceve un ACK entro un certo tempo (timeout), reinvia il segmento.

  5. Controllo degli errori (Error Control): Vengono utilizzate somme di controllo (checksums) per verificare l'integrità dei dati. Se un segmento è corrotto, viene scartato, e il mittente aspetta un timeout o un ACK duplicato per ritrasmettere.

  6. Controllo del flusso (Flow Control): Meccanismo che previene il sovraccarico del buffer del destinatario. Il destinatario informa il mittente della dimensione della sua finestra di ricezione nei pacchetti ACK. Il mittente può inviare solo quanti dati la finestra consente.

  7. Controllo della congestione (Congestion Control): Meccanismo per determinare la capacità della rete e regolare dinamicamente la velocità di trasmissione per evitare congestione. Include algoritmi come slow start, congestion avoidance, fast retransmit e fast recovery.

  8. Chiusura della connessione: Di solito utilizza un handshake a quattro vie:

    • Una parte invia un pacchetto FIN (Finish).
    • L'altra parte invia un ACK per il FIN.
    • L'altra parte invia il proprio FIN (dopo aver terminato di inviare i propri dati rimanenti).
    • La prima parte invia un ACK per questo FIN.
    • La connessione viene chiusa.

Struttura del segmento TCP:

Campo Dimensione (byte) Descrizione
Porta di origine 2 Porta del mittente
Porta di destinazione 2 Porta del destinatario
Numero di sequenza 4 Numero del primo byte nel segmento
Numero di riconoscimento 4 Numero del prossimo byte atteso
Offset dei dati / Lunghezza dell'intestazione 4 bit Lunghezza dell'intestazione TCP
Riservato 6 bit Riservato
Flags (Bit di controllo) 6 bit URG, ACK, PSH, RST, SYN, FIN
Dimensione della finestra 2 Dimensione della finestra del destinatario
Checksum 2 Somma di controllo dell'intestazione e dei dati
Puntatore urgente 2 Indica dati urgenti (se URG è impostato)
Opzioni Variabile Opzioni aggiuntive
Padding Variabile Per l'allineamento dell'intestazione
Dati Variabile Dati trasmessi
// Flags (Bit di controllo):
// URG: Campo del puntatore urgente significativo
// ACK: Campo di riconoscimento significativo
// PSH: Funzione push
// RST: Reset della connessione
// SYN: Sincronizza i numeri di sequenza
// FIN: Nessun altro dato dal mittente