Principe de résolution des adresses : Le protocole ARP


Le protocole ARP (RFC 286) est un protocole associé à la couche liaison de données du modèle OSI ou à la couche Accés Réseau du modèle TCP/IP.
Bien que ARP soit encapsulé dans Ethernet, ce protocole appartient à la même couche. ARP ne peut pas être considéré comme un protocole appartenant à la couche Réseau car la requête s'effectue en diffusion et ne passe donc pas à travers un routeur.

1) Rôle du protocole ARP:
Le rôle du protocole ARP est de fournir un moyen de connaître l’adresse physique (adresse MAC: numéro de la carte Ethernet) d’une machine alors qu’on ne connaît que son adresse logique (adresse IP): Résoudre une adresse physique.
En effet la connaissance de l’adresse physique (MAC) du destinataire est le seul moyen de pouvoir communiquer sur un réseau local.


2) Recherche des adresses MAC:

Le PC1 veut communiquer avec le PC3. Le PC1 envoie une trame de diffusion générale (broadcast). Chacune des stations présentes examine cette requête de diffusion, et le PC3 renvoie , en unicast au PC1, une trame ARP de réponse contenant son adresse réseau(MAC). Le dialogue peut alors commencer. L’adresse correspondante est stockée en dynamique dans une table de résolution.



Dans la version IPv6, les protocoles ARP et RARP ne sont plus utilisés et sont remplacés par un protocole de découverte des voisins, appelé ND (Neighbor Discovery), qui est un sous-ensemble du protocole de contrôle ICMP, que nous examinerons ultérieurement.


3) Cache ARP:
Pour éviter de surcharger le réseau de requêtes ARP, chaque machine gère un cache ARP (ou table de cache ARP) c’est à dire un espace mémoire dans lequel est enregistrée une table comportant l’ensemble des correspondances @physique⇔@IP des autres machines appartenant au même réseau logique qu’elle.

Cette table est alimentée, par défaut, dynamiquement. En effet, chaque fois qu’une machine A reçoit, en provenance d’une machine B, une requête ARP lui étant destinée, non seulement A renvoie une réponse avec sa propre adresse physique mais en profite pour mettre à jour, dans sa table de cache ARP, l’enregistrement (la ligne de correspondance @physique de B ⇔ @IP de B) relatif à B.
Les caches ARP peuvent également être alimentés manuellement.

4) TimeOut:
Pour s’assurer de la validité des informations contenues dans sa table ARP, une machine retire de sa table toute entrée correspondant à une machine dont elle n’a pas reçu de trame depuis un certain temps. Ce certain temps est le timeout et vaut dans la plupart des cas 15 minutes.
La valeur du timeout peut être modifiée en fonction de l’implémentation de la pile TCP/IP dans le système d’exploitation présent sur la machine.


5) Pas de Routage des trames ARP:

Les paquets ARP ne sont pas encapsulés par le protocole IP mais dans des trames de protocoles de couche Liaison de données (couche 2 OSI ou couche 1 du modèle TCP/IP). On a donc une encapsulation Ethernet et non pas une encapsulation IP.
Or le routage est une opération qui s’effectue au niveau des paquets IP (couche 3 OSI ou couche 2 du modèle TCP/IP).

Les trames ARP ne sont donc pas routables, c’est à dire qu’elles ne peuvent pas traverser un routeur.
Pour cette raison, une requête ARP n’a de sens que si une machine A souhaite contacter une machine B qui se trouve
sur le même réseau logique que A. Les machines A et B doivent donc se situer sur des réseaux d’adresse logique.


6) Résolution des adresses pour des stations placées dans des sous-réseaux différents :

La station consulte sa table de routage et à l'aide du masque réalise que la station destinataire appartient à un sous-réseau différent. Si son cache est vide elle fait une requête ARP pour déterminer l'adresse physique du routeur( passerelle par défaut) puis lui transmet l'information. Le routeur du côté du sous-réseau destinataire réalise une résolution ARP afin de connaître l'adresse MAC ded la station destinataire.


7) Commandes:

arp -av permet d’afficher, en mode verbeux, toutes les entrées du cache ARP

arp -nv idem mais nom d’hôte en mode numérique.

arp -d <nom_hôte> permet de supprimer l’entrée relative à nom_hôte

arp -s <nom_d_hôte> <hw_addr> ajoute une entrée dans la table ARP pour la machine nom_d_hôte (peut être une adresse IP) et dont l’adresse physique vaut hw_addr


8)
Le protocole RARP

Le RARP est utilisé par des NetWork Computers (machines sans disque dur), qui ont une MAC@, mais ne connaissent pas leur propre iP@.Dans ce cas, ces machines interrogent un serveur spécialisé. Les trames RARP ont le même format que les trames ARP. Dans une trame Ethernet, le protocole RARP est désigné par: 0x0835



9)
Encapsulation dans une trame Etherne ARP : Le type de trame sera 0x0806






En-tête ARP

Hardware type : 0x0001: Ethernet

Protocol Type: 0x0800 - IP :indique quel protocole utilise ARP

Hardware Address Length : 01 - Token Ring    06 - Ethernet

longueur en octets


Protocol Address Length
: 04 - IP v4


Différences entre Trame de requête et Trame de réponse:

Soit une machine A émettant une requête ARP pour découvrir l’adresse physique d’une machine B.

champ Opcode

champ @ physique de l’émetteur

champ @ logique de l’émetteur

champ @ physique du destinataire

champ @ logique du destinataire



10) Déroulement de l'envoi d'une requête ARP:



Une machine A souhaite connaître l’adresse physique d’une machine B située sur le même réseau logique que A:





Sur la figure, on distingue bien d’une part l’en-tête Ethernet et d’autre part le paquet ARP.
Remarques:

Si on compte le nombre d’octets, chaque groupe de 2 chiffres hexadécimaux représentant un octet, on trouve 42 octets. Or une trame doit faire au moins 64 octets.
Les octets manquants sont:



Particularités:

Lorsqu’on capture le trafic réseau, à l’aide d’un logiciel tel que Ethereal, on peut être amené à capturer deux types particuliers de trame ARP.



Autre exemple:











BTS Informatique

Introduction aux réseaux en BTS IRIS

Spoofing APR