ARP (Adress Resolution Protocole)
1 - Définition du protocole
Le protocole Arp, fonctionne en couche Internet du modèle TCP/IP correspondant à la couche 3
(couche IP ou couche réseau) du modèle OSI. L'objectif de Arp est de permettre la résolution d'une
adresse physique par l'intermédiaire de l'adresse IP correspondante d'un hote distant. Le protocole
Arp apporte un mécanisme de « translation » pour résoudre ce besoin.
Le protocole ARP est normalisé RFC 826 "An Ethernet Address Resolution Protocol". Un
complément est sortie en juillet 2008 avec la RFC 5227 "IPv4 Address Conflict Detection".
2 - Structure de l'entête
Voici l'entête du protocole ARP dans le cadre spécifique d'Ip sur Ethernet.
3 - Définition des différents champs
3.1 – Type de matériel
Ce champs est placé en premier afin d'indiquer quel est le format de l'entête Arp. Voici les différentes
valeurs possibles.
- 01 - Ethernet (10Mb) [JBP] - 17 - HDLC [JBP]
- 02 - Experimental Ethernet (3Mb) [JBP] - 18 - Fibre Channel [Yakov Rekhter]
- 03 - Amateur Radio AX.25 [PXK] - 19 - Asynchronous Transmission Mode (ATM) [RFC2225]
- 04 - Proteon ProNET Token Ring [Doria] - 20 - Serial Line [JBP]
- 05 - Chaos [GXP] - 21 - Asynchronous Transmission Mode (ATM) [MXB1]
- 06 - IEEE 802 Networks [JBP] - 22 - MIL-STD-188-220 [Jensen]
- 07 - ARCNET [JBP] - 23 - Metricom [Stone]
- 08 - Hyperchannel [JBP] - 24 - IEEE 1394.1995 [Hattig]
- 09 - Lanstar [TU] - 25 - MAPOS [Maruyama]
- 10 - Autonet Short Address [MXB1] - 26 - Twinaxial [Pitts]
- 11 - LocalTalk [JKR1] - 27 - EUI-64 [Fujisawa]
- 12 - LocalNet (IBM PCNet or SYTEK LocalNET) [JXM] - 28 - HIPARP [JMP]
- 13 - Ultra link [RXD2] - 29 - IP and ARP over ISO 7816-3 [Guthery]
- 14 - SMDS [GXC1] - 30 - ARPSec [Etienne]
- 15 - Frame Relay [AGM] - 31 - IPsec tunnel [RFC3456]
- 16 - Asynchronous Transmission Mode (ATM) [JXB2] - 32 - InfiniBand (TM) [Kashyap]
- 33 - TIA-102 Project 25 Common Air Interface (CAI)
On remarquera tout particulièrement que le numéro 1 qui le plus fréquents. En effet ces architectures
sont principalement utilisées dans les réseaux d'entreprises, Wifi, et Metro.
3.2 – Type du protocole
Ce champs indique quel est le type de protocole couche 3 qui utilise Arp. Voici la valeur propre à Ip.
- 0x0800 - IP
3.3 – Taille de l’adresse physique
Ce champ correspond à la longueur de l'adresse physique. La longueur doit être prise en octets. Voici
des exemples de valeurs courantes.
- 01 - Token Ring - 06 - Ethernet
3.4 – Taille de l’adresse logique
Ce champ correspond à la longueur de l'adresse réseau. La longueur doit être prise en octets. Voici
des exemples de valeurs courantes.
- 04 - IP v4
- 16 - IP v6
3.5 - Operation
Ce champ permet de connaître la fonction du message et donc son objectif. Voici les différentes
valeurs possibles.
- 01 - Request [RFC 826] - 02 - Reply [RFC 826]
3.6 – Adresse physique de l’émetteur
Ce champ indique l'adresse physique de l'émetteur. Dans le cadre spécifique d'Ethernet, cela
représente l'adresse Mac source.
3.7 – Adresse logique de l’émetteur
Ce champ indique l'adresse réseau de l'émetteur. Dans le cadre spécifique de TCP/IP, cela
représente l'adresse Ip de source.
3.8 – Adresse physique du destinataire
Ce champ indique l'adresse physique du destinataire. Dans le cadre spécifique d'Ethernet, cela
représente l'adresse Mac destination. Si c'est une demande Arp, alors, ne connaissant justement pas
cette adresse, le champs sera mis à 0.
3.9 – Adresse logique de destinataire
Ce champ indique l'adresse réseau du destinataire. Dans le cadre spécifique de TCP/IP, cela
représente l'adresse Ip de destination.
4 - Fonctionnement
Pour envisager une discussion entre deux hôtes se situant dans le même réseau, les deux hôtes
doivent avoir connaissance des adresses physiques des machines avec lesquelles elles discutent. De
ce mécanisme découle une table de conversion contenant à la fois les adresses Ip et Mac.
L'alimentation de cette table peut s'effectuer de deux manières, automatique via Arp ou manuelle via
l'administrateur. Si les deux hôtes n'ont jamais discuté ensemble la table ARP est vide.
La machine source ne connaissant pas l'adresse physique de la machine destinatrice, celle-ci va
émettre une trame Broadcast de niveau 2 s'adressant à toutes les hôtes du réseau, comportant sa
propre adresse physique et la question demandée. Puis, l'hôte de destination va se reconnaître et
répondre en Unicast.
4.1 – Requète Arp
La question de type Arp Request se présente sous cette forme : "Je suis l'hôte « 00 08 54 0b 21 77»,
Est-ce que l'hôte possédant l'adresse Ip 192.168.0.1 peut me retourner son adresse physique ?".
Voici la traduction de cette requête saisie grâce au logiciel Wireshark.
4.2 – Réponse Arp
L'hôte destinataire qui va se reconnaître va pouvoir d'un coté alimenter sa table de conversion et
répondre à l'hôte source en envoyant une trame comportant son adresse physique. Voici la traduction
de cette réponse saisie grâce à WireShark.