Comment fonctionne le protocole TCP?
sobes.tech IA
Réponse de l'IA
TCP (Protocole de Contrôle de Transmission) est un protocole de couche transport qui assure une livraison fiable et orientée connexion des données.
Aspects clés du fonctionnement :
-
Poignée de main en trois étapes (Three-way Handshake):
- Le client envoie un paquet SYN (Synchronize) avec un numéro de séquence initial (ISN).
- Le serveur reçoit le SYN, envoie un SYN-ACK (Synchronize-Acknowledge) contenant son ISN et une confirmation (ACK) de l'ISN du client (
numéro d'accusé de réception = ISN du client + 1). - Le client reçoit le SYN-ACK, envoie un ACK confirmant l'ISN du serveur (
numéro d'accusé de réception = ISN du serveur + 1). - La connexion est établie, et les données peuvent être transmises.
-
Transmission de flux de données : Les données sont transmises comme un flux continu d'octets, pas comme des paquets séparés. TCP segmente le flux de données en segments pour la transmission.
-
Numérotation de séquence (Numéros de Séquence) : Chaque octet dans le flux de données a un numéro unique. Les segments contiennent le numéro du premier octet qu'ils contiennent (numéro de séquence) et le numéro d'accusé de réception (acknowledgement number), qui indique le prochain octet que l'expéditeur attend de recevoir avec ACK.
-
Accusés de réception (Acknowledgements - ACK): Le récepteur envoie un ACK pour informer l'expéditeur des données reçues avec succès. Si l'expéditeur ne reçoit pas d'ACK dans un délai déterminé (timeout), il retransmet le segment.
-
Contrôle d'erreur (Error Control): Des sommes de contrôle (checksums) sont utilisées pour vérifier l'intégrité des données. Si un segment est corrompu, il est rejeté, et l'expéditeur attend un timeout ou un ACK en double pour retransmettre.
-
Contrôle de flux (Flow Control): Mécanisme qui empêche la surcharge du tampon du récepteur. Le récepteur informe l'expéditeur de la taille de sa fenêtre de réception dans les paquets ACK. L'expéditeur ne peut envoyer que autant de données que la fenêtre indique.
-
Contrôle de congestion (Congestion Control): Mécanisme pour déterminer la capacité du réseau et réguler dynamiquement la vitesse de transmission pour éviter la congestion. Inclut des algorithmes tels que slow start, congestion avoidance, fast retransmit et fast recovery.
-
Fermeture de la connexion: Utilise généralement une poignée de main en quatre étapes :
- Une partie envoie un paquet FIN (Finish).
- L'autre partie envoie un ACK pour le FIN.
- L'autre partie envoie son propre FIN (après avoir terminé d'envoyer ses données restantes).
- La première partie envoie un ACK pour ce FIN.
- La connexion est fermée.
Structure du segment TCP :
| Champ | Taille (octets) | Description |
|---|---|---|
| Port source | 2 | Port de l'expéditeur |
| Port de destination | 2 | Port du destinataire |
| Numéro de séquence | 4 | Numéro du premier octet de données dans le segment |
| Numéro d'accusé de réception | 4 | Numéro du prochain octet attendu |
| Décalage de données / Longueur de l'en-tête | 4 bits | Longueur de l'en-tête TCP |
| Réservé | 6 bits | Réservé |
| Flags (Bits de contrôle) | 6 bits | URG, ACK, PSH, RST, SYN, FIN |
| Taille de la fenêtre | 2 | Taille de la fenêtre du récepteur |
| Somme de contrôle | 2 | Somme de contrôle de l'en-tête et des données |
| Pointeur urgent | 2 | Indique les données urgentes (si URG est défini) |
| Options | Variable | Options supplémentaires |
| Rembourrage | Variable | Pour l'alignement de l'en-tête |
| Données | Variable | Données transmises |
// Flags (Bits de contrôle):
// URG: Champ de pointeur urgent significatif
// ACK: Champ d'accusé de réception significatif
// PSH: Fonction push
// RST: Réinitialiser la connexion
// SYN: Synchroniser les numéros de séquence
// FIN: Plus de données de l'expéditeur