TCP vs UDP : connexion, fiabilité, ordre, contrôle de congestion, en-tête, latence, usages
TCP et UDP sont deux protocoles de la couche transport qui fonctionnent au-dessus d’IP et utilisent des numéros de port pour identifier les applications. Avant d’envoyer des données, TCP établit une connexion par une poignée de main en trois temps ; il confirme la livraison par des acquittements (ACK), renvoie les données perdues et remet les données à l’application réceptrice dans l’ordre d’envoi. Il ajuste aussi la quantité envoyée à l’espace libre dans le tampon du récepteur (contrôle de flux) et à la congestion du réseau (contrôle de congestion). UDP ne fait rien de tout cela : il envoie simplement les données sous forme de datagrammes, si bien que son en-tête est petit et qu’il n’y a aucune attente avant l’envoi. On utilise TCP lorsque la fiabilité de la livraison compte, et UDP lorsque la faible latence compte et que l’application gère elle-même ce dont elle a besoin par ailleurs.
| Critère | TCP | UDP |
|---|---|---|
| Établissement de la connexion | Orienté connexion : les données suivent une poignée de main en trois temps (SYN → SYN+ACK → ACK), d’où une attente initiale d’un aller-retour (RTT) | Sans connexion : les données peuvent être envoyées immédiatement, sans établissement |
| Acquittement et renvoi | La livraison est confirmée par des ACK ; la perte est détectée par l’expiration d’un délai ou par des ACK dupliqués, et les données perdues sont renvoyées | Ni acquittement ni renvoi ; les données perdues le restent |
| Ordre | Les numéros de séquence servent à remettre les données en ordre et à les livrer dans l’ordre d’envoi ; les doublons sont supprimés | Les données sont livrées dans l’ordre d’arrivée ; des inversions et des doublons peuvent survenir |
| Frontières des messages | Un flux d’octets sans frontières ; l’application décide où commencent et finissent les messages | Chaque envoi devient un datagramme : les frontières des messages sont donc préservées |
| Contrôle de flux et de congestion | Oui : la fenêtre de réception empêche le débordement du tampon du récepteur, et la fenêtre de congestion adapte la quantité envoyée à la congestion | Aucun ; si nécessaire, l’application ajuste elle-même son débit d’envoi |
| Taille d’en-tête | 20 octets sans options (jusqu’à 60 octets avec options) | 8 octets (ports source et destination, longueur, somme de contrôle) |
| Latence | L’établissement de la connexion coûte un aller-retour ; après une perte, les données suivantes attendent aussi l’arrivée du renvoi | Ni établissement ni attente de renvoi, donc une faible latence, mais certaines données peuvent manquer |
| Types de destinataires | Un à un (unicast) uniquement | Unicast, mais aussi diffusion (broadcast) et multicast |
| Usages typiques | Le web en HTTP/1.1 et HTTP/2, la diffusion vidéo sur HTTP, la messagerie (SMTP), SSH, le transfert de fichiers | Les requêtes DNS, DHCP, le trafic temps réel comme les appels vocaux et la vidéo en direct, les jeux en ligne, et QUIC utilisé par HTTP/3 |
Les valeurs indiquées sont des ordres de grandeur typiques et varient selon la génération de procédé et le produit.