Le protocole de transport sans connexion (UDP)
User Datagram Protocol (UDP) - un protocole de communication qui facilite l'échange de messages entre les appareils informatiques d'un réseau. C'est une alternative au protocole de contrôle de transmission (TCP).
Bien que le protocole UDP soit parfois décrit comme n'ayant aucune capacité de contrôle d'erreurs, il est en fait capable d'effectuer un contrôle d'erreurs rudimentaire. Il est préférable de caractériser l'UDP comme ayant une capacité de contrôle d'erreur limitée. Le datagramme UDP comprend une valeur de somme de contrôle que la machine réceptrice peut utiliser pour tester l'intégrité des données. (Souvent, ce test de somme de contrôle est facultatif et peut être désactivé sur la machine réceptrice pour accélérer le traitement des données entrantes). Le datagramme UDP comprend un pseudo-en-tête qui englobe l'adresse de destination du datagramme, fournissant ainsi un moyen de vérifier les datagrammes mal dirigés. De même, si le module UDP récepteur reçoit un datagramme dirigé vers un port UDP inactif ou non défini, il renvoie un message ICMP (Internet Control Message Protocol) informant la machine source que le port est inaccessible.
UDP n'offre pas remise en séquence des données fournies par TCP. La remise en séquence est plus importante sur un grand réseau, comme Internet, où les segments de données peuvent emprunter des chemins différents et subir des retards importants dans les tampons du routeur. Sur les réseaux locaux, l'absence d'une fonction de remise en séquence dans UDP ne conduit généralement pas à une réception peu fiable.
L'objectif principal du protocole UDP est d'exposer les datagrammes à la couche Application. Le protocole UDP fait peu de choses et, par conséquent, utilise une structure d'en-tête simple. La RFC qui décrit ce protocole, la RFC 768, ne compte que trois pages. Comme mentionné précédemment, UDP ne retransmet pas les datagrammes manquants ou corrompus, séquencer les datagrammes reçus dans le désordre, éliminer les datagrammes en double, accuser réception des datagrammes ou établir ou terminer des connexions. UDP est principalement un mécanisme permettant aux programmes d'application d'envoyer et de recevoir des datagrammes sans la surcharge d'une connexion TCP. L'application peut fournir tout ou partie de ces fonctions, si elles sont nécessaires aux fins de l'application.
L'en-tête UDP se compose de quatre champs de 16 bits. La figure ci-dessous montre la disposition de l'en-tête du datagramme UDP.
Voici la description de ces champs
- Port source : ce champ occupe les 16 premiers bits de l'en-tête UDP. Ce champ contient généralement le numéro de port UDP de l'application qui envoie ce datagramme. La valeur saisie dans le champ Port source est utilisée par l'application réceptrice comme adresse de retour lorsqu'elle est prête à envoyer une réponse. Ce champ est considéré comme facultatif et il n'est pas nécessaire que l'application émettrice inclue son numéro de port. Si l'application émettrice n'inclut pas son numéro de port, l'application devrait placer seize bits de 0 dans ce champ. Évidemment, s'il n'y a pas d'adresse de port source valide, l'application réceptrice sera incapable d'envoyer une réponse. Cependant, cela pourrait être la fonctionnalité souhaitée, comme dans le cas d'un message unidirectionnel où aucune réponse n'est attendue.
- Port de destination : ce champ de 16 bits contient l'adresse du port auquel le logiciel UDP de la machine réceptrice fournira ce datagramme.
- Longueur : ce champ de 16 bits identifie la longueur en octets du datagramme UDP. La longueur comprend l'en-tête UDP ainsi que la charge utile des données UDP. Étant donné que l'en-tête UDP a une longueur de huit octets, la valeur sera toujours d'au moins 8.
- Somme de contrôle : ce champ de 16 bits est utilisé pour déterminer si le datagramme a été corrompu pendant la transmission. La somme de contrôle est le résultat d'un calcul spécial effectué sur une chaîne de données binaires. Dans le cas d'UDP, la somme de contrôle est calculée sur la base d'un pseudo-en-tête, de l'en-tête UDP, des données UDP et éventuellement du nombre d'octets (contenant des zéros) pour construire une entrée de somme de contrôle de longueur d'octet paire. Les sommes de contrôle générées à la source et vérifiées à la destination permettent à l'application cliente de déterminer si le datagramme a été corrompu.