Passa al contenuto principale

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)

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

CaratteristicaDescrizione
Orientato alla connessioneDeve stabilire una connessione prima della comunicazione (handshake a tre vie)
Trasmissione affidabileMeccanismi di acknowledgment, ritrasmissione e sequenziamento
Flusso di byteTratta i dati come un flusso continuo di byte
Controllo di flussoMeccanismo a finestra scorrevole
Controllo della congestionePreviene la congestione della rete
Full-DuplexTrasmissione 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

CaratteristicaTCPUDP
ConnessioneOrientato alla connessioneSenza connessione
AffidabilitàAffidabileNon affidabile
OrdineGarantisce l'ordineNessuna garanzia
VelocitàPiù lentoVeloce
OverheadAlto (20-60 byte di intestazione)Basso (8 byte di intestazione)
Controllo di flussoNo
Controllo della congestioneNo
Casi d'usoHTTP, FTP, EmailDNS, 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.