Section 4. Eléments de cours sur ARP
4.2 Processus de recherche de l'adresse physique
Pour accélérer la transmission des paquets et réduire le nombre de requêtes de diffusion ARP, chaque noeud dispose d'un cache ARP de résolution d'adresse. Chaque fois que le noeud diffuse une requête ARP et reçoit une réponse, il crée une entrée dans une table de correspondance stockée en mémoire cache (@ip / @ Ethernet).
Lorsque le noeud envoie un autre paquet IP, il cherche d'abord l'adresse IP dans son cache.
S'il la trouve, il utilise alors l'adresse physique correspondante pour son paquet.
Quand un poste cherche l'adresse physique correspondant à une adresse IP qu'il connaît, le protocole ARP se met en oeuvre et réalise donc les tâches suivantes :
1. recherche dans le cache ARP de la machine si l'adresse IP du destinataire y figure, s'il la trouve, il ajoute alors l'adresse physique correspondante dans l'en-tête de la trame à émettre.
2. réalisation d'un broadcast (ARP request) sur le réseau en demandant à qui correspond l'adresse IP à résoudre : il diffuse un paquet ARP qui contient l'adresse IP du destinataire
3. les machines du réseau comparent l'adresse demandée à leur adresse et le noeud correspondant renvoie son adresse physique au noeud qui a émis la requête (ARP reply) .
4. stockage de l'adresse physique lorsque le destinataire répond dans le cache ARP de la machine
Remarque : chaque entrée de la table à une durée de vie limitée (2 minutes mini sous Windows).
Voici pour exemple ce que donne le programme tcpdump avec la commande ping
192.168.1.2 à partir de la machine uranus alors que la table ARP de l'hôte uranus est vide :
13:17:14.490500 arp who-has 192.168.1.2 tell uranus.planete.net 13:17:14.490500 arp reply 192.168.1.2 is-at 0:40:33:2d:b5:dd
13:17:14.490500 uranus.planete.net > 192.168.1.2: icmp: echo request 13:17:14.490500 192.168.1.2 > uranus.planete.net: icmp: echo reply 13:17:15.500500 uranus.planete.net > 192.168.1.2: icmp: echo request 13:17:15.500500 192.168.1.2 > uranus.planete.net: icmp: echo reply
Explications :
Ligne 1, uranus demande qui est 192.168.1.2 (requête ARP) Le paquet est diffusé à tous les hôtes du réseau.
Ligne 2 réponse ARP : je suis à l'adresse Ethernet 00:40:33:2d:b5:dd Lignes 3 à 6 : échanges de paquets ICMP entre les 2 hôtes.
Travaux Pratiques : La résolution d'adresses physiques
Table of Contents
Tester la présence d'un poste sur le réseau avec la commande ping
Interface couche 3 / couche 2 , IP / ethernet : utilisation du protocole ARP Le cache ARP
La commande ARP
Tromper ARP avec une adresse inexistante
Tromper ARP avec une adresse Ethernet existante mais mal associée Utilisation de l'analyseur de trames Ethereal
examen de paquets ARP Conditions de réalisation
Ce TP nécessite des machines Windows ou Linux reliées par un réseau Ethernet et TCP/IP, et disposant d'un routeur connecté à internet. L'adresse du réseau utilisé par ce TP est 10.69.0.0, mais peut être modifiée sans problème. Il faut disposer d'un analyseur de trames, les exemples utilisent Ethereal (http://www.ethereal.com/).
Figure 1. Schéma du réseau utilisé
Tester la présence d'un poste sur le réseau avec la commande ping
Ces tests peuvent être réalisés à partir d'un poste de travail Linux ou Windows
• à partir de votre poste, ouvrez une fenêtre d'invite de commandes
• quelle commande utilisez-vous pour afficher les informations concernant votre carte réseau ?
• testez l'adresse IP de loopback pour vérifier que les liaisons définies par TCP/IP sont correctes : ping 127.0.0.1
• testez avec l'adresse IP de votre poste
• testez avec l'adresse du poste d'un voisin
• testez avec l'adresse du réseau : 10.69.0.0 (notez le résultat) Que signifient les réponses ?
• testez avec l'adresse de broadcast sur ce réseau : 10.69.255.255 (notez le résultat) Que signifient les réponses ?
• testez une adresse IP non utilisée sur le réseau par exemple 10.69.0.99 (idem) Que peut-on déduire de la réponse ? Le poste existe t-il ? Le poste n'est pas actif ?
• testez l'adresse de la passerelle : 10.69.0.254
• testez une adresse existante au delà de votre passerelle : 192.168.0.n (idem)
Comment expliquez-vous votre résultat ? Pourquoi ce poste répond-il alors que son adresse réseau est différente de la vôtre ?
• testez une adresse au hasard ne faisant pas partie du réseau : 200.110.20.37 (idem) Que pouvez-vous déduire du résultat ?
Interface couche 3 / couche 2 , IP / ethernet : utilisation du protocole ARP
2 stations pour dialoguer doivent utiliser les adresses MAC, il faut donc un moyen pour passer de l'adresse IP à l'adresse MAC et vice versa. IP fournit pour cela le protocole ARP (Adress Resolution Protocol) et RARP (Reverse Adress Resolution Protocol)
Le cache ARP
• Affichez le cache ARP : tapez la commande arp -aàl'invite de commandes
• Notez le résultat
• faites un ping sur une autre station
• Affichez de nouveau le cache arp (notez le résultat) Que contient le cache ARP à l'issue du PING ?
• faites un ping sur l'adresse interne de votre passerelle internet (192.168.0.254)
• affichez le cache arp (notez le résultat)
Que contient le cache ? Expliquez le résultat. Cela confirme-t-il vos hypothèses précédentes (question 1) ?
• Décrivez les entrées du cache ARP La commande ARP
Utilisez les commandes pour obtenir de l'aide sur la commande arp : arp /? ou arp --help et man arp sous Liniux
• videz le cache arp (notez l'instruction qu'il faut utiliser)
• Sous Linux reprenez les opérations du paragraphe précédent, afin de mettre des informations en cache. Pour vider le cache vous utiliserez les instructions suivantes :
ifconfig eth0 down
arp -a /* vous constaterez qu'il n'y a plus rien en cache */
ifconfig eth0 up
• A l'aide de la commande « man ifconfig », expliquez ce que font les commandes ifconfig eth0 down et ifconfig eth0 up.
Reprenons les manipulations une fois le cache vidé
• notez l'adresse ethernet du poste voisin
• ajoutez manuellement cette entrée arp dans la cache (donnez l'instruction qu'il faut passer)
• affichez votre cache arp pour vérifier.
Quel est le type de l'entrée ?
• testez cette entrée avec ping
Quelles sont les différentes possibilités de la commande ARP ? Tromper ARP avec une adresse inexistante
• utiliser la commande arp permettant de modifier l'adresse matérielle de la passerelle par défaut (donnez l'instruction qu'il faut utiliser)
(donnez lui par exemple 08-00-02-22-22-20 qui est une fausse adresse)
• faites un ping sur votre passerelle (notez le résultat) expliquez-le
• faites un ping au delà de votre passerelle (notez le résultat) expliquez-le
• supprimez cette entrée incorrecte quelle est l'instruction ?
Tromper ARP avec une adresse Ethernet existante mais mal associée
• prenez l'adresse ethernet d'un poste
• prenez l'adresse ip d'un autre poste
• affectez avec arp l'adresse ip à l'adresse ethernet
• testez l'adresse ip avec ping Notez le résultat et expliquez-le
Utilisation de l'analyseur de trames Ethereal
• Lancer ethereal et au besoin sélectionnez la carte réseau sur laquelle vous souhaitez capturer le trafic (vérifiez son adresse Mac)
• Démarrer la capture : Capture/Start,activez le rafraîchissement temps réel et OK
• générer du trafic réseau
- ouvrez une fenêtre d'invite de commande xterm - faites un ping sur l'adresse ip de votre voisin
• arrêter la capture des données réseau. Revenez au moniteur réseau « stop »
• Analyser les données capturées
Le moniteur réseau vous affiche trois fenêtres.
Décrivez les types d'informations que vous obtenez dans chacune de ces fenêtres.
• Mettre en évidence des données capturées
o Menu Display/Colorize Display.
o Ajouter une option name : NomName, filter : icmp
o Choisissez les couleurs de fond et de texte et validez.
• Afficher le détail des trames ICMP
• dans la première fenêtre sélectionnez une trame ICMP dont la colonne de description contient l'entrée « REQUEST ».
• dans la fenêtre de détails, cliquez sur le signe + devant ICMP (le contenu du paquet ICMP est mis en évidence et affiché selon la notation hexadécimale dans la fenêtre du bas)
• dans la fenêtre détail, cliquez sur ICMP: Packet type = request Quel nombre hexadécimal correspond à ICMP: packet type =request ?
• cliquez sur identifier (notez sa valeur)
• cliquez sur sequence number (notez sa valeur)
• cliquez sur data
Les données reçues dans le message d'écho ( echo-request)doivent être renvoyées dans le message de réponse d'écho ( echo-reply).
Vérifiez-le.
• dans le menu affichage, cliquez sur cherchez la trame suivante qui doit être une trame reply
• sur la trame suivante notez le packet type, l'identifier et lesequence number comparez avec les valeurs précédentes, qu'en déduisez-vous ?
• enregistrer la capture à des fins d'analyse ultérieure (File / Save As)
• pour imprimer (File / Print)
Examen de paquets ARP
• démarrez une capture réseau
• générez un flux réseau (avec ping)
• arrêtez la capture
• mettez en évidence les trames comportant le protocole ARP_RARP
• Affichez le détail des trames ARP:request - détail de frame : taille de la trame de base - détail Ethernet : adresse destination
- l'adresse de destination est-elle l'adresse physique(MAC d'une machine ? - quelle est la partie constructeur de l'adresse physique?
- quelle est l'adresse source ? - quel est le type de trame ethernet ? - combien d'octets contient la trame ? - A quoi servent les 14 premiers octets ?
• détail ARP_RARP
- adresse matérielle de l'expéditeur ? - adresse IP de l'expéditeur ?
- adresse matérielle de la cible ? - adresse IP de la cible ?
- pourquoi l'adresse matérielle de la cible contient-elle des FF ?
• Affichez le détail de la trame ARP:Reply - répétez les opérations précédentes et comparez - expliquez le fonctionnement du protocole ARP.