Transmission Control Protocol
Da Wikipedia, l'enciclopedia libera.
Livello applicazioni | HTTP, HTTPS , SMTP, POP3, IMAP, FTP, SFTP, DNS SSH, IRC, SNMP, SIP, RTSP, Rsync, Telnet, DHCP, HSRP, BitTorrent, RTP, ... |
Livello di trasporto | TCP, UDP, SCTP, DCCP ... |
Livello di internetworking | IPv4, IPv6, ICMP, BGP, OSPF, RIP, IGRP, IGMP,IPsec... |
Livello di collegamento | Ethernet, WiFi, PPP, Token ring, ARP, ATM, FDDI, LLC, SLIP ... |
Livello fisico | Doppino, Fibra ottica, Cavo coassiale, Codifica Manchester, Codifica 4B/5B, cavi elettrici, WiFi ... |
Transmission Control Protocol (TCP) è uno dei principali protocolli della Suite di protocolli Internet. TCP è il protocollo di trasporto, definito nel RFC 793, 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 Università di Berkeley in 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.
[modifica] TCP header
L'header di un segmento TCP è così strutturato:
- Porta sorgente (Source port) [16 bit]
- Porta di destinazione (Destination port) [16 bit]
- Numero di sequenza (Sequence number) [32 bit], indica la posizione del primo byte di dati del segmento TCP all'interno del flusso completo; se il flag SYN è impostato, il valore del sequence number corrisponde all'Initial Sequence Number (ISN);
- Numero di acknowledgment (Acknowledgment number) [32 bit], contiene il valore del prossimo sequence number che la sorgente del segmento 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 impostati 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 impostato, indica che si tratta del primo segmento della connessione;
- FIN: se impostato, indica che si tratta dell'ultimo segmento della connessione;
- Finestra (Window) [16 bit], indica il numero di byte che il mittente è 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
[modifica] Instaurazione della connessione
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:
- A invia un segmento SYN a B, contenente il suo sequence number x;
- B invia un segmento SYN/ACK ad A, contenente il suo sequence number y e l'acknowledgment del sequence number x di A;
- A invia un segmento ACK a B con l'acknowledgement del sequence number y di B.
Avendo chiamate SYN poi insieme SYN + ACK e infine ACK se si cercano solo i segmenti di tipo ACK si ottengono tutte le nuove connessioni instaurate.
[modifica] Collegamenti esterni
- RFC 793 Transmission Control Protocol Specifications
![]() |
|||||||
---|---|---|---|---|---|---|---|
Progetto Informatica | Portale Informatica | BarCode | |||||
Categorie principali
|