Sobes.tech
Junior

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 :

  1. 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.
  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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