UDP : fonctionnement et différences avec TCP
Auteur : Rédaction Domeny.ForSale Publié le
En bref : UDP est un protocole réseau qui transmet de petites quantités de données sans établir de connexion au préalable. Il ne confirme pas lui-même leur réception, ne retransmet pas les paquets perdus et ne garantit pas leur ordre de livraison. Il est utile lorsque disposer de données récentes et limiter les délais compte davantage que récupérer chaque fragment manquant, par exemple pour les appels vocaux et les jeux en ligne.
Comment fonctionne UDP et qu’est-ce qu’un datagramme ?
UDP, pour User Datagram Protocol, est un protocole de la couche transport : il définit la manière dont les applications échangent des données sur le réseau. Il s’appuie sur IP, le protocole chargé de l’adressage et de l’acheminement des paquets entre les appareils. IP permet d’atteindre le bon hôte, tandis qu’UDP utilise les numéros de port pour diriger les données vers le service ou l’application appropriés.
Un message UDP constitue un datagramme. Il contient les données de l’application ainsi qu’un en-tête indiquant notamment le port source, le port de destination et la longueur du message. L’en-tête UDP fait 8 octets ; la transmission sur le réseau nécessite aussi les en-têtes d’autres couches, dont IP.
L’émetteur envoie le datagramme à l’adresse IP et au numéro de port choisis. UDP ne procède pas au préalable à une négociation de connexion avec le destinataire, appelée handshake. Cela n’empêche toutefois pas une application utilisant UDP de prévoir une connexion à un compte, des sessions ou sa propre étape de négociation des échanges.
UDP préserve les limites des messages : deux datagrammes envoyés ne deviennent pas un seul flux d’octets. Le destinataire peut cependant les recevoir dans l’ordre inverse, recevoir un doublon ou n’en recevoir aucun.
Que ne garantit pas UDP ?
L’envoi réussi d’un datagramme par l’application ne prouve pas que le destinataire l’a reçu. Un paquet peut se perdre, notamment en raison d’une congestion du réseau, du fonctionnement d’un pare-feu ou de l’absence de programme à l’écoute sur le port concerné. UDP ne corrige pas lui-même cette situation.
Le protocole n’assure pas non plus le contrôle de flux, qui consiste à adapter le rythme d’envoi aux capacités du destinataire, ni le contrôle de congestion du réseau. Si l’application en a besoin, elle doit recourir à des mécanismes supplémentaires. Envoyer toujours plus de données sans réagir aux pertes peut dégrader les échanges plutôt que les accélérer.
UDP ne chiffre pas les données et ne vérifie pas l’identité de l’émetteur. La confidentialité et l’authentification peuvent être assurées par des protocoles qui s’appuient sur lui, comme DTLS ou QUIC. L’absence de ces fonctions dans UDP lui-même ne signifie donc pas que tous les services qui l’utilisent transmettent leurs informations sans protection.
UDP et TCP : quand la différence compte-t-elle ?
TCP, pour Transmission Control Protocol, est un autre protocole de transport couramment utilisé. Il établit une connexion et fournit à l’application un flux d’octets ordonné, en retransmettant automatiquement les données perdues. Si les échanges ne peuvent pas se poursuivre, ils peuvent se terminer par une erreur : TCP ne garantit pas non plus la réussite de toute une opération métier, comme l’enregistrement d’une commande.
| Caractéristique | UDP | TCP |
|---|---|---|
| Établissement d’une connexion | Absent du protocole lui-même | Requis |
| Mode de transmission des données | Datagrammes distincts | Flux d’octets |
| Retransmission des données perdues | Aucune retransmission automatique | Intégrée |
| Ordre des données | Non garanti | Préservé dans le flux |
| Contrôle de congestion | Absent d’UDP lui-même | Intégré |
Dire qu’« UDP est plus rapide que TCP » est une simplification. UDP a un en-tête plus petit et n’attend pas d’accusés de réception, mais les délais réels dépendent aussi du réseau et de la conception de l’application. Si le programme doit lui-même confirmer la réception et retransmettre chaque message, une partie de cet avantage peut disparaître.
Imaginez un jeu dans lequel le client reçoit régulièrement la position d’un adversaire. Si une mise à jour se perd, une plus récente peut être plus utile que la retransmission de l’ancienne. En revanche, l’information concernant l’achat d’un objet nécessite une confirmation et une protection contre l’exécution de l’achat en double : UDP seul ne les fournit pas.
Où utilise-t-on UDP en pratique ?
UDP est utilisé dans de nombreux services, même si les modalités dépendent du programme et des conditions du réseau :
- Appels vocaux et visioconférences : un échantillon audio arrivé trop tard peut être moins utile qu’une brève interruption masquée par l’application.
- Jeux en ligne : les mises à jour fréquentes de l’état du jeu peuvent être transmises sans attendre la récupération des données précédentes.
- DNS, le système de noms de domaine : de nombreuses requêtes et réponses utilisent UDP, mais DNS utilise aussi TCP, et ses variantes chiffrées font appel à des protocoles supplémentaires.
- HTTP/3 : utilise QUIC, qui s’appuie sur UDP et ajoute notamment le chiffrement, un transport fiable des flux et le contrôle de congestion.
HTTP/3 montre que « fonctionner sur UDP » ne signifie pas « pouvoir perdre du contenu d’une page sans conséquence ». Les garanties absentes d’UDP peuvent être fournies par une couche située au-dessus de lui.
Comment vérifier si une application a besoin d’UDP ?
Si vous configurez un routeur ou un pare-feu, consultez la documentation de l’application pour connaître le protocole, le port et le sens du trafic requis. Un port TCP et un port UDP portant le même numéro sont deux points de communication distincts : autoriser TCP ne débloque pas automatiquement UDP.
N’ouvrez pas les deux protocoles « au cas où ». Une connexion sortante ordinaire ne nécessite généralement pas de redirection manuelle de port, alors que rendre accessible un serveur depuis un réseau domestique peut en nécessiter une. Commencez par déterminer si le programme se contente de se connecter à un service ou s’il doit recevoir du trafic provenant d’internet : la configuration appropriée en dépend.
À lire aussi : Qu’est-ce que GitLab ?
