Zoom sur UDP, le Protocole de Datagramme Utilisateur

Le User Datagram Protocol (UDP, en français protocole de datagramme utilisateur) est un des principaux protocoles de télécommunication utilisés par Internet. Il fait partie de la couche transport du modèle OSI (comme TCP). Il ne fournit pas de garantie au protocole de la couche supérieure quant à la livraison du message. De plus, la couche UDP ne retient pas d’information quant à l’état des messages UDP une fois envoyés. Pour ces raisons, on désigne UDP comme un protocole de transmission non fiable1.

Le rôle de ce protocole est de permettre la transmission de données (sous forme de datagrammes) de manière très simple entre deux entités, chacune étant définie par une adresse IP et un numéro de port. Aucune communication préalable n’est requise pour établir la connexion, au contraire de TCP (qui utilise le procédé de handshaking). UDP utilise un mode de transmission sans connexion.

L’intégrité des données est assurée par une somme de contrôle sur l’en-tête (header). L’utilisation de cette somme est cependant facultative en IPv4 mais obligatoire avec IPv6. Si un hôte n’a pas calculé la somme de contrôle d’un datagramme émis, la valeur de celle-ci est fixée à zéro. La somme de contrôle inclut également les adresses IP de la source et de la destination.

À cause de l’absence de mécanisme de handshaking, ce protocole expose le programme qui l’utilise aux problèmes éventuels de fiabilité du réseau ; ainsi, il n’existe pas de garantie de protection quant à la livraison, l’ordre d’arrivée, ou la duplication éventuelle des datagrammes.

Si des fonctionnalités de correction d’erreur sont requises, une application peut donc se tourner vers les protocoles TCP ou SCTP, qui sont conçus à cet effet. UDP est donc adapté à un usage pour lequel la détection et la correction d’erreurs ne sont pas nécessaires, ou sont effectuées directement par l’application.

La nature du protocole UDP le rend utile pour transmettre rapidement de petites quantités de données, depuis un serveur vers de nombreux clients ou bien dans des cas où la perte éventuelle d’un datagramme est préférée à l’attente de sa retransmission. Les jeux en ligne et le streaming sont des utilisateurs typiques de ce protocole.

 

Qu’est-ce qu’un datagramme

Un datagramme est un paquet de données dans un réseau informatique ou un réseau de télécommunications. Il est utilisé par des protocoles orientés « non connectés » tels que : IPX ou UDP. Le datagramme est le terme généralement utilisé pour désigner la transmission d’un paquet via un service non « fiable » : le protocole utilisé ne garantit pas que le paquet est arrivé à sa destination (un peu comme une lettre sans accusé de réception).

L’en-tête d’un datagramme UDP est plus simple que celui de TCP. Il contient 4 champs :

  • Le port source (16 bits) qui indique depuis quel port le paquet a été envoyé.
  • Le port de destination (16 bits) qui indique à quel port le paquet doit être envoyé.
  • La longueur (16 bits) qui indique la longueur totale (exprimée en octets) du segment UDP (en-tête et données). La longueur minimale est donc de 8 octets (taille de l’en-tête).
  • La somme de contrôle (16 bits) qui permet de s’assurer de l’intégrité du paquet reçu quand elle est différente de zéro. Elle est calculée sur l’ensemble de l’en-tête UDP et des données, mais aussi sur un pseudo en-tête (extrait de l’en-tête IP).

 

Qu’est-ce qu’un handshake

En informatique, en télécommunications et dans les domaines associés, le handshaking (ou handshake ; en français, établissement d’une liaison) est un processus automatisé de négociation qui établit les paramètres d’une communication entre deux entités avant que la communication commence.

Un handshake est fait au moment où un ordinateur veut entreprendre une communication avec un appareil plus ou moins éloigné, par exemple un modem, une imprimante ou un serveur. Sur les anciens modem 56 kb/s, le processus de handshaking durait 20 secondes et était audible, chaque son émis par le modem de l’utilisateur correspondant à une étape du handshaking.

Le handshaking peut négocier les paramètres que des équipements et systèmes situés aux deux extrémités du lien de communication pourront utiliser, y compris le débit binaire, l’encodage alphabétique, la parité, la procédure d’interruption et d’autres protocoles et détails techniques. . Cependant, dans les RFCs concernant TCP/IP, le terme « handshake » fait plutôt référence au TCP three-way handshake.

© Pierre Giraud - Toute reproduction interdite