next up previous contents
Next: Le protocole TCP. Up: Les protocoles TCP et Previous: Les protocoles TCP et

Le protocole UDP.

  Le protocole UDP (rfc 768)utilise IP pour acheminer, d'un ordinateur à un autre, en mode non fiable des datagrammes qui lui sont transmis par une application (voir la figure 2.3). UDP n'utilise pas d'accusé de réception et ne peut donc pas garantir que les données ont bien été reçues. Il ne réordonne pas les messages si ceux-ci n'arrivent pas dans l'ordre dans lequel ils ont été émis et il n'assure pas non plus de contrôle de flux. Il se peut donc que le récepteur ne soit pas apte à faire face au flux de datagrammes qui lui arrivent. C'est donc à l'application qui utilise UDP de gérer les problèmes de perte de messages, duplications, retards, déséquencement, ...

Cependant, UDP fournit un service supplémentaire par rapport à IP, il permet de distinguer plusieurs applications destinatrices sur la même machine par l'intermédiaire des ports . Un port est une destination abstraite sur une machine identifié par un numéro qui sert d'interface à l'application pour recevoir et émettre des données. Par exemple,

...
tftp            69/udp
...
snmp            161/udp
...
est un court extrait du fichier /etc/services de la machine vega.info.univ-angers.fr dans lequel sont enregistrés les numéros de port utilisés par chaque application. On y voit que l'application tftp utilise le port 69 et que l'application snmp utilise le port 161[*]. Chaque datagramme émis par UDP est encapsulé dans un datagramme IP en y fixant à 17 la valeur du protocole (voir la section 2.5.1). Le format détaillé d'un datagramme UDP est donné dans la figure 2.22.
  
Figure 2.22: Structure d'un datagramme UDP.
\begin{figure}
\begin{center}

\includegraphics 
*{figdatagudp.eps}\end{center}\end{figure}

Les numéros de port (chacun sur 16 bits) identifient les processus émetteur et récepteur. Le champ longueur contient sur 2 octets la taille de l'en-tête et des données transmises. Puisqu'un datagramme UDP peut ne transmettre aucune donnée la valeur minimale de la longueur est 8. Le checksum est un total de contrôle qui est optionnel car il n'est pas indispensable lorsque UDP est utilisé sur un réseau très fiable. S'il est fixé à 0 c'est qu'en fait il n'a pas été calculé. De manière précise, UDP utilise l'en-tête et les données mais également une pseudo-entête pour aboutir à l'ensemble décrit figure 2.23.
  
Figure: Champs utilisés pour le calcul du checksum UDP.
\begin{figure}
\begin{center}

\includegraphics 
*{figpseudo.eps}\end{center}\end{figure}

Cette pseudo en-tête comprend les adresses IP source[*] et destination du datagramme ainsi qu'un éventuel octet de bourrage pour aboutir à un nombre d'octets total pair. À partir de cet ensemble, le total de contrôle est calculé de la même manière que dans le cas du datagramme IP (voir section 2.5.1). Si le résultat donne un checksum nul, son complément à 1, c'est-à-dire 65535 (16 bits à 1), est en fait placé dans la zone de contrôle. Ce détail permet d'éviter la confusion avec le checksum nul qui indique qu'il n'a pas été calculé. Précisons enfin que la pseudo en-tête et l'octet de bourrage ne sont pas transmis et qu'ils n'interviennent pas dans le calcul du champ longueur. À la réception UDP utilise l'adresse IP de destination et l'adresse IP émettrice inscrite dans l'en-tête du datagramme IP pour calculer, de la même manière qu'à l'émission, une somme de contrôle qui permettra d'assurer que le datagramme est délivré sans erreur et à la bonne machine. Si une erreur de transmission est détectée, le datagramme UDP est détruit <<en silence>>. Sinon, UDP oriente les données du datagramme vers la file d'attente associée au numéro de port destination pour que l'application associée à celui-ci puisse les y lire.


next up previous contents
Next: Le protocole TCP. Up: Les protocoles TCP et Previous: Les protocoles TCP et
Pascal Nicolas Université d'Angers
mardi, 2 novembre 1999, 09:20:50 MET