Transmission Control Protocol

protocollo di trasmissione dati su internet

Transmission Control Protocol (TCP) è il protocollo di trasporto su cui si appoggiano gran parte delle applicazioni Internet.

Il TCP è un protocollo corrispondente al livello 4 (trasporto) del modello di riferimento OSI, e di solito è usato in combinazione con il protocollo di livello 3 (rete) IP. La corrispondenza con il modello OSI non è perfetta, in quanto il TCP e l'IP nascono prima. La loro combinazione è indicata come TCP/IP ed è, alle volte, erroneamente considerata un unico protocollo.

Il TCP nacque nel 1970 come frutto del lavoro di un gruppo di ricerca del dipartimento di difesa statunitense. I suoi punti di forza sono l'alta affidabilità e robustezza. La sua popolarità si deve anche grazie ad una sua implementazione diffusa dalla Berkeley University of California sotto forma di sorgenti.

Le caratteristiche principali del TCP sono:

  • La creazione di una connessione (protocollo orientato alla connessione)
  • La gestione di connessioni punto-punto
  • La garanzia che i dati trasmessi giungano a destinazione in ordine e senza perdita di informazione (tramite il meccanismo di acknowlegment e ritrasmissione)
  • Attraverso il meccanismo della finestra scorrevole, offre funzionalità di controllo di flusso e controllo della congestione, vitali per il buon utilizzo della rete IP, che non offre alcuna garanzia in ordine alla consegna dei pacchetti, al ritardo, alla congestione.
  • Una funzione di multiplazione delle connessioni ottenuta attraverso il meccanismo delle porte.

TCP header

[[Image:tcp_header.png|righ bonicalzi the best TCP è in attesa di ricevere ed è utilizzato congiuntamente al flag ACK;

  • Data offset [4 bit], indica la lunghezza (in word da 32 bit) dell'header del segmento TCP;
  • 6 bit riservati (Reserved), non utilizzati e predisposti per sviluppi futuri del protocollo;
  • Bit di controllo (Control bits) [6 bit], possono essere settati ad 1 o 0 e indicano:
    • URG: il valore dell'urgent pointer è valido;
    • ACK: il valore dell'acknowledgment number è valido;
    • PSH: l'host che riceve il segmento TCP deve provvedere a trasferire i dati al Livello applicazioni il più velocemente possibile;
    • RST: reset della connessione;
    • SYN: se settato, indica che si tratta del primo segmento della connessione;
    • FIN: se settato, indica che si tratta dell'ultimo segmento della connessione;
  • Finestra (Windows) [16 bit], indica il numero di byte che il destinatario è in grado di accettare a partire dal byte indicato dall'acknowledgment number;
  • Checksum [16 bit], utilizzato per il controllo della validità del segmento;
  • Urgent pointer [16 bit], puntatore al sequence number di dati con priorità di trasferimento;
  • Opzioni (facoltative)
  • Padding, utilizzato per completare i bit non utilizzati dalle opzioni

Instaurazione della connessione

 
Three-way handshake

La procedura utilizzata per instaurare in modo affidabile una connessione TCP tra due host è chiamata three-way handshake (triplice stretta di mano), ad indicare la necessità di scambiare tre messaggi per garantire la corretta creazione della connessione. Supponiamo, per esemplificare, che l'host A (il client) intenda instaurare una comunicazione TCP con l'host B (il server); i passi indicati dalla tecnica three-way handshake sono:

  1. A invia un segmento SYN a B, contenente il suo sequence number x;
  2. B invia un segmento SYN/ACK ad A, contenente il suo sequence number y e l'acknowledgment del sequence number x di A;
  3. A invia un segmento ACK a B con l'acknowldedgment del sequence number y di B.

Collegamenti esterni

  • RFC 793 Transmission Control Protocol Specifications