Aller au contenu principal

Exercices de la semaine 14

UDP et les limites des messages

Que veut-on dire lorsque l'on mentionne qu'UDP « préserve les frontières » des messages envoyés.

Réponse

UDP ne fait qu'envoyer les messages. Il n'a aucun impact sur la taille de ceux-ci. Cette gestion est entièrement laissée aux développeurs d'application. Contrairement à TCP, UDP ne va jamais grouper le contenu de plus d'un appel à send() pour remplir un message à envoyer.

Intégrité des données avec UDP

UDP fournit-il une manière de valider l'intégrité de données reçues?

Réponse

Oui. Une somme de contrôle est calculée sur l'entièreté des données du paquet UDP.

Nécessité d'une somme de contrôle avec UDP

Si IP fournit déjà une somme de contrôle, pourquoi est-ce pertinent qu'UDP en fournisse une à son tour?

Réponse

Premièrement, la somme de contrôle d'IP n'est implémentée que pour IPv4! Sans somme de contrôle pour UDP, il n'y aurait pas de manière de valider l'intégrité des données pour des paquets transportés par IPv6. Ensuite, le checksum IPv4 n'est effectué que sur l'entête. Le payload n'est donc pas concerné par la somme de contrôle IP.

UDP ou TCP pour la vidéoconférence

Pourquoi pourrait-il être favorable d'utiliser UDP plutôt que TCP pour une application de vidéoconférence?

Réponse

Pour certaines applications, il s'avère préférable de ne pas avoir les services fournis par TCP, notamment la retransmission, le contrôle de flux et le contrôle de congestion. Pour une application de vidéoconférence, des paquets qui arrivent en retard nuisent plus à la qualité du service que des paquets qui n'arrivent pas du tout. En effet, quel est l'intérêt de présenter à l'utilisateur un segment de vidéo dans le mauvais ordre? Il serait préférable d'introduire une brève coupure à l'appel qu'un vidéo en désordre.

Typiquement, les applications de vidéoconférence vont implémenter un algorithme (codec) permettant de faire du remplissage entre deux frames coupés par une interruption. L'interruption est remplacée par un autre frame « prédit » par l'algorithme, ce qui améliore la fluidité de l'appel.

Protocoles de transport et ports partagés

Un serveur web est en cours d'exécution sur votre ordinateur. Il répond à des requêtes web sur TCP port 80. Vous désirez aussi vous connecter à un serveur Minecraft qui annonce sa présence par des messages UDP aussi adressés au port 80. Le client Minecraft sur votre poste peut-il voir les annonces du serveur Minecraft?

Réponse

Oui, c'est possible! Malgré que les numéro de port UDP et TCP sont les mêmes, ce sont deux protocoles différents. Un socket TCP en écoute sur le port 80 est une entité indépendante du socket UDP sur le port 80.

Responsabilités d'IP

IP est-il concerné par les numéros de port?

Réponse

IP ne devrait pas être concerné par les numéros de port. Ces derniers sont des attributs de la couche transport. Les numéros de port ne devraient servir qu'au système d'exploitation pour faire suivre les paquets vers la bonne application (multiplexage et démultiplexage).

Champ de l'entête UDP à éliminer

Si vous deviez éliminer un champ de l'entête UDP, lequel choisiriez-vous?

Réponse

Le champ sur la longueur du paquet est redondant puisqu'il est déjà présent dans l'entête IP.

Checksum UDP

Quelles sont les données prises en compte lors du calcul de la somme de contrôle UDP?

Réponse

En plus des données situées dans le paquet UDP, la somme de contrôle est aussi calculée sur les champs suivants de l'entête IP:

  • Adresse source
  • Adresse destination
  • Protocole
  • Longueur

Cela implique donc que des applications comme le NAT doivent ajuster la somme de contrôle IP et UDP lorsqu'elles changent l'adresse source ou destination d'un datagramme.