Post on 03-Apr-2015
UDP – User Datagram Protocol
UDP
La couche Transport du modèle TCP/IP :
La couche de protocoles située au dessus de la couche Internet est la couche de Transport Processus hôte à processus hôte
Les deux protocoles les plus importants en sont le Transmission Control Protocol (TCP) et le User Datagram Protocol (UDP)
En toute logique, le protocole UDP aurait dû s'appeler l’Application Datagram Protocol
UDP
TCP fournit un service de transmission fiable de données avec détection et correction d'erreurs de bout en bout
UDP fournit un service peu coûteux en traitement, sans connexion, de transmissions de datagrammes
Les deux protocoles délivrent des données entre les couches hautes applicatives et la couche Internet
Les programmeurs d'applications peuvent choisir le service le plus approprié à leurs applications spécifiques
UDP
Les numéros de protocole de transport sont :
Protocole Numéro TCP 0x06 UDP 0x11
UDP
UDP User Datagram Protocol :
Le User Datagram Protocol donne aux applications l’utilisant un accès direct à un service de transmission de datagrammes, équivalent à celui que fournit IP
Les applications peuvent ainsi échanger des messages sur le réseau avec un minimum de surcharge due au protocole
UDP offre la notion de port que ne permet pas IP
UDP permet la détection des erreurs que ne permettait pas IP au niveau de ses données
UDP
UDP est un protocole datagramme non fiable, sans connexion
A l'intérieur d'un réseau Internet, UDP délivrera les données qu’il transporte à la couche UDP destination
UDP emploie des numéros de Port Source et de Port Destination sur 16 bits dans le premier mot long de son en-tête
Le message peut ainsi être délivré au bon processus applicatif
UDP
Les protocoles de transport, grâce aux numéros de port, utilisent un système de multiplexage permettant de transmettre simultanément plusieurs flux de données par une même liaison, vers plusieurs applications
Le numéro de port source est choisi dynamiquement, aléatoirement mais de façon unique par l'émetteur
Le numéro de port destination correspond à un service particulier offert sur l'ordinateur cible
UDP
Les numéros de ports destination correspondant à l'appel de services classiques sont appelés les numéros de ports bien connus (well known ports)
Ils sont attribués par l'IANA (Internet Assigned Number Authority)
L’IANA a été rebaptisée ICANN en 1992
Les numéros de ports bien connus sont la plupart du temps inférieurs à 1024 [rfc 1700]
UDP
Les numéros de port bien connus sont décrits dans les fichiers :
Fichier OS
/etc/services Unix
\windows\services Win9x
\winnt\system32\drivers\etc Windows NT
UDP
UDP
L'emplacement et la numérotation des numéros de port UDP sont les mêmes que pour TCP
Le protocole de routage RIP utilise UDP pour échanger ses messages
L'ensemble @IP source et destination, numéros de port source et destination et protocole de transport permettent d'établir un lien unique dans le monde permettant des communications duplex
UDP
Le protocole de transport UDP ne fournit pas de liaison fiable
Un datagramme UDP n'est jamais sûr d'arriver
Si plusieurs datagrammes UDP sont envoyés, il n'existe pas de moyen de les réordonner à l'arrivée
UDP est un équivalent de IP mais permettant d'interfacer les applications
UDP
Les programmeurs d'applications choisissent UDP comme service de transport de données lorsque la quantité de données transmises est faible ou très importante
La surcharge due à la création des connexions et à une transmission fiable peut être plus importante que le renvoi de tout l'ensemble des données
TCP n'est pas adapter à la communication streaming ou broadcast (cas de la vidéo ou du son)
Dans ce cas UDP est le choix le plus efficace pour un protocole de couche Transport simplifié (cas du RealAudio)
UDP
UDP sert également aux applications basées sur un modèle de question-réponse
La réponse peut être utilisée comme un acquittement positif de la question
Si une réponse n'est pas reçue dans un certain laps de temps, l'application se contente de renvoyer une autre question
UDP
D'autres applications fournissent leurs propres techniques pour une transmission fiable des données et ne requièrent donc pas ce service des protocoles de la couche Transport
C'est le cas du protocole NFS (Network File System) qui est basé sur des RPC (Remote Procedure Call) elles-mêmes basées sur UDP
NFS est cependant une application d’échange de données fiable
Il serait inefficace d'imposer plusieurs couches d'acquittement
UDP
UDP
Les deux premiers champs représentent les ports source et destination sur 16 bits
Le champ longueur indique la taille en octets du datagramme UDP (en-tête + données)
Ce champ contient toujours une valeur supérieure à 8
Le datagramme UDP possède une taille maximum de 65535 et donc 65507 octets de données utiles
UDP
Le champ somme de contrôle est optionnel
Dans le cas où il contient la valeur 0, l'algorithme de vérification de la somme de contrôle n'est pas utilisé
Quand la somme de contrôle vaut 0, la valeur 0xFFFF est alors placée dans le champ de contrôle afin de le différencier de l'absence de contrôle
Dans le cas où la somme de contrôle recalculée à l'arrivée diffère de la somme de contrôle du datagramme, le paquet est perdu et ni le destinataire ni l'émetteur en sont informés
UDP
La somme de contrôle est calculée sur le pseudo en-tête contenant les adresses IP de l'expéditeur et du destinataire, la taille du paquet UDP et le code de protocole pour UDP (0x11)
Ceci permet de vérifier que les adresses IP n'ont pas été faussées en cours de route
UDP
UDP
Sur les OS Windows, le logiciel de pilotage UDP se trouve dans la bibliothèque Winsock.dll ou wsock32.dll
Ces fichiers contiennent la pile de protocoles TCP/IP sous Windows
rfc 768
User Datagram Protocol J.Postel 1980
Document de référence UDP présentant certaines lacunes
rfc 1122
Requirements for Internet Hosts Communication Layer
R.Braden 1989
Compléments et éclaircissements sur de nombreux points de détail dont UDP