TCP en détail : fiabilité, numérotation et retransmission
Le protocole TCP (Transmission Control Protocol) est au cœur d’Internet.
Il est responsable d’une chose essentielle : garantir que les données arrivent correctement, même sur un réseau imparfait.
Pour y parvenir, TCP met en place plusieurs mécanismes intelligents : établissement de connexion, numérotation des données, accusés de réception, retransmissions et adaptation au réseau.
Pourquoi TCP est nécessaire
Le réseau IP est volontairement simple et imparfait :
- les paquets peuvent être perdus
- ils peuvent arriver en désordre
- ils peuvent être dupliqués
TCP existe pour corriger ces défauts, sans surcharger le réseau.
Le 3-way handshake : établir la connexion
Avant d’échanger des données, TCP établit une connexion logique entre les deux machines.
Cette phase est appelée 3-way handshake.
Le processus se déroule en trois étapes :
- Le client envoie un message SYN pour demander une connexion
- Le serveur répond par SYN-ACK pour accepter
- Le client confirme avec ACK
À la fin de cette étape, les deux machines :
- savent que l’autre est joignable
- sont prêtes à échanger des données
- ont synchronisé leurs numéros de séquence
La numérotation des données (Sequence Numbers)
TCP ne numérote pas les paquets, mais les octets de données.
Chaque octet transmis possède un numéro de séquence.
Grâce à cette numérotation :
- le destinataire peut remettre les données dans le bon ordre
- les données manquantes sont détectées
- les doublons sont ignorés
Même si les paquets arrivent dans le désordre, TCP peut reconstruire le message original.
Les ACK : accusés de réception
À chaque fois que des données sont reçues, le destinataire envoie un ACK (Acknowledgment).
Cet ACK indique :
- le dernier octet reçu correctement
- ce que le récepteur attend ensuite
Les ACK permettent à l’émetteur de savoir :
- quelles données sont arrivées
- quelles données doivent être retransmises
Sans ACK, TCP ne pourrait pas garantir la fiabilité.
La retransmission des données perdues
Si l’émetteur ne reçoit pas d’ACK dans un certain délai, il suppose que les données ont été perdues.
Il déclenche alors une retransmission.
Ce mécanisme permet :
- de corriger les pertes
- de garantir l’intégrité des données
- de rendre la communication fiable, même sur un réseau instable
Le contrôle de flux : ne pas saturer le récepteur
TCP s’assure que le récepteur ne soit pas submergé de données.
C’est le rôle du contrôle de flux.
Le récepteur indique :
- combien de données il peut recevoir
- via une valeur appelée window size
L’émetteur adapte son débit pour :
- respecter cette limite
- éviter la surcharge mémoire
Le contrôle de congestion : protéger le réseau
En plus du récepteur, TCP surveille l’état du réseau lui-même.
Si des pertes apparaissent, TCP considère qu’il y a de la congestion.
Il réduit alors volontairement :
- la vitesse d’envoi
- la taille de la fenêtre d’envoi
Puis il augmente progressivement le débit si tout se passe bien.
Ce mécanisme protège :
- les routeurs
- les liens réseau
- l’ensemble d’Internet
Pourquoi TCP peut ralentir
TCP peut sembler lent dans certaines situations, mais ce n’est pas un défaut.
C’est un choix de conception.
TCP ralentit :
- quand il détecte des pertes
- quand le réseau est congestionné
- quand la latence est élevée
Il préfère :
- envoyer moins vite
- plutôt que provoquer une saturation globale
C’est ce comportement qui rend Internet stable et résilient.
TCP et les applications modernes
Les applications modernes doivent composer avec TCP :
- HTTP/HTTPS
- transferts de fichiers
Pour certains usages très sensibles à la latence, d’autres protocoles (comme QUIC) ont été conçus, mais TCP reste indispensable.
Résumé à retenir
- TCP établit une connexion avant d’envoyer des données
- Les données sont numérotées
- Les ACK confirment la réception
- Les pertes déclenchent des retransmissions
- Le contrôle de flux protège le récepteur
- Le contrôle de congestion protège le réseau
- TCP privilégie la fiabilité à la vitesse
En bref
TCP garantit une communication fiable en numérotant, contrôlant et retransmettant les données selon l’état du réseau et du récepteur.