Les protocole ARP (Adress Resolution Protocol)
et RARP (Reverse ARP)

 

Menu

 
               
                A.   Le protocole ARP
  
     Le protocole IP a principalement comme fonction de router et adresser les machines. Seulement le routage n’est envisageable qu’avec le support d’un protocole de la couche Réseau, puisqu’une adresse IP n’a de sens que pour le protocole IP. En effet, la couche Réseau ne sait absolument pas gérer la transmission d’un datagramme vers une adresse IP. Cette couche ne peut transmettre les datagrammes que vers une adresse MAC (nous avons vu précédemment que tout élément actif d’un réseau : carte réseau, switch, router, passerelle… possédait une adresse MAC). Or le problème devant lequel nous sommes est de taille : nous connaissons souvent les adresses IP vers lesquelles nous voulons envoyer des données, mais jamais les adresses physiques (MAC). Il nous faut donc un moyen pour obtenir l’adresse MAC d’une machine (sa carte réseau) à partir de son adresse IP. C’est le rôle du protocole ARP, qui va effectuer la correspondance en toute transparence.
 
Le protocole ARP possède ses propres datagrammes avec son en-tête. Cet en-tête est encapsulé directement au dessus de la couche Accès réseau (Ethernet). Bien que l’en-tête ARP soit dans un en-tête Ethernet, nous considérerons ARP du niveau Accès Réseau, car sa tâche est belle est bien de permettre l’accès au réseau (connecter les périphériques entre eux par les adresses MAC) et ne sert en aucun cas à effectuer des tâches de niveau supérieur (comme le routage qui est réservé à IP). Etudions-le :
 
 
 
 
 
Quelles sont les informations contenues dans un datagramme ARP ?
Ø      HARDWARE TYPE : ce champ va contenir le type d’adresses physiques utilisées dans les champs SENDER HA (pour l’émetteur du datagramme) et TARGET HA (pour le récepteur du datagramme). Dans notre cas pour des adresses MAC (Ethernet) ce champ vaudra 1.
Ø      PROTOCOL TYPE : ce champ va contenir le type d’adresses logiques utilisées dans les champs SENDER ADR (adresse de l’émetteur) et TARGET ADR (adresse du récepteur). Dans notre cas, l’adressage logique utilisé est l’adressage IP : ce champ vaudra 0x0800 (hexadécimale).
Ø      HLEN 1 : pour spécifier la taille de l’adressage physique : 6 octets pour Ethernet.
Ø      HLEN 2 : pour spécifier la taille de l’adressage logique : 4 octets pour IP.
Ø      OPERATION : ce champ sert à différencier les requêtes des protocoles ARP et RARP : ce second protocole dont nous allons étudier le fonctionnement plu tard, partage avec ARP le même en-tête :
                                        
                                         Question          Reply
                  ARP :                   1                      2
                  RARP :                 3                      4
 
Ø      SENDER HA : adresse physique de l’émetteur.
Ø      SENDER ADR : adresse logique de l’émetteur.
Ø      TARGET HA : adresse physique du destinataire.
Ø      TARGET ADR : adresse logique du destinataire.
 
Remarque : Pour rendre la lecture plus aisée, nous avons colorés les champs représentant la même entité. En effet, alors qu’une adresse IP est codée sur 32 bits (4 octets), une adresse MAC est codée sur 48 bits (6 octets). C’est pour cela que les champs colorés ne sont pas sur des lignes complètes.
 
Le fonctionnement va donc être le suivant :
Ø      Nous sommes sur un réseau local (le protocole ARP gérant les connections physiques entre machines directement reliées entre elles, il ne peut franchir les routeurs). La machine A veut communiquer avec B. Seulement elle ne connaît pas son adresse MAC.
Ø      A va envoyer sur le réseau un datagramme « ARP QUESTION » avec son adresse physique, à destination du broadcast physique (comme pour le broadcast IP, tous les bits sont à 1). Cela va correspondre à l’adresse : ff :ff :ff :ff :ff :ff en hexadécimale. L’adresse logique de l’émetteur sera celle de A, et celle du récepteur celle de B. Cette opération signifie : « Est-ce que l’ordinateur ayant l’adresse IP X.X.X.X pourrait m’envoyer son adresse MAC ? »
Ø      B va alors répondre à A directement par une « ARP Reply », en lui donnant son adresse physique.
Ø      A va mémoriser la correspondance MAC/IP dans sa « table ARP », et va pouvoir communiquer avec B.
 
Pour mémoriser les adresses dernièrement utilisées, le protocole ARP possède une table. Le contenu de cette table peut être connu sous UNIX ou DOS par la commande ‘arp –a’.
 
Il faut noter qu’à ce moment, toutes les machines du réseau écoutent l’échange (réseau non switché), et peuvent mettre à jour leurs tables ARP. La bande passante du réseau est ainsi économisée : la réponse se fait non pas en broadcast, mais en unicast (les données sont adressées uniquement à la machine réceptrice, et non pas à toutes comme en broadcast). De plus, les tables ARP permettant de mémoriser un certain nombre de correspondances d’adresses (une table ARP garde en mémoire les correspondances environ 20 minutes), ce genre d’opération ne se produit qu’une fois.
 
Remarque : Si lors d’une tentative de connection, une machine ne répond plus, toutes les machines « entendant » l’échec de réponse suppriment la correspondance existante (elles reçoivent un message d’erreur ICMP : voir plus loin). De même, si B n’avait pas répondu à A, A aurait continué de poser la question indéfiniment.
 
                B.   Le protocole RARP
 
    Ce protocole est utilisé principalement par les machines démarrant sur un réseau où elles ne connaissent pas leur adresse IP. Elles vont alors envoyer les mêmes datagrammes que le protocole ARP, sous forme cette fois-ci de « RARP Question », en spécifiant comme adresse physique de l’émetteur sa propre adresse Mac, et a destination du broadcast physique. Un serveur RARP habilité à délivrer une adresse IP à cette machine répondra en unicast, et lui fournira son adresse.
 

Menu