Pour mes étudiants

Le protocole ARP

Définition et rôle

Le protocole ARP (Address Resolution Protocol) permet de connaître l’adresse physique d’une carte réseau correspondant à une adresse IP. Pour établir cette correspondance, le protocole ARP interroge les machines du réseau pour connaître leurs adresses physiques et crée ainsi une table de correspondance entre les adresses logiques et les adresses physiques dans une mémoire cache appelée table ARP.

Lorsqu’une machine veut communiquer avec une autre, elle consulte la table ARP. Au cas où l’adresse demandée ne se trouve pas dans la table, le protocole ARP émet une requête ARP, également appelée broadcast ARP, sur le réseau (Adresse de broadcast ff.ff.ff.ff.ff.ff). Chacune des machines du réseau compare cette adresse logique à la sienne. La machine qui s’identifie à cette adresse, répond en donnant son adresse MAC. La correspondance adresse IP-adresse MAC est alors stockée dans la table ARP et la communication s’établit entre les deux machines.

La table ARP est dite dynamique car elle est régulièrement mise à jour. La correspondance adresses (IP- MAC) est effacée si au bout de deux minutes environ, il n y a pas eu de dialogue avec cette adresse.

Soit la topologie réseau de la figure 1 suivante :

Scénario : La machine PC 1 envoie un message à la machine PC 6.

En traversant le modèle OSI de la couche application (couche 7) vers la couche physique (couche 1), on passe par la couche 3 qui voit que PC 1 veut envoyer un paquet à la machine PC 6.Elle va chercher dans sa table de routage par où il faut passer pour joindre PC 6.

Pour joindre la machine PC 6, il faut d’abord joindre le réseau 192.168.1.0 auquel appartient la machine PC 6 d’adresse IP 192.168.1.6. La table de routage lui indique qu’il faut envoyer le paquet à l’adresse 192.168.0.254. Pour envoyer la trame à l’interface d’adresse IP 192.168.0.254, il faut connaitre son adresse MAC or PC 1 ne connait pas cette adresse MAC.

Alors comment faire ?

Le protocole ARP nous dit comment faire pour envoyer un message à une machine sur notre réseau sans connaitre son adresse MAC.

En considérant toujours le scenario précédent, une requête ARP va être envoyée sur l’adresse de broadcast demandant « Est-ce que 192.168.0.254 peut m’envoyer son adresse MAC ?« 

Grâce à l’adresse de broadcast, la requête est envoyée à toutes les machines du réseau 192.168.0.0/24. L’interface d’adresse IP 192.168.0.254 le reçoit et répond à la requête en renvoyant son adresse MAC.

1. La machine PC 1 forme la trame de la figure 2 et l’envoie dans le réseau :

Remarque : L’adresse de destination est bien celle de PC 6 et non celle du routeur.

2. Le switch du réseau 192.168.0.0/24 reçoit la trame, lit l’adresse MAC de destination et consulte sa table CAM. Si l’adresse MAC ne s’y trouve pas, il la renvoie sur tous ses ports actifs. La trame arrive sur le port de sortie du switch où est connecté le routeur. Le routeur reçoit la trame.

3. La trame arrive à la couche 2 du routeur qui compare l’adresse MAC de destination et trouve qu’elle est la sienne. Elle enlève l’en-tête Ethernet et envoie le datagramme IP au protocole de couche 3 indiqué dans l’en-tête. La couche 3 lit l’entête de couche 3 et, en particulier, l’adresse IP de destination. Le routeur voyant que ce n’est pas son adresse, sait qu’il doit route le datagramme vers la machine de destination. Il cherche dans sa table de routage à quelle passerelle envoyer le paquet pour joindre la machine PC 6 d’adresse IP 192.168.1.6.Puisque cette adresse appartient à l’un de ses réseaux, il va pouvoir lui envoyer le paquet .Toutefois, il n’a pas son adresse MAC. Pour obtenir cette adresse, Il fait une requête ARP « Est-ce que 192.168.1.6 peut m’envoyer son adresse MAC ? ».Lorsque le routeur reçoit l’adresse MAC de 192.168.1.6, il forme la trame de la figue 3 et l’envoie dans le réseau.

Remarque : L’adresse MAC source n’est plus celle de PC 1 mais celle du routeur 1. En effet, les adresses MAC dans une trame sont obligatoirement celles du réseau sur lequel la trame est en train de circuler.

4. La trame arrive au switch du réseau 192.168.1.0/24 qui regarde l’adresse MAC de destination et aiguille la trame vers la machine 192.168.1.6.

5. La machine 192.168.1.6 va recevoir la trame en couche 2, lit l’adresse MAC de destination et trouve qu’elle est la sienne. Elle lit la suite de l’en-tête et renvoie le datagramme à la couche 3 qui a son tour reçoit ce datagramme, lit l’en-tête et trouvant que l’adresse IP de destination est la sienne, elle envoie les informations à la couche 4, qui les envoie à la couche 7.