TCP & UDP

De Justine's wiki
Aller à la navigation Aller à la recherche


UDP : User Datagram Protocol

Défini dans la RFC 768 le 28/8/1980, qui n'as pas été modifiée depuis, contrairement à tous les autres protocoles qui ont reçu beaucoup de correctifs.

Avec IP, on dialogue entre machines... Avec UDP, on dialogue entre processus : on ajoute un port source et un port de destination.

La notion de port introduit la notion de "service réseau" : Il peut y avoir plusieurs services réseau par équipement. Chaque service réseau écoute sur un port différent, et les services peuvent être totalement différent, et chacun écoute sur un port spécifique. UDP se place au-dessus d'IP, et son format de datagramme est le suivant:

UDPHeader.png

  • Un port source optionnel (0 par défaut)
  • Un port de destination
  • Une longueur de datagramme (en-tête + Données)
  • Un checksum
  • Des données.

Les données utiles sont générées par l'application; elles sont encapsulées dans UDP. On voit apparaître la notion d'extrémité de communication. Une extrémité de communication est : un tuple (@IP, Port UDP) (un socket, quoi...). Un port est l'équivalent d'une porte dans une maison; on peut avoir plusieurs portes sur un bâtiment.

Un serveur UDP est un tuple "@IP + port UDP" côté serveur, et la même chose pour un client UDP. Le client va ouvrir un port UDP (ou pas, c'est optionnel : il ne le fait que si il veut un réponse; si il n'ouvre pas de port le port source sera à 0) et envoyer des datagrammes au serveur UDP, qui répondra sur le port que le client a ouvert.

Le checksum (ou somme de contrôle) est réalisé lors de l'envoi et de la réception du datagramme. Si le checksum présent est différent du checksum fait à l'arrivée, la trame est détruite. Il est réalisé sur l'en-tête UDP + une pseudo-en-tête IP ainsi que les données, ce qui ne colle pas trop au modèle OSI. À noter : si le checkzsum est optionnel en IPv4, il est obligatoire en IPv6, car IPv6 n'as lui-même pas de checksum.

Lorsqu'une trame UDP est émise, on a pas d'A/R, cela doit être contrôlé par les couches d'au-dessus. On a pas de réémission en cas de perte ni de gestion de la congestion. UDP est utilisé lorsque l'on a peu de données à transporter, et avec peu d'échanges.

Les protocoles UDP les plus connus sont :

  • DHCP
  • DNS
  • SNMP
  • TFTP
  • Les jeux en réseau
  • SIP