User Datagram Protocol
Pile de protocoles | ||||||||||||||
|
||||||||||||||
Modèle Internet Modèle OSI |
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 de la pile de protocole TCP/IP : dans l'adaptation approximative de cette dernière au modèle OSI, il appartiendrait à la couche 4, comme TCP. Il est détaillé dans la RFC 768.
Le rôle de ce protocole est de permettre la transmission de données de manière très simple entre deux entités, chacune étant définie par une adresse IP et un numéro de port (pour différencier différents utilisateurs sur la même machine). Contrairement au protocole TCP, il travaille en mode non-connecté : il n'y a pas de moyen de vérifier si tous les datagrammes envoyés sont bien arrivés à destination et ni dans quel ordre (le séquençage peut cependant être assuré par un protocole réseau de couche inférieure). Il n'est prévu aucun contrôle de flux ni contrôle de congestion. C'est pour cela qu'il est souvent décrit comme étant un protocole non-fiable. En revanche, pour un paquet UDP donné, l'exactitude du contenu des données est assurée grâce à une somme de contrôle (checksum).
[modifier] Structure d'un segment UDP
Le paquet UDP est encapsulé dans un paquet IP. Il comporte un en-tête suivi des données proprement dites à transporter.
En-tête IP | En-tête UDP | Données |
L'en-tête (header en anglais) d'un segment UDP est bien plus simple que celui de TCP :
Port Source (16 bits) | Port Destination (16 bits) |
Longueur (16 bits) | Somme de contrôle (16 bits) |
Données (longueur variable) |
Il contient les 4 champs suivants :
- Port Source
- il indique depuis quel port le paquet a été envoyé.
- Port de Destination
- il indique à quel port le paquet doit être envoyé.
- Longueur
- il indique la longueur totale du segment UDP (en-tête et données). La longueur minimale est donc de 8 octets (taille de l'en-tête).
- Somme de contrôle
- celle-ci (de type checksum) permet de s'assurer de l'intégrité du paquet reçu. 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)
Note : la présence de ce pseudo en-tête, interaction entre les deux couches IP et UDP, est une des raisons qui font que le modèle TCP/IP ne s'applique pas parfaitement au modèle OSI.
La table suivante décrit les champs utilisés pour le calcul de la somme de contrôle UDP (les indices négatifs correspondent au pseudo en-tête IP) :
+ | Bits 0 - 7 | 8 - 15 | 16 - 23 | 24 - 31 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
-96 | Adresse Source | |||||||||||||||||||||||||||||||
-64 | Adresse Destination | |||||||||||||||||||||||||||||||
-32 | Zéros | Protocole | Taille UDP | |||||||||||||||||||||||||||||
0 | Port Source | Port Destination | ||||||||||||||||||||||||||||||
32 | Taille | Checksum | ||||||||||||||||||||||||||||||
64 | Data |
[modifier] Utilisation
Il est utilisé quand il est nécessaire soit de transmettre des données très rapidement, et où la perte d'une partie de ces données n'a pas grande importance, soit de transmettre des petites quantités de données, là où la connexion « 3-WAY » TCP serait trop lourde. Par exemple, dans le cas de la transmission de la voix sur IP, ce n'est pas grave si l'un ou l'autre paquet se perd (il existe des mécanismes de substitution des données manquantes), par contre la rapidité de transmission est un critère primordial pour la qualité d'écoute.
Exemples d'utilisation :
- le programme traceroute,
- les protocoles DNS, TFTP,
- les jeux en réseau (exemple : jeux de tir subjectifs)
- le streaming
- le déni de service
[modifier] Liens externes
- (en) RFC 768 – User Datagram Protocol
- (fr) Traduction Française de la RFC 768
- (en) IANA Port Assignments – liste des ports prédéfinis et de leurs utilisations, par l'IANA