Qu'est-ce que TCP (Transmission Control Protocol) ?
Protocole de la couche transport orienté connexion. Il établit une connexion par un three-way handshake et utilise des numéros de séquence, des accusés de réception (ACK) et la retransmission pour livrer les données dans l'ordre, sans trou ni doublon. Le contrôle de flux et le contrôle de congestion règlent la quantité envoyée. Il transporte notamment le trafic web en HTTP/1.1 et HTTP/2, le courrier électronique et SSH.
Nom japonais: TCP
« TCP (Transmission Control Protocol) » apparaît dans 21 questions d'entraînement réparties sur 3 thèmes, dont Bases des réseaux informatiques, Conception et exploitation des réseaux, Bases des technologies web.
Domaine: Bases des réseaux informatiques
Comment TCP garantit la livraison
TCP attribue à chaque octet envoyé un numéro courant, le numéro de séquence. Le récepteur renvoie un accusé de réception (ACK) qui signifie en substance : envoyez-moi ensuite les données à partir de ce numéro. Si aucun ACK n'arrive dans un délai fixé, l'émetteur renvoie les données (retransmission sur expiration du délai). S'il reçoit trois ACK portant le même numéro (ACK dupliqués), il retransmet sans attendre l'expiration du délai (retransmission rapide). Le récepteur remet dans l'ordre les données arrivées dans le désordre, élimine les doublons et détecte les données corrompues grâce à une somme de contrôle. Pour l'application, les données se présentent comme un flux continu d'octets, sans limites de messages.
En-tête et gestion de la connexion
Un en-tête TCP fait 20 octets sans options. Il contient les numéros de port source et destination, le numéro de séquence, le numéro d'accusé de réception, des drapeaux comme SYN, ACK, FIN et RST, la taille de fenêtre et une somme de contrôle. Une connexion est identifiée par quatre valeurs : les adresses IP et les numéros de port de la source et de la destination. Elle s'ouvre par un three-way handshake et se ferme quand chaque sens envoie un FIN. Si un segment est perdu, les données suivantes ne peuvent pas être remises à l'application même si elles sont arrivées (blocage en tête de ligne), ce qui est l'une des raisons pour lesquelles HTTP/3 utilise plutôt QUIC sur UDP.
Questions fréquentes
Quelle est la différence entre TCP et UDP ?
TCP établit une connexion et livre les données de façon fiable grâce aux accusés de réception, à la retransmission et au contrôle de l'ordre. UDP n'a ni établissement de connexion ni retransmission et se contente d'envoyer des datagrammes : son en-tête est donc plus petit et il ajoute moins de délai. TCP sert là où l'intégralité compte, comme le web et le transfert de fichiers ; UDP sert là où un faible délai importe plus qu'une perte occasionnelle, comme les appels vocaux, et pour les échanges courts comme les requêtes DNS.
Quand TCP retransmet-il ?
Il y a deux déclencheurs : aucun ACK n'arrive avant l'expiration du délai de retransmission, calculé à partir des RTT mesurés, ou trois ACK dupliqués portant le même numéro d'accusé de réception arrivent à la suite, ce qui déclenche la retransmission rapide. Si les retransmissions continuent d'échouer, le délai est doublé à chaque fois.
Pourquoi le débit de TCP est-il inférieur à la vitesse de la liaison ?
On ne peut envoyer au plus qu'une fenêtre de données par temps d'aller-retour : le débit baisse donc à mesure que l'interlocuteur s'éloigne ou que la fenêtre se réduit. Il baisse aussi quand des pertes de paquets amènent le contrôle de congestion à réduire la fenêtre, ou quand l'application réceptrice lit les données lentement.