Qu’est-ce que le protocole ARP ?
Sommaire
I. Présentation
L'ARP ou "Address Resolution Protocol" est un protocole qui se situe sur la couche 3 du modèle OSI. On l'assimile parfois à un protocole de couche 2 et demi, car il assure la liaison entre le protocole IP qui utilise les adresses IP pour construire ses paquets et les trames Ethernet qui elles utilisent les adresses MAC. En plus simple, c'est un protocole qui permet de retrouver une adresse MAC à partir d'une adresse IP. Le protocole ARP a été décrit dans le RFC 586 (An Ethernet Address Resolution Protocol) en novembre 1982 et également dans le RFC 5227 (IPv4 Address Conflict Detection) en juillet 2008.
II. Protocole de résolution des adresses (IP - MAC)
Pour comprendre le rôle du protocole ARP au sein des réseaux, il est important de se rappeler la façon dont sont construits les entêtes des trames Ethernet (couche 2 du modèle OSI) :
Les trames Ethernet, qui sont forcément présentes dans toutes les trames, ont besoin de connaitre l'adresse MAC de l'émetteur et celle du destinataire pour se former. Avant toute communication utilisant un protocole TCP/IP ou supérieur, on doit donc auparavant savoir quelle est l'adresse MAC du destinataire.
Pour rappel, l'adresse MAC est l'identifiant unique d'une carte réseau formé sur 48 bits (6 octets), voici un exemple d'adresse MAC : 8d:4a:65:05:78:45. On appelle souvent l'adresse MAC d'une carte réseau son "adresse physique" car, contrairement à l'adresse IP, elle est liée à la carte réseau physique.
Note : Lorsque le destinataire est hors du réseau dans lequel on se trouve (hors de la plage IP de notre réseau), il faut comprendre que l'adresse MAC destinataire recherchée est celle de la passerelle et non celle du destinataire réel. Le but étant d'envoyer nos paquets IP à celui-ci qui, de toute façon, réécrira les adresses MAC sources et destinataires de chaque paquet.
Comme dit précédemment, avant toute communication utilisant un protocole TCP/IP ou supérieur, la carte réseau va mettre cette communication en attente afin de chercher à savoir l'adresse MAC du destinataire afin de pouvoir former les entêtes Ethernet de ces trames. Pour cela, elle va générer une requête ARP que nous allons détailler.
En IPv6, le protocole équivalent du protocole ARP est le protocole NDP (Neighbors Discovery Protocol)
III. ARP reply/response
On va à présent analyser une requête ARP et sa réponse pour essayer de comprendre un peu plus le protocole. On dispose donc de deux VM sur un réseau privé, on va établir une communication (ping) entre les deux et analyser ce qu'il se passe avec un renifleur réseau (Wireshark) sur l'un des deux :
On voit donc qu'avant d'effectuer le ping comme demandé, le PC émetteur (ici avec l'IP 192.168.29.130) se rend compte qu'il n'a pas l'adresse MAC du destinataire dans sa table ARP (un cache ARP que nous allons détailler un peu plus tard). Il stop alors les paquets ICMP à envoyer pour effectuer une requête ARP (ARP request) que l'on voit ici en ligne 1. On remarque qu'il demande "qui est 192.168.23.29, demande 192.168.23.130", 192.168.23.129 étant l'adresse IP de l'autre PC. En ligne 2, on remarque que le PC répond en disant "je suis 192.168.23.129 et j'ai l'adresse MAC 00:0c:29:ac:44:ca". Le PC émetteur va alors pouvoir former ses trames Ethernet et ses paquets ICMP puis les envoyer.
On remarque d'ailleurs que l'émetteur, identifié par son adresse MAC (Vmware_4c:a4:41) lance sa requête ARP en Broadcast. Si on analyse la requête ARP de plus près :
Dans la première partie de la trame (couche 2), on remarque donc la destination du paquet en broadcast, car l'émetteur ne connait pas l'adresse MAC du destinataire. Il signe avec son adresse MAC source. On voit ensuite le type du protocole de la couche suivante (ARP soit 0x0806). Dans la seconde partie, on voit le paquet ARP avec un type "request". On voit donc l'"Opcode" qui est à 1, ce qui identifie une requête ARP. On voit ensuite l'adresse MAC et IP de l'émetteur puis du destinataire où l'on voit qu'on identifie bien l'adresse IP, mais l'adresse MAC est inconnue. Si on regarde la réponse de plus près :
On voit donc ici dans cette réponse la même structure que dans la "question". On remarque l'Opcode dans la couche 3 qui est devenu "reply". On voit également que les champs d'adresse MAC sont remplis et donc que les deux partis vont pouvoir incrémenter leur table ARP. Connaissant maintenant l'IP et l'adresse MAC de sa passerelle, le PC émetteur va pouvoir former correctement ses paquets et ses trames afin de communiquer.
IV. Table ARP/Cache ARP
La table ARP, plus souvent appelée cache ARP est un tableau dans lequel les ordinateurs, serveurs et éléments actifs vont stocker les résolutions MAC - IP qu'ils ont vu passer sur le réseau ou qu'ils ont eux-mêmes résolus via des requêtes ARP. Cette table va permettre de fluidifier et d’accélérer les prochains échanges avec les émetteurs enregistrés en évitant de reproduire une requête ARP à chaque échange. Voici un exemple de table ARP sous Windows :
V. Conclusion
Suite à la lecture de cet article, vous devriez être en mesure de mieux comprendre le fonctionnement du protocole ARP. En complément, nous vous recommandons fortement de lire notre article sur les adresses MAC.
l’adresse ip de la machine interrogée dans la capture wireshark c’est plusto » qui est 192.168.23.129″ au lieu de 192.168.23.29
Bonjour,
Serait-il possible de disposer d’une version PDF ? 🙂
Bonjour Clement,
Tu peux imprimer la page en PDF (pdfcreator / Adobe PDF) ou il y a des sites en ligne directement pour ça 🙂
Florian
Bonjour,
Pour un premier commentaire, je vais commencé en vous remerciant pour le travail effectué sur d’IT-Connect.fr et d’Information-security.fr 😉
Ensuite, une question à laquelle je ne trouve pas de réponse, qu’est-ce que ceci : Interface 192.168.1.20 —0x4 (—0xb, —0x17, etc…) ?
Ces derniers caractères ne me parlent pas…
Merci à vous.
Piccolux.
je tiens vraiment a vous remercier vos tuto sont génial !
Bonjour tout le monde , s’il vous plait je veux une réponse ? Et merciii .
Exercice:
_ À l’aide d’un logiciel de capture de trames, on a capturé la trame
Ethernet ci-dessous qui encapsule un paquet ARP (la trame est donnée sans préambule ni CRC).
——————————————————————————-
FF FF FF FF FF FF 00 60 08 61 04 7B 08 06 00 01
08 00 06 04 00 01 00 60 08 61 04 7B CA 08 9E 06 00 00 00 00 00 00 9C DB 08 06
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
——————————————————————————
1)
a)À partir de la trame, extraire :
Adresse Mac source :
Adresse Mac destination :
b)Déterminer l’opération ARP réalisée par cette trame (requête ou réponse) ? (justifier votre réponse
Salut,
Merci .
Bonne journée !
tres bon article
Bonjour à tous
Svp qu’est ce qui se passe lorsque la table arp est pleine?
Merci d’avance.