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.

Les fenêtres fixent la quantité envoyée

L'émetteur peut envoyer jusqu'à une fenêtre de données avant de devoir attendre les ACK. S'adapter à l'espace libre de la mémoire tampon annoncé par le récepteur (la fenêtre de réception) relève du contrôle de flux ; faire croître et décroître la fenêtre de congestion de l'émetteur selon l'encombrement du réseau relève du contrôle de congestion. L'émetteur utilise la plus petite des deux. Comme on ne peut envoyer qu'une fenêtre de données par temps d'aller-retour (RTT), le débit vaut à peu près fenêtre ÷ RTT. Avec une fenêtre de 64 Ko et un RTT de 100 ms, par exemple, le plafond est d'environ 5 Mbit/s ; les liaisons rapides à longue distance s'appuient donc sur l'option window scale pour autoriser des fenêtres plus grandes.

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.

S'entraîner : questions sur TCP (Transmission Control Protocol)

Dans le modèle TCP/IP à 4 couches, à quelle couche appartiennent TCP et UDP ?

  1. ACouche application
  2. BCouche Internet
  3. CCouche transport
Afficher la réponse et l'explication

Réponse : C. Couche transport

Le modèle TCP/IP se décrit en 4 couches, de bas en haut : la couche liaison (couche d'accès réseau), la couche Internet, la couche transport et la couche application. TCP et UDP sont des protocoles de la couche transport ; ils utilisent les numéros de port pour distinguer à quelle application du terminal une communication est destinée. IP, dans la couche Internet, se charge d'acheminer les paquets d'un terminal à un autre. HTTP et DNS sont des protocoles de la couche application. Rapportée au modèle OSI, la couche transport correspond à la couche 4 et la couche Internet à la couche 3.

Dans le three-way handshake (établissement en trois temps) qui ouvre une connexion TCP, quel est l'ordre correct des paquets échangés ?

  1. ASYN → ACK → FIN
  2. BACK → SYN → SYN+ACK
  3. CSYN → SYN+ACK → ACK
Afficher la réponse et l'explication

Réponse : C. SYN → SYN+ACK → ACK

Dans le three-way handshake, le client demande d'abord une connexion avec un SYN et annonce le premier numéro des données qu'il enverra (son numéro de séquence initial). Le serveur répond par un SYN+ACK : il en accuse réception (ACK) et annonce en même temps son propre numéro de séquence initial. Enfin, le client renvoie un ACK, et les deux sens de communication sont prêts. Confirmer les numéros dans les deux sens en 3 échanges évite par exemple des connexions erronées dues à d'anciens paquets arrivés en retard. Par conséquent, TCP a besoin d'au moins un temps aller-retour (RTT) avant que les données puissent commencer à circuler. FIN sert à fermer une connexion.

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.

« TCP (Transmission Control Protocol) » dans les explications

Questions mentionnant « TCP (Transmission Control Protocol) » (21)

  1. Dans le modèle TCP/IP à 4 couches, à quelle couche appartiennent TCP et UDP ?
  2. Dans le three-way handshake (établissement en trois temps) qui ouvre une connexion TCP, quel est l'ordre correct des paquets échangés ?
  3. Un client établit une nouvelle connexion HTTPS (TLS 1.3 sur TCP) vers un serveur web dont le temps aller-retour (RTT) est de 100 ms. Quelle durée est la plus proche du temps nécessaire jusqu'au début de la réception de la réponse à la première requête ? La résolution DNS est déjà faite, et l'on néglige le temps de traitement du serveur et le temps de transfert des données.
  4. Dans le contrôle de flux de TCP, à quoi sert l'annonce par le récepteur de sa taille de fenêtre (fenêtre de réception) à l'émetteur ?
  5. Une connexion TCP a une fenêtre de réception fixe de 65 536 octets et un RTT de 10 ms. La bande passante de la liaison est largement suffisante et il n'y a aucune perte. Quelle valeur est la plus proche du débit maximal de cette connexion ?
  6. Quelle description de l'idée de base du contrôle de congestion de TCP est correcte ?
  7. Qu'est-ce qui amène un émetteur TCP à conclure qu'un segment a été perdu et à le retransmettre ?
  8. Sur un Ethernet à 1 Gbit/s, on envoie des données TCP en continu avec des paquets IP remplissant la MTU de 1500 octets. En comptant 20 octets pour l'en-tête IPv4, 20 octets pour l'en-tête TCP, 18 octets pour l'en-tête Ethernet et le FCS réunis, et 20 octets pour le préambule et l'intervalle entre trames réunis, quelle valeur est la plus proche du débit maximal des données de l'application ?
  9. 4 liaisons de 1 Gbit/s entre deux commutateurs sont regroupées en une seule liaison logique par agrégation de liens. Les trames sont réparties selon la méthode courante qui choisit la liaison pour chaque combinaison d'adresses source et destination et de numéros de port (chaque flux). Quelle valeur est la plus proche du débit maximal qu'une seule connexion TCP peut atteindre ?
  10. Un routeur qui effectue du NAPT (adresse externe 198.51.100.7) est configuré avec une redirection de port, réglage statique qui ne traduit que la destination : « transférer le trafic arrivant sur le port TCP externe 8080 vers le port 80 du serveur web interne 192.168.1.20 ». Lorsque l'hôte 203.0.113.9, sur Internet, se connecte depuis le port source 51000 au port 8080 de 198.51.100.7, quelles sont la destination et la source des paquets que reçoit le serveur web ?
  11. Une ACL qui examine les paquets entrants à partir du haut est appliquée à une interface d'un routeur. La règle 1 est « autoriser le trafic vers le port TCP 443 de 10.0.0.10 », la règle 2 « refuser tout le trafic de source 192.168.1.0/24 » et la règle 3 « autoriser le trafic de source 192.168.0.0/16 vers le port TCP 80 » ; il n'y a pas d'autre règle. Parmi les 4 paquets (i) « de 192.168.1.5 vers le port TCP 443 de 10.0.0.10 », (ii) « de 192.168.1.5 vers le port TCP 80 de 10.0.0.20 », (iii) « de 192.168.2.5 vers le port TCP 80 de 10.0.0.20 » et (iv) « de 192.168.2.5 vers le port TCP 22 de 10.0.0.20 », quel choix énumère tous les paquets qui passent ?
  12. Un hôte communique avec un serveur web lointain à travers un tunnel VPN site à site. Les connexions TCP s'établissent et les petites pages s'affichent, mais les téléchargements de gros fichiers se bloquent en cours de route. La MTU dans le tunnel est de 1400 octets, et le serveur envoie des paquets de 1500 octets dont la fragmentation est interdite (bit DF à 1). Le pare-feu placé devant le serveur est en outre configuré pour détruire tout l'ICMP. Quelle est la cause la plus probable ?
  13. On récupère, l'un après l'autre, un fichier HTML et les quatre images qu'il référence sur un serveur web dont le RTT est de 40 ms. On suppose que l'établissement d'une connexion TCP prend un aller-retour et que chaque requête et sa réponse prennent un aller-retour, et l'on néglige le temps de transfert des données, le temps de traitement du serveur, TLS et la fermeture des connexions. Quelle est la différence de durée totale entre l'ouverture d'une nouvelle connexion TCP pour chaque objet et la réutilisation d'une seule connexion TCP (connexion persistante) ?
  14. On envoie 1,5 MB de données texte, compressées par gzip au tiers de leur taille. La bande passante est de 10 Mbit/s et le RTT de 100 ms ; avant de commencer à envoyer les données, la connexion TCP, la poignée de main TLS et la requête HTTP prennent ensemble 3 allers-retours. On prend 1 MB = 10^6 octets et l'on néglige le temps de compression et de décompression, les en-têtes et les attentes dues au contrôle de congestion de TCP. Quelle valeur est la plus proche du temps nécessaire pour finir de recevoir les données ?
  15. Dans le modèle OSI, quelle couche utilise des adresses logiques comme les adresses IP pour relayer les paquets entre différents réseaux jusqu'à leur destination ?

Comparatifs incluant ce terme

Termes associés

Paquet (packet) HTTP (Hypertext Transfer Protocol) RTT (temps d'aller-retour) Routeur IP (protocole Internet) UDP (User Datagram Protocol) DNS (Domain Name System) Numéro de port TLS (Transport Layer Security) QUIC

Retour au glossaire