The manual Page
 
accueil | glossaire | downloads | liens ]
 

Le protocole UDP

D'après SebF - www.FrameIP.com

Définition du protocole

Le protocole UDP (User Datagram Protocol) est un protocole de couche 4 s'appuyant sur IP. C'est un protocole qui a été conçu pour être simple et rapide. Ainsi, il n'ouvre pas de session (d'où son appellation de "mode non connecté") et n'effectue pas de contrôle d'erreur (d'où son manque de fiabilité).

Ce protocole peut donc être a priori jugé moins intéressant que TCP. Cependant, ses champs d'applications sont larges :

  • Lorsque les couches sous-jacentes peuvent palier à son manque de fiabilité. C'est le cas notamment avec TFTP (Trivial File Transfer Protocol) sur les réseaux locaux : en effet, la qualité des réseaux locaux est suffisamment bonne pour compenser les défauts d'UDP et permettre ainsi le transfert de fichiers à très haut débit.
  • Pour transmettre de très faibles quantités de données lorsque le coût d'établissement et de maintien d'une connexion fiable est jugé trop important par rapport à ce qu'il y a à transmettre.
  • Pour les applications satisfaisant à un modèle de type "interrogation réponse", la réponse étant utilisée comme un accusé de réception à l'interrogation. On y trouve classiquement SNMP (Simple Network Management Protocol) et DNS (Domain Name Server).
  • Lorsque la vitesse de transmission a plus d'importance que la perte d'un paquet de données. C'est le cas d'un service tel que la voix sur IP où en effet, l'envoi en temps réel est primordiale, et la perte d'une trame d'information ne déformera pas notoirement le message transmis (l'oreille humaine sera capable d'extrapoler la perte de cette information).

Structure de l'en-tête UDP

Les champs de l'en-tête

La structure de l'enitête UDP est la suivante :

En-tête UDP

En-tête UDP

Les champs de cet en-tête sont :

  • Port source : codé sur 16 bits, il correspond au port relatif à l'application en cours sur la machine source (et qui émet donc cette trame UDP)
  • Port destination : codé sur 16 bits, il correspond au port relatif à l'application en cours sur la machine de destination.
  • Longueur : codé sur 16 bits, il représente la taille de l'en-tête et des données. Son unité est l'octet et sa valeur maximale est 64 Koctets (216).
  • Checksum : codé sur 16 bits, il représente la validité du paquet de la couche UDP. Le détail de ce calcul est précisé ci-après.

Calcul du checksum

Le checksum est déterminé en calculant le complément à 1 sur 16 bits de la somme des compléments à 1 des octets de l'en-tête (hors checksum) et des données pris deux par deux (mots de 16 bits). Si le message entier contient un nombre impair d'octets, un octet "vide" supplémentaire (huit 0), non transmis, est ajouté à la fin du message pour terminer le calcul du checksum. Lors du calcul du checksum, les positions des bits attribués à celui-ci sont marquées à 0.

L'en-tête utilisé pour le calcul du checksum contient en fait un pseudo en-tête de 96 bits préfixé au véritable en-tête UDP. Ce pseudo en-tête comporte les adresses Internet source et destination, le type de protocole (UDP = type 17) et la longueur du message UDP. Le fait d'ajouter ce pseudo en-tête pour le calcul permet de protéger UDP contre les erreurs de routage.

Pseudo en-tête UDP

Pseudo en-tête UDP pris en compte dans le calcul du checksum

Note : MBZ = Must Be Zero. Octet "vide", ne contenant que des 0.

La longueur figurant dans ce pseudo en-tête est la longueur totale du véritable en-tête UDP (c'est-à-dire que l'on ne tient pas compte des 12 octets supplémentaires de ce pseudo en-tête).

Références

Site de référence pour les protocoles IP (et site d'où est tiré cet article) :

Les RFCs :

  • RFC768 : User Datagram Protocol
  • RFC793 : Transmission Control Protocol

format imprimable format imprimable



Copyright © 2000-2006 themanualpage.org - Ce site est soumis aux conditions décrites dans les licences GNU GPL et FDL.