Previous Contents Next

4   Amélioration de la pile TCP/IPv4

Il est maintenant temps d'améliorer la pile TCP/IPv4 de vos ainés.

4.1   Structure en couches

Regardez comment les différentes couches de la pile TCP/IP sont déclarées dans la structure de données stackLayers du fichier stack.c. Explorez aussi les fichiers net*.c pour comprendre comment les différentes couches appellent les couches supérieures (dans les fonctions xxxDecodePacket) et les couches inférieures (dans les fonctions xxxSendPacket). En particulier, notez comment les tableaux associatifs sont utilisés pour communiquer entre les couches.

4.2   Gestion mémoire

En supposant que la primitive realloc soit capable de changer la taille des blocs mémoire sans jamais devoir déplacer ces blocs et que la fonction memmove soit capable de déplacer les données sans jamais utiliser de mémoire tampon, donnez la taille de l'espace mémoire utilisée sur le tas dans les situations suivantes : Détaillez l'utilisation mémoire selon les couches de la pile.

4.3   Protocole ARP

Vérifiez que la pile TCP/IP gère déjà correctement ARP, en particulier les requêtes ARP. Lancez la pile, affectez une adresse IP à l'interface Ethernet virtuelle dans le même réseau IP que la pile, et lancez un ping sur l'adresse IP de la pile. Arrêtez l'utilitaire ping et vérifiez que la requête ARP de votre machine de TP a bien reçu une réponse.

4.4   Prise en compte des réponse ARP

Relancez l'utilitaire ping sur l'adresse IPv4 de votre pile TCP/IPv4. Comparez le premier temps d'aller-retour des sondes ICMPv4 avec les temps suivants. Que constatez-vous ? Examinez le code pour comprendre le pourquoi de vos constatations. Vos observations doivent vous conduire à une constante particulière. Quel est son nom ?

4.5   Amélioration pour ARP

En utilisant l'astuce de programmation employée dans l'exercice 3.4 supprimez le délai de prise en compte des réponses ARP dans la pile TCP/IPv4. Vous pouvez suivre les suggestions suivantes.
Previous Contents Next