1 Présentation du protocole
2 Format des datagrammes
2.1 Entête UDP
2.2 Pseudo entête UDP
2.3 Datagramme complet
2.4 Exemple d'entête
3 Quelques protocoles utilisant UDP
Présentation du protocole
UDP (User Datagram Protocol), protocole de couche 4, permet de transmettre rapidement des données. Grâce à son entête simpliste, il transporte les données bien plus vite que son homologue TCP. UDP ne soucie pas si l'hôte récepteur a bien reçu les données ou pas, ni même de la validité de ces données (ceci pouvant être gérée par les protocoles de couches supérieures par exemple).
Le protocole UDP est une bonne solution pour transmettre des données de manière rapide, mais cela se fait au détriment de la fiabilité lors de l'échange des données.
Format des datagrammes
Entête UDP
L'entête UDP possède une taille de 8 octets et est constitué de quatre champs.
Port source : Ce champ de 16 bits précise le port logiciel de l'application de l'hôte source. Il est optionnel, lorsqu'il est rempli, il permet au destinataire de savoir quel est le port utilisé pour envoyer une éventuelle réponse. Un port source dont la valeur est à zéro, signifie que c'est un service inexistant.
Port destination : Il spécifie sur 16 bits, le port de l'application de l'hôte de destination. Tout comme le premier champ, celui-ci peut prendre une valeur comprise entre 1 et 65 535. Une fois que le paquet UDP arrive à destination, on utilise ce champ pour diriger le paquet vers la bonne application.
Longueur : Précise la taille du paquet UDP à savoir entête et données compris. La taille minimale est de 8 octets (ce qui représente la taille de l'entête). Et la taille maximale est de [65 535 - taille entête IP], dans le cas où cet entête IP ne possèderait aucune option, la valeur maximale que prendrait ce champ serait de 65 515 octets.
Checksum : Le checksum est optionnel, il détecte les éventuelles erreurs dans le paquet UDP mais en aucun cas ne les corriges. Par ailleurs, le checksum quand il est utilisé, possède une pseudo entête.
Pseudo entête UDP
En plus de l'entête UDP normale, le checksum possède une pseudo entête faisant 12 octets et possédant 5 champs. Cette pseudo entête placée devant l'entête normale, a pour but de prévenir les éventuelles erreurs de routage, lors de l'acheminement du paquet sur le réseau.
IP source : Indique l'adresse IP de l'hôte émetteur
IP destination : Précise à quelle est adresse IP de l'hôte source, le paquet UDP est destiné
MBZ (Must Be Zero) : On effectue un bourrage en y mettant des bits nuls, pour obtenir un nombre pair d'octets (lorsque c'est nécessaire)
Type : Le type permet d'identifier quel est le protocole utilisé dans le paquet IP.
Longueur : Longueur UDP comprenant la taille de la pseudo entête, de l'entête et des données.
Datagramme complet
Exemple d'entête
Dans l'exemple ci-dessus, le port 53 (port spécifique à DNS) de l'adresse 212.27.40.241 envoie un paquet, en utilisant le protocole UDP, au port 1025 (un service qui est propre au système d'exploitation Windows) de l'adresse 192.168.0.10 (adresse IP locale).
Quelques protocoles utilisant UDP