RFC 793 - TRANSMISSION CONTROL PROTOCOL
PROGRAMME INTERNET DARPA
SPÉCIFICATION DU PROTOCOLE
Publié : Septembre 1981
Statut : Standard Internet (STD 7)
Auteur : Jon Postel (Information Sciences Institute, USC)
Organisation : Programme Internet DARPA
Statut de ce mémo (Status of this Memo)
Ce RFC spécifie une norme pour la communauté Internet DARPA. Les hôtes sur l'Internet DARPA sont censés adopter et implémenter cette norme.
Résumé (Abstract)
Le Transmission Control Protocol (TCP) est destiné à être utilisé comme un protocole hôte-à-hôte hautement fiable entre des hôtes dans des réseaux de communication informatique à commutation de paquets, et dans des systèmes interconnectés de tels réseaux.
Ce document décrit les fonctions à exécuter par le Transmission Control Protocol, le programme qui l'implémente, et son interface avec les programmes ou les utilisateurs qui nécessitent ses services. TCP fournit un service de flux d'octets fiable et orienté connexion.
Table des matières (Table of Contents)
Préface
1. Introduction
- 1. Introduction
- 1.1 Motivation
- 1.2 Portée
- 1.3 À propos de ce document
- 1.4 Interfaces
- 1.5 Fonctionnement
2. Philosophie
- 2. Philosophy (Philosophie)
- 2.1 Éléments du système internet
- 2.2 Modèle de fonctionnement
- 2.3 L'environnement hôte
- 2.4 Interfaces
- 2.5 Relation avec d'autres protocoles
- 2.6 Communication fiable
- 2.7 Établissement et fermeture de connexion
- 2.8 Communication de données
- 2.9 Priorité et sécurité
- 2.10 Principe de robustesse
3. Spécification fonctionnelle
- 3. Functional Specification (Spécification fonctionnelle)
- 3.1 Format d'en-tête
- 3.2 Terminologie
- 3.3 Numéros de séquence
- 3.4 Établir une connexion
- 3.5 Fermer une connexion
- 3.6 Priorité et sécurité
- 3.7 Communication de données
- 3.8 Interfaces
- 3.9 Traitement des événements
Annexes
Référence rapide des concepts fondamentaux
Format d'en-tête 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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Caractéristiques clés de TCP
| Caractéristique | Description |
|---|---|
| Orienté connexion | Doit établir une connexion avant la communication (poignée de main à trois voies) |
| Transmission fiable | Mécanismes d'accusé de réception, de retransmission et de séquençage |
| Flux d'octets | Traite les données comme un flux continu d'octets |
| Contrôle de flux | Mécanisme de fenêtre glissante |
| Contrôle de congestion | Prévient la congestion du réseau |
| Full-Duplex | Transmission bidirectionnelle simultanée |
États de connexion
CLOSED → LISTEN → SYN-RECEIVED → ESTABLISHED → FIN-WAIT-1 → ...
États principaux :
- CLOSED : Fermé
- LISTEN : En écoute
- SYN-SENT : SYN envoyé
- SYN-RECEIVED : SYN reçu
- ESTABLISHED : Connexion établie
- FIN-WAIT-1 : Première attente FIN
- FIN-WAIT-2 : Deuxième attente FIN
- CLOSE-WAIT : Attente de fermeture
- CLOSING : Fermeture en cours
- LAST-ACK : Dernier accusé de réception
- TIME-WAIT : Attente temporelle
Poignée de main à trois voies
Client Serveur
| |
| SYN (seq=x) |
|------------------------------->|
| |
| SYN-ACK (seq=y, ack=x+1) |
|<-------------------------------|
| |
| ACK (ack=y+1) |
|------------------------------->|
| |
| ESTABLISHED |
Comparaison TCP vs UDP
| Caractéristique | TCP | UDP |
|---|---|---|
| Connexion | Orienté connexion | Sans connexion |
| Fiabilité | Fiable | Non fiable |
| Ordre | Garantit l'ordre | Pas de garantie |
| Vitesse | Plus lent | Rapide |
| Surcharge | Élevée (20-60 octets d'en-tête) | Faible (8 octets d'en-tête) |
| Contrôle de flux | Oui | Non |
| Contrôle de congestion | Oui | Non |
| Cas d'usage | HTTP, FTP, Email | DNS, Streaming vidéo, Jeux |
Ressources associées
- Texte officiel : RFC 793 (TXT)
- Page officielle : RFC 793 DataTracker
- Standard : STD 7
- Protocoles associés :
- RFC 791 (IP) - Couche réseau
- RFC 792 (ICMP) - Messages de contrôle
- RFC 768 (UDP) - Protocole de comparaison
- RFC 2581 (Contrôle de congestion TCP)
- RFC 5681 (Mise à jour du contrôle de congestion TCP)
- RFC 7323 (Extensions TCP)
Note importante : TCP est l'un des protocoles fondamentaux de la couche transport Internet. Combiné avec le protocole IP, il forme la base de la pile de protocoles TCP/IP. Il fournit un service de flux d'octets fiable et orienté connexion et constitue la base de nombreux protocoles d'application tels que HTTP, FTP et SMTP.