Différence entre TCP et UDP
Dans les communications sur Internet, différentes méthodes sont utilisées pour livrer les données à l'autre partie. Parmi les plus représentatives se trouvent TCP et UDP.
TCP est une méthode de communication qui met l'accent sur la livraison correcte des données. UDP est une méthode de communication qui met l'accent sur un mécanisme plus léger et sur une réduction plus facile de la latence.
Cependant, TCP et UDP ne se comparent pas comme si l'un était « supérieur » à l'autre. La méthode adaptée est choisie selon l'objectif de la communication.
Qu'est-ce que TCP ?
TCP est une méthode de communication qui met l'accent sur la fiabilité.
Avec TCP, une connexion est établie avec l'interlocuteur, puis les données sont envoyées et reçues sur cette connexion. TCP vérifie si les données envoyées sont arrivées, et renvoie les données perdues en cours de route si nécessaire.
De plus, sur le réseau, les données n'arrivent pas toujours dans l'ordre où elles ont été envoyées. Avec TCP, des informations permettant de gérer l'ordre sont associées aux données, et le côté réception les remet dans le bon ordre.
Pour cette raison, TCP convient aux communications où il serait problématique que des données manquent ou arrivent dans le désordre.
Par exemple, dans les traitements de connexion, l'envoi et la réception de fichiers, l'envoi d'e-mails, ou les communications web avec HTTP/1.1 et HTTP/2, l'exactitude des données est importante. Si une partie des informations de connexion manque ou si une partie d'un fichier est corrompue, le traitement ne peut pas se faire correctement.
Pour obtenir cette fiabilité, TCP effectue des contrôles comme les confirmations et les retransmissions. Cela implique davantage de contrôle que UDP, mais c'est un mécanisme important pour les communications où l'on veut traiter les données de manière fiable et dans le bon ordre.
TCP « gère pour que les données arrivent correctement »
La caractéristique de TCP n'est pas seulement « d'envoyer des données », mais de gérer les données envoyées pour qu'elles forment une communication exploitable.
Concrètement, TCP possède les propriétés suivantes.
| Propriété | Contenu |
|---|---|
| Orienté connexion | Établit une connexion avec l'interlocuteur avant d'envoyer et recevoir des données |
| Accusé de réception | Vérifie si les données envoyées sont arrivées |
| Retransmission | Renvoie si nécessaire les données qui ne sont pas arrivées |
| Contrôle de l'ordre | Remet dans le bon ordre les données arrivées en désordre |
| Gestion des doublons | Organise les données si la même donnée arrive plusieurs fois |
Grâce à ces mécanismes, TCP fournit à l'application un flux de données ordonné et fiable.
Toutefois, TCP ne conserve pas tel quel « l'unité de données envoyée une fois par l'application ». TCP traite les données comme une suite continue d'octets.
L'application doit donc définir séparément où commence et où se termine un message. Les protocoles de niveau supérieur comme HTTP possèdent des règles pour cela.
Qu'est-ce que UDP ?
UDP est une méthode de communication qui met l'accent sur la légèreté et la faible latence.
Avec UDP, la communication ne commence pas par l'établissement d'une connexion comme avec TCP. UDP lui-même ne possède pas non plus de mécanisme pour retransmettre les données qui ne sont pas arrivées ni pour les remettre dans l'ordre.
UDP envoie les données sous forme d'unités relativement simples. Ces unités sont appelées datagrammes.
Comme UDP ne met pas beaucoup de contrôle dans la méthode de communication elle-même, le traitement est plus léger. Il peut donc être facile à utiliser pour des communications où le temps réel est important.
Cependant, penser simplement « UDP est forcément rapide » n'est pas exact. La vitesse réelle et la qualité ressentie dépendent aussi de l'environnement réseau, de la conception côté application, du mode de chiffrement, de la présence ou non de retransmissions, de la congestion, etc.
L'essence de UDP est que « la méthode de communication elle-même fournit peu de garanties ».
UDP « réduit les garanties pour faciliter le traitement »
UDP ne possède pas, dans la méthode de communication elle-même, les mécanismes de fiabilité de TCP.
| Propriété | Contenu |
|---|---|
| Sans connexion | Ne suppose pas l'établissement d'une connexion comme TCP |
| Pas de garantie d'arrivée | UDP lui-même ne garantit pas que les données arrivent toujours |
| Pas de garantie d'ordre | UDP lui-même ne garantit pas l'ordre d'arrivée des données |
| Pas de retransmission | UDP lui-même ne renvoie pas automatiquement les données perdues |
| Unité datagramme | Traite l'unité envoyée comme un datagramme |
Présenté ainsi, UDP peut sembler être une communication incomplète. Mais UDP est utilisé parce que la réduction des garanties permet aux applications de concevoir plus librement leur communication.
Par exemple, dans un appel vidéo, il est souvent plus naturel de livrer rapidement le son actuel que de retransmettre parfaitement plus tard un ancien son. Dans un jeu en ligne aussi, il peut être plus important de refléter rapidement l'état actuel que de retransmettre parfaitement une ancienne position.
De plus, le fait qu'une application utilise UDP ne signifie pas qu'elle ne peut rien garantir. Si nécessaire, l'application ou un mécanisme supérieur peut ajouter ses propres confirmations, retransmissions, contrôles d'ordre, chiffrement, etc.
QUIC en est un exemple représentatif. QUIC repose sur UDP, mais ce n'est pas une simple communication UDP. C'est une méthode de communication qui ajoute au-dessus de UDP des mécanismes de gestion de connexion, de chiffrement, de retransmission, de contrôle des flux, etc.
Comparaison entre TCP et UDP
La différence entre TCP et UDP ne se résume pas à « il y a de la fiabilité ou non ». La philosophie de conception de la communication est différente.
| Élément | TCP | UDP |
|---|---|---|
| Idée de base | Gérer la communication pour livrer correctement | Alléger la méthode de communication elle-même et réduire le contrôle au minimum |
| Connexion | Communique après établissement d'une connexion | Ne suppose pas l'établissement d'une connexion |
| Traitement des données | Traite les données comme une suite continue d'octets | Traite les données par datagrammes |
| Accusé de réception | Oui | UDP lui-même ne le fait pas |
| Contrôle de l'ordre | Oui | UDP lui-même ne le fait pas |
| Retransmission | Oui, si nécessaire | UDP lui-même ne le fait pas |
| Usages adaptés | Communications où l'exactitude est importante | Communications où la faible latence ou le contrôle flexible est important |
| Exemples représentatifs | HTTP/1.1, HTTP/2, connexion, envoi/réception de fichiers, envoi d'e-mails | DNS, appel vidéo, jeu en ligne, QUIC, HTTP/3 |
Communications adaptées à TCP
TCP convient aux communications où des pertes de données ou un désordre d'arrivée posent facilement problème.
Par exemple, lorsque vous téléchargez un fichier, si une partie manque en cours de route, le fichier entier peut être corrompu. Dans un traitement de connexion, si les informations nécessaires à l'authentification n'arrivent pas correctement, le traitement ne peut pas se faire.
Dans les communications web aussi, HTTP/1.1 et HTTP/2 fonctionnent au-dessus de TCP. Le HTML, le CSS, le JavaScript, les images et les autres éléments qui composent une page web doivent, en principe, pouvoir être obtenus correctement.
Ainsi, TCP convient aux situations où l'exactitude de la communication est importante.
Toutefois, les communications web actuelles ne fonctionnent pas toutes uniquement avec TCP. HTTP/3 utilise QUIC. QUIC est une méthode de communication fondée sur UDP.
Par conséquent, retenir seulement « la navigation web utilise TCP » devient inexact pour comprendre les communications actuelles. Il est plus juste d'organiser les choses ainsi : « HTTP/1.1 et HTTP/2 utilisent TCP, tandis que HTTP/3 utilise QUIC ».
Communications adaptées à UDP
UDP convient aux communications où le temps réel ou la flexibilité de conception sont importants.
Dans un appel vidéo, il est plus important de recevoir le son ou l'image actuels aussi vite que possible que de recevoir parfaitement plus tard un son ou une image d'il y a un instant. Même si une partie du son ou de l'image manque, il est parfois plus naturel de continuer la communication sans l'arrêter.
Dans les jeux en ligne aussi, la faible latence est importante. Il peut être plus adapté de continuer à mettre à jour l'état actuel à intervalles courts que de retransmettre parfaitement un ancien état.
DNS utilise aussi souvent UDP. DNS est le mécanisme qui demande notamment l'adresse IP correspondant à un nom de domaine. UDP convient aux situations où de courtes requêtes et réponses doivent être traitées rapidement.
Cependant, DNS n'utilise pas toujours uniquement UDP. TCP est utilisé lorsque la réponse est grande, lors de transferts de zone, ou avec des méthodes comme DNS over TLS.
Autrement dit, DNS est un « exemple représentatif de UDP », mais ce n'est pas une « communication uniquement UDP ».
Relation entre QUIC et UDP
QUIC est une méthode de communication fondée sur UDP. HTTP/3 fonctionne au-dessus de QUIC.
Le point important ici est que QUIC n'est pas une « communication sans fiabilité parce qu'elle utilise UDP ».
UDP lui-même ne possède pas de mécanismes d'accusé de réception, de retransmission, de contrôle d'ordre ou de chiffrement. Mais QUIC réalise fiabilité et chiffrement en ajoutant son propre contrôle au-dessus de UDP.
La raison pour laquelle il est construit au-dessus de UDP plutôt que TCP est qu'il est plus facile de concevoir et d'améliorer une nouvelle méthode de communication au-dessus de UDP que de modifier TCP lui-même, profondément intégré aux OS et aux équipements réseau.
UDP n'est donc pas simplement une « communication approximative ». Il sert aussi de base pour mettre en œuvre de nouvelles méthodes de communication.
TCP ou UDP : lequel est meilleur ?
TCP et UDP ne sont pas dans une relation où l'un serait toujours supérieur à l'autre.
TCP met l'accent sur la fiabilité de la communication. UDP allège la méthode de communication elle-même et facilite un contrôle flexible côté application.
TCP convient lorsque l'exactitude est importante. UDP peut convenir lorsque la faible latence ou le temps réel sont importants.
De plus, même avec UDP, l'application peut compléter la fiabilité. À l'inverse, même avec TCP, une mauvaise situation réseau entraîne de la latence et des retransmissions.
Il ne faut donc pas séparer TCP et UDP de manière simpliste comme « rapide/lent » ou « sûr/dangereux ». Ils sont choisis selon l'objectif de la communication, la latence acceptable, le fait que certaines données puissent manquer ou non, et le niveau de contrôle que l'application prend en charge.
Point de contact avec l'anonymat
La différence entre TCP et UDP concerne aussi la compréhension de l'anonymat et de la visibilité des communications.
Par exemple, dans les , , DNS, HTTP/3, appels vidéo, jeux en ligne, etc., le traitement de la communication peut changer selon que TCP ou UDP est utilisé.
Une communication TCP présente relativement clairement le début, la continuation et la fin d'une connexion. Une communication UDP n'a pas une forme de connexion aussi claire que TCP et peut faire circuler de courts datagrammes par intermittence.
Cette différence devient importante pour les pare-feu, NAT, VPN, proxys et réseaux d'anonymisation.
Par exemple, Tor est conçu principalement pour traiter des flux TCP. Il n'est donc pas forcément possible de faire passer tel quel par Tor une communication applicative utilisant UDP.
De plus, comme HTTP/3 utilise QUIC, même une communication web peut être fondée sur UDP. Dans ce cas, la visibilité et le contrôle de la communication peuvent différer de HTTP/1.1 ou HTTP/2 traditionnels.
DNS est aussi important lorsque l'on réfléchit à l'anonymat et à la vie privée. La visibilité de la communication change selon que les requêtes DNS sortent en UDP, ou qu'elles sont traitées en TCP ou par une méthode DNS chiffrée.
Comprendre la différence entre TCP et UDP permet d'organiser non seulement le fait qu'« une communication existe », mais aussi « quel type de communication est transporté, et comment ».
Résumé
TCP est une méthode de communication qui met l'accent sur la fiabilité. Elle établit une connexion, vérifie si les données sont arrivées, retransmet si nécessaire et remet les données dans l'ordre.
UDP allège la méthode de communication elle-même et ne possède pas, comme fonctions de base, d'accusé de réception, de retransmission ou de contrôle d'ordre. Il est donc utilisé pour des communications demandant une faible latence ou une conception flexible.
TCP convient à HTTP/1.1, HTTP/2, aux connexions, à l'envoi/réception de fichiers, à l'envoi d'e-mails, etc. UDP est utilisé pour DNS, les appels vidéo, les jeux en ligne, QUIC, HTTP/3, etc.
Cependant, DNS n'utilise pas seulement UDP ; il utilise aussi TCP. QUIC repose sur UDP, mais ce n'est pas une simple communication UDP : il possède ses propres mécanismes de fiabilité et de chiffrement au-dessus de UDP.
TCP et UDP ne sont pas dans une relation où l'un serait supérieur à l'autre. Ils sont choisis selon l'objectif de la communication : privilégier l'exactitude, ou privilégier la faible latence et la flexibilité.
Outils liés
DNSLeakTest
Ressource externe liée à cet article. Ouvrez-la seulement si elle correspond à votre situation et à votre modèle de menace.
Pourquoi il est listé ici: Elle peut aider sur le sujet de l’article, mais elle se situe hors d’Anonymity Sense et doit être vérifiée avant usage.