Qu’est-ce que le protocole ARP ?
Sommaire
I. Présentation
Dans cet article, nous vous présentons ARP, un protocole discret mais indispensable à toute communication sur le réseau local. Comment fonctionne l'ARP ? À quoi sert le protocole ARP ? Réponse dans cet article.
Commençons par noter que ce protocole se situe au niveau de la couche 2 du modèle OSI et qu’il a été décrit dans le RFC 826 (An Ethernet Address Resolution Protocol) en novembre 1982 et également dans le RFC 5227 (IPv4 Address Conflict Detection) en juillet 2008.
Par ailleurs, le rôle du protocole ARP est très lié à l’adresse MAC que possèdent chaque interface des équipements et des systèmes d’un réseau. Voici un article dédié à l’adresse MAC :
Version originale de l'article : 25 mars 2014
II. Introduction au protocole ARP : rôle et importance
Nous pouvons voir le protocole ARP comme celui d’un “traducteur” entre les adresses IP, utilisées par les applications et les protocoles de couche réseau, et les adresses MAC, utilisées par les interfaces réseau pour envoyer des trames Ethernet. Sans ARP, un ordinateur ne pourrait pas envoyer de données à un autre sur un réseau local, car il ne saurait pas quelle adresse MAC utiliser.
Imaginez un réseau local comme un immeuble où chaque appartement a une adresse IP (ex : 192.168.1.10) et une adresse MAC (ex : 00:1A:2B:3C:4D:5E). Pour envoyer un paquet à un voisin, il faut connaître son adresse MAC. Le protocole ARP permet de demander à tous les voisins (broadcast) : “Qui a l’adresse IP 192.168.1.10 ?” et d’obtenir la réponse avec l’adresse MAC correspondante.
ARP est donc un protocole de couche 2 qui permet la résolution dynamique des adresses IP en adresses MAC.
Pourquoi l’adresse IP ne suffit pas à envoyer un paquet à un autre système ? Pour mieux comprendre le rôle du protocole ARP, 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 tous les paquets réseau, 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.
Attention, pour l’instant, nous parlons de la constitution d’une trame Ethernet, pas encore d’un paquet ARP.
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. Il s’agit de l'identifiant unique d'une carte réseau, formé sur 48 bits (6 octets).
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)
Pour illustrer cette nécessité de connaitre l’adresse MAC du destinataire afin de constituer un paquet complet (quel que soit le protocole), voici un exemple de paquet SSH récupéré via Wireshark :

Bien qu’il s’agisse d’un échange SSH, on retrouve bien les différentes couches du modèle OSI dans ce paquet, incluant :
- En couche 2 : la trame Ethernet, qui contient l’adresse MAC destination et source des équipements sur le réseau local
- En couche 3 : IP (Internet Protocol), qui lui discute avec les adresses IP et peut donc sortir du réseau local
- En couche 4 : TCP, pour l’établissement des sessions et l’organisation des échanges sur plusieurs paquets
- En couche 5 : SSH
On visualise bien que sans connaissance des adresses MAC source et destination des composants du réseau local, on ne peut pas construire un paquet complet et fonctionnel.
Problème : si un poste veut communiquer pour la première fois avec sa passerelle (ou un autre équipement du réseau local), comment obtient-il l’adresse MAC du destinataire ? Réponse : Grâce au protocole ARP.
III. Fonctionnement détaillé du protocole ARP
Nous allons à présent décrire le fonctionnement et l’usage du protocole ARP pour résoudre l’adresse MAC liée à une adresse IP. Nous nous aiderons pour cela de Wireshark pour avoir des exemples et des différents types de paquets d’un échange ARP. Nous allons pour cela nous situer au sein du réseau suivant :

La machine A vient d’arriver sur le réseau, possède une adresse IP et souhaite communiquer avec son voisin du réseau local : la machine B. Si nous souhaitons utiliser le protocole SSH pour cet échange, le système de la machine A doit construire un paquet complet incluant Ethernet, IP, TCP, et SSH. L’adresse IP cible est renseignée par l’utilisateur lorsqu’il saisit sa commande, par exemple :
# Machine A, connexion SSH vers machine B
ssh [email protected]
Mais pour l’adresse MAC ? Lorsque j’exécute ma commande ssh, je constate que mon système va de lui-même effectuer l’échange réseau suivant :

C’est cet échange que nous allons analyser. Constatant qu’il ne connait pas l’adresse MAC liée à l’adresse IP qu’il souhaite atteindre (192.168.56.118), mon système décide de poser la question à ses voisins du réseau local.
A. Requête ARP (ARP Request)
Une ARP Request est donc un paquet envoyé en broadcast et qui pose la question suivante : “Qui a l’adresse IP 192.168.56.118 ?”. Tous les hôtes du réseau local reçoivent cette requête et ceux qui connaissent la réponse peuvent alors lui répondre directement. Seul le système possédant cette adresse IP ou un voisin l’ayant déjà résolue va répondre. Voici un exemple de ce à quoi ressemble une ARP Request dans Wireshark :

Dans la première partie de la trame (couche 2), on remarque que la destination du paquet en est broadcast, car l'émetteur ne connait pas l'adresse MAC du destinataire. Dans la seconde partie, nous remarquons que le paquet ARP a un type "request" (opcode 1). Nous pouvons ensuite remarquer l'adresse MAC et l'adresse IP de l'émetteur, puis du destinataire où l'on voit que l’on identifie bien l'adresse IP, mais l'adresse MAC est inconnue.
Suite à la réception de cette ARP request par chacun des hôtes du réseau, chacun va regarder son adresse MAC ou le contenu de sa table ARP pour voir s’il s’agit de sa propre adresse MAC, ou s’il connait la réponse. Auquel cas, une réponse est formulée par une ARP Reply.
B. Réponse ARP (ARP Reply)
Au sein d’une ARP Reply, l’hôte B répond en unicast : "C’est moi, voici mon adresse MAC !" :

Nous voyons ici l’opcode à 2 (reply) ainsi que les adresses MAC et IP de l’hôte B. Ce paquet cible alors l’hôte A.
C. Cache ou table ARP
La table ARP, plus souvent appelée cache ARP, est un tableau dans lequel les systèmes stockent localement les correspondances MAC-IP qu'ils ont vu passer sur le réseau ou qu'ils ont eux-mêmes résolues. Cette table va permettre de fluidifier et d’accélérer les prochains échanges avec les émetteurs enregistrés en évitant d'effectuer une requête ARP à chaque échange. Voici un exemple de table ARP sous Windows :

Les enregistrements de la table ARP possèdent un délai d’expiration (timeout), ce qui évite de préserver des enregistrements obsolètes trop longtemps. Ce délai d’expiration est généralement de quelques minutes.
IV. Commandes utiles pour gérer ARP
Voici quelques commandes utiles pour découvrir et gérer votre cache ARP sous Windows et Linux :
Sous Windows
# Afficher la table ARP locale.
arp -a
# Supprimer une entrée du cache.
arp -d <IP>
# Ajouter une entrée statique.
arp -s <IP> <MAC>
# Vider la table ARP
arp -d
Sous Linux
# Afficher la table ARP locale.
arp -a
# Supprimer une entrée du cache.
arp -d <IP>
# Ajouter une entrée statique.
arp -s <IP> <MAC>
# Vider la table ARP
ip -s -s neigh flush all
V. Sécurité : attaques ARP et protections
Cette section vise à vous informer des risques de sécurité liés à ARP, elle peut être un peu avancée si vous débutez, donc ne vous attardez pas trop dessus pour l’instant. L’important étant d’être conscient que des attaques exploitent ce protocole et que des mécanismes existent pour s’en protéger.
Attaques courantes
- ARP Spoofing : Un attaquant envoie de fausses réponses ARP pour rediriger le trafic (ex : attaque MITM). Et oui, au sein du protocole ARP, pas d’authentification, n’importe qui peut répondre à la question “Qui possède l’adresse IP X.X.X.X” au sein du réseau local.
- Gratuitous ARP : Envoi de réponses ARP non sollicitées pour empoisonner les caches. Exploite notamment les équipements qui enregistrent par défaut toutes les résolutions ARP qu’ils voient passer sur le réseau
Solutions de protection
- Entrées ARP statiques : Configurer manuellement les correspondances IP-MAC.
- Inspection Dynamique ARP (DAI) : Fonctionnalité des switchs pour bloquer les réponses ARP non valides.
- Outils de surveillance : Arpwatch, XArp, ou Wireshark pour détecter les anomalies.
VI. Conclusion
Les réseaux locaux ne pourraient pas fonctionner sans le protocole ARP, il assure la traduction entre adresses IP et MAC. Bien que simple, son bon fonctionnement est vital pour la connectivité. Rappelons que lorsque l’on vise un système en dehors de notre réseau local, on voit avant tout passer par la passerelle de notre réseau. C'est alors l’adresse MAC de cette passerelle qui est utilisée au sein des trames Ethernet.
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.
FAQ
Qu'est-ce que le protocole ARP ?
ARP (Address Resolution Protocol) permet de trouver l’adresse MAC associée à une adresse IP sur un réseau local. Sans ARP, les appareils ne pourraient pas communiquer entre eux, même s’ils connaissent leur adresse IP.
Comment est alimenté le cache ARP (ou table ARP) ?
Votre cache ARP peut contenir des entrées dynamiques apprises automatiquement lors de l’écoute du trafic réseau, ou des entrées statiques ajoutées par des applications ou des attaques (comme l’ARP Spoofing). Les entrées dynamiques expirent après quelques minutes.
Quelle est la différence entre ARP et NDP ?
ARP est utilisé en IPv4, tandis que NDP (Neighbor Discovery Protocol) est son équivalent en IPv6. NDP est plus sécurisé et inclut des fonctionnalités comme la détection automatique des voisins.
Comment vider le cache ARP sur Windows et Linux ?
Sous Windows : utilisez la commande arp -d pour supprimer une entrée, ou arp -d * pour tout vider.
Sous Linux : utilisez ip -s -s neigh flush all ou arp -d <adresse_IP>.


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.