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.