Le TCP (Transmission Control Protocol) est un protocole de transport qui permet à deux applications d’échanger des données de manière fiable, ordonnée et contrôlée sur un réseau IP. Il est notamment utilisé par le Web, le courrier électronique, les transferts de fichiers et SSH.
TCP a été développé en 1973 par Vint Cerf et Bob Kahn, puis adopté pour Arpanet en 1983 en remplacement de NCP. Il est documenté dans la RFC 9293 de l’IETF et opère au-dessus d’IP dans le modèle TCP/IP, correspondant à la couche transport du modèle OSI.

TCP et IP

TCP fonctionne avec IP, mais ils ont des rôles différents :

ProtocoleRôle
IPAdresse les machines et achemine les paquets entre réseaux
TCPAssure que les données arrivent complètes, dans le bon ordre et sans doublon
HTTP/HTTPSTransporte les pages et API Web au-dessus de TCP
SMTP / IMAPTransporte les e-mails au-dessus de TCP

On parle souvent de TCP/IP, mais IP ne garantit pas qu’un paquet arrive, qu’il arrive une seule fois, ni qu’il arrive dans le bon ordre. TCP ajoute ces garanties entre les deux extrémités de la communication.

Une connexion fiable

Avant d’envoyer des données, le client et le serveur établissent une session TCP avec le three-way handshake :

Client                         Serveur
| ---- SYN -----------------> |
| <--- SYN + ACK ------------ |
| ---- ACK -----------------> |
| connexion établie |
  • SYN : le client demande l’ouverture d’une connexion.
  • SYN + ACK : le serveur accepte et confirme.
  • ACK : le client confirme à son tour.

Cette étape permet aux deux côtés de préparer la session et de synchroniser leurs numéros de séquence. Une session TCP suit donc trois grandes phases : établissement de la connexion, transfert, puis fermeture.

Segments, numéros et accusés

L’application ne transmet pas nécessairement un gros fichier d’un seul bloc. TCP le découpe en segments, les numérote, puis les place dans des paquets IP pour l’acheminement.

Le récepteur envoie des accusés de réception (ACK) pour indiquer les données correctement reçues. Si un segment est perdu, absent ou corrompu, l’émetteur peut le retransmettre. TCP reconstitue également les données dans leur ordre initial si des paquets sont arrivés dans le désordre.

Données : A B C D E
Segments envoyés : 1 2 3 4 5

Réception possible sur le réseau : 1 2 4 5
TCP détecte l'absence du segment 3

Retransmission du segment 3

Données remises à l'application : A B C D E

Les ports TCP

Une adresse IP désigne une machine ou une interface réseau ; le port TCP désigne l’application ou le service sur cette machine. Les deux forment une extrémité de communication, souvent appelée socket.

Exemples courants :

  • Port 80 : HTTP.
  • Port 443 : HTTPS.
  • Port 22 : SSH.
  • Port 25, 465 ou 587 : SMTP.
  • Port 143 ou 993 : IMAP.
  • Port 21 : FTP.

Quand votre navigateur ouvre https://www.rossard.eu, il établit généralement une connexion TCP vers le port 443 du serveur, puis HTTPS chiffre les échanges au-dessus de cette connexion.

Contrôle de flux

TCP évite aussi qu’un émetteur rapide submerge un récepteur plus lent. Le récepteur annonce une fenêtre de réception (receive window) : c’est la quantité de données qu’il est capable d’accepter avant d’envoyer de nouveaux accusés.

L’émetteur limite donc la quantité de données « en vol ». Ce mécanisme aide à préserver les ressources du terminal : mémoire tampon, puissance de traitement et application qui reçoit les données.

Contrôle de congestion

TCP cherche également à ne pas surcharger le réseau. S’il observe des pertes, des délais d’acquittement élevés ou des signaux de congestion, il réduit temporairement son rythme d’envoi ; lorsque le réseau redevient disponible, il augmente progressivement la quantité de données transmise.

C’est pourquoi un téléchargement TCP peut ralentir lorsqu’une liaison est encombrée. Le protocole privilégie la stabilité globale du réseau et la livraison correcte des données.

Fermeture de session

Une fermeture TCP normale s’effectue généralement par échange de messages FIN et ACK. Chaque côté indique qu’il n’enverra plus de données, tout en pouvant encore recevoir celles qui étaient déjà en transit.

Client                         Serveur
| ---- FIN -----------------> |
| <--- ACK ------------------ |
| <--- FIN ------------------ |
| ---- ACK -----------------> |
| connexion fermée |

Un paquet RST (reset) peut au contraire interrompre une session de manière immédiate, par exemple lorsqu’aucun service n’écoute sur le port demandé ou qu’une connexion devient invalide.

TCP face à UDP

AspectTCPUDP
Connexion préalableOuiNon
FiabilitéOui : ACK, ordre, retransmissionNon garantie au niveau du protocole
Contrôle de fluxOuiNon natif
Contrôle de congestionOuiNon natif
Délai et surchargePlus élevésPlus faibles
Usages fréquentsWeb, e-mail, fichiers, SSHDNS, voix, jeux, vidéo temps réel

TCP convient lorsqu’il est plus important de recevoir toutes les données correctement que de gagner quelques millisecondes. UDP est souvent préféré lorsqu’une donnée arrivée trop tard ne sert plus à rien, comme dans la voix en direct ou un jeu en ligne.

À retenir

TCP transforme un réseau IP, qui livre des paquets « au mieux », en un canal fiable entre deux applications. Il établit une connexion, numérote les segments, confirme les réceptions, retransmet les données manquantes, préserve leur ordre et régule le débit selon le récepteur et l’état du réseau.

Recommended Posts