Qu’est ce que l’ARP ?

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 adresse MAC. En plus simple, c'est un protocole qui permet de retrouver un 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 faites les entêtes des trames Ethernet (couche 2 du modèle OSI) :

Trame Ethernet
Trame Ethernet - On voit donc ici les positions des adresses MAC source et destination dans les trames Ethernet ce qui explique qu'on doit résoudre l'adresse MAC à partir de l'IP

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 48bits (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 paquets.

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 un 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 :

Protocole ARP
Analyse ARP lors de la première communication entre deux machines

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 :

ARP02

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 un 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'IP mais la MAC est inconnue. Si on regarde la réponse de plus près :

ARP03On 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 tables 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ême 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 :

Table/ Cache ARP
Table/ Cache ARP sous Windows

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Mickael Dorigny

Co-fondateur d'IT-Connect.fr. Auditeur/Pentester chez Orange Cyberdéfense.

Nombre de posts de cet auteur : 523.Voir tous les posts

9 thoughts on “Qu’est ce que l’ARP ?

  • 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

    Répondre
  • Bonjour,

    Serait-il possible de disposer d’une version PDF ? 🙂

    Répondre
    • Bonjour Clement,

      Tu peux imprimer la page en PDF (pdfcreator / Adobe PDF) ou il y a des sites en ligne directement pour ça 🙂

      Florian

      Répondre
  • 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.

    Répondre
  • je tiens vraiment a vous remercier vos tuto sont génial !

    Répondre
  • 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

    Répondre
  • Bonjour à tous
    Svp qu’est ce qui se passe lorsque la table arp est pleine?
    Merci d’avance.

    Répondre

Répondre à bibou Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.