RFC 793 - TRANSMISSION CONTROL PROTOCOL
PROGRAMMA INTERNET DARPA
SPECIFICA DEL PROTOCOLLO
Pubblicato: Settembre 1981
Stato: Standard Internet (STD 7)
Autore: Jon Postel (Information Sciences Institute, USC)
Organizzazione: Programma Internet DARPA
Stato di questo Memo
Questo RFC specifica uno standard per la comunità Internet DARPA. Gli host sull'Internet DARPA sono tenuti ad adottare e implementare questo standard.
Sommario (Abstract)
Il Transmission Control Protocol (TCP) è destinato all'uso come protocollo host-to-host altamente affidabile tra host in reti di comunicazione informatica a commutazione di pacchetto e in sistemi interconnessi di tali reti.
Questo documento descrive le funzioni da eseguire dal Transmission Control Protocol, il programma che lo implementa e la sua interfaccia con i programmi o gli utenti che richiedono i suoi servizi. TCP fornisce un servizio di flusso di byte affidabile e orientato alla connessione.
Sommario (Table of Contents)
Prefazione (Preface)
1. Introduzione (Introduction)
- 1. Introduction (Introduzione)
- 1.1 Motivazione
- 1.2 Ambito
- 1.3 Informazioni su questo documento
- 1.4 Interfacce
- 1.5 Funzionamento
2. Filosofia
- 2. Philosophy (Filosofia)
- 2.1 Elementi del sistema internet
- 2.2 Modello di funzionamento
- 2.3 L'ambiente host
- 2.4 Interfacce
- 2.5 Relazione con altri protocolli
- 2.6 Comunicazione affidabile
- 2.7 Stabilimento e chiusura della connessione
- 2.8 Comunicazione dati
- 2.9 Precedenza e sicurezza
- 2.10 Principio di robustezza
3. Specifica funzionale
- 3. Functional Specification (Specifica funzionale)
- 3.1 Formato dell'intestazione
- 3.2 Terminologia
- 3.3 Numeri di sequenza
- 3.4 Stabilire una connessione
- 3.5 Chiudere una connessione
- 3.6 Precedenza e sicurezza
- 3.7 Comunicazione dati
- 3.8 Interfacce
- 3.9 Elaborazione eventi
Appendici
Riferimento rapido ai concetti fondamentali
Formato dell'intestazione TCP
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgment Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data | |U|A|P|R|S|F| |
| Offset| Reserved |R|C|S|S|Y|I| Window |
| | |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | Urgent Pointer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Caratteristiche chiave di TCP
| Caratteristica | Descrizione |
|---|---|
| Orientato alla connessione | Deve stabilire una connessione prima della comunicazione (handshake a tre vie) |
| Trasmissione affidabile | Meccanismi di acknowledgment, ritrasmissione e sequenziamento |
| Flusso di byte | Tratta i dati come un flusso continuo di byte |
| Controllo di flusso | Meccanismo a finestra scorrevole |
| Controllo della congestione | Previene la congestione della rete |
| Full-Duplex | Trasmissione bidirezionale simultanea |
Stati della connessione
CLOSED → LISTEN → SYN-RECEIVED → ESTABLISHED → FIN-WAIT-1 → ...
Stati principali:
- CLOSED: Chiuso
- LISTEN: In ascolto
- SYN-SENT: SYN inviato
- SYN-RECEIVED: SYN ricevuto
- ESTABLISHED: Connessione stabilita
- FIN-WAIT-1: Prima attesa FIN
- FIN-WAIT-2: Seconda attesa FIN
- CLOSE-WAIT: Attesa di chiusura
- CLOSING: Chiusura
- LAST-ACK: Ultimo acknowledgment
- TIME-WAIT: Attesa temporale
Handshake a tre vie
Client Server
| |
| SYN (seq=x) |
|------------------------------->|
| |
| SYN-ACK (seq=y, ack=x+1) |
|<-------------------------------|
| |
| ACK (ack=y+1) |
|------------------------------->|
| |
| ESTABLISHED |
Confronto TCP vs UDP
| Caratteristica | TCP | UDP |
|---|---|---|
| Connessione | Orientato alla connessione | Senza connessione |
| Affidabilità | Affidabile | Non affidabile |
| Ordine | Garantisce l'ordine | Nessuna garanzia |
| Velocità | Più lento | Veloce |
| Overhead | Alto (20-60 byte di intestazione) | Basso (8 byte di intestazione) |
| Controllo di flusso | Sì | No |
| Controllo della congestione | Sì | No |
| Casi d'uso | HTTP, FTP, Email | DNS, Streaming video, Gaming |
Risorse correlate
- Testo ufficiale: RFC 793 (TXT)
- Pagina ufficiale: RFC 793 DataTracker
- Standard: STD 7
- Protocolli correlati:
- RFC 791 (IP) - Livello rete
- RFC 792 (ICMP) - Messaggi di controllo
- RFC 768 (UDP) - Protocollo di confronto
- RFC 2581 (Controllo della congestione TCP)
- RFC 5681 (Aggiornamento del controllo della congestione TCP)
- RFC 7323 (Estensioni TCP)
Nota importante: TCP è uno dei protocolli fondamentali del livello di trasporto Internet. Combinato con il protocollo IP, forma la base dello stack di protocolli TCP/IP. Fornisce un servizio di flusso di byte affidabile e orientato alla connessione ed è la base per molti protocolli applicativi come HTTP, FTP e SMTP.