Le RARP : le protocole reverse ARP

Que se passe-t-il lorsque que l’on a un ordinateur qui ne connaît pas sa propre adresse IP, parce qu’il n’a par exemple pas de mémoire ? Voilà un cas où le Reverse Address Resolution Protocol (RARP) peut servir. Le RARP est le pendant de l’ARP, le protocole de résolution d’adresse.

Le reverse ARP a vieilli : de nouveaux protocoles comme le protocole BOOTP ou le DHCP (Dynamic Host Configuration Protocol) l’ont remplacé. Pour autant, il est toujours utile de connaître les vieilles techniques, d’autant plus que, d’une part, il subsiste des applications qui utilisent le RARP, et d’autre part, les vieilles techniques permettent de mieux comprendre les technologies qui ont été bâties dessus.

Qu’est-ce que le RARP ?

Le RARP est d’abord un protocole qui a été publié en 1984 et qui a été intégré à la pile des protocoles TCP/IP. Le RARP se trouve au niveau de l’accès au réseau (le niveau le plus bas et le plus élémentaire de la pile), et sert donc techniquement aux transmissions entre deux points d’un réseau. Chacun des participants à un réseau dispose (approximativement) de deux adresses : une adresse logique, l’adresse IP, et une adresse physique, l’adresse MAC. Alors que l’adresse IP est déterminée côté logiciel, l’adresse MAC est associée au matériel. Le fabricant de votre carte réseau vous a donc attribué une adresse « media access control ».

Il peut arriver en pratique qu’on ne connaisse pas sa propre adresse IP, par exemple lorsque l’appareil utilisé n’a pas de mémoire où elle peut être enregistrée. C’est dans ce cas qu’intervient le reverse ARP. Il peut, à partir d’une adresse MAC connue, déterminer l’adresse IP correspondante. Exactement l’inverse, donc, du protocole ARP, où l’adresse IP est connue et où l’ARP détermine l’adresse du matériel.

Comment fonctionne le RARP ?

Dans un réseau, qui peut connaître l’adresse IP d’une partie prenante lorsque cette dernière ne la connaît pas elle-même ? La réponse : un serveur RARP dédié. Ce serveur, qui répond aux requêtes du RARP, peut être lui-même un simple ordinateur se trouvant dans le réseau. Il faut toutefois qu’il dispose en mémoire de toutes les adresses MAC avec les adresses IP correspondantes. Lorsqu’un participant au réseau envoie une requête RARP, seul un tel serveur est en mesure de lui répondre.

Étant donné que le demandeur ne connaît pas sa propre adresse IP, il doit envoyer le paquet de données (la requête) aux niveaux inférieurs du réseau sous forme de message de diffusion (broadcast). Cela veut dire que le paquet est diffusé à tous les participants simultanément. Toutefois ce n’est que le serveur RARP qui va répondre. S’il en existe plusieurs, le demandeur n’utilise que la première des réponses qui lui parvient. Le format des requêtes et des réponses est largement identique à celui du protocole ARP.

Les différents champs contiennent les informations suivantes :

  • Espace pour l’adresse du matériel : ces 2 octets indiquent le type d’adresse matérielle.
  • Espace pour l’adresse du protocole : ces 2 octets indiquent le type de protocole réseau.
  • Longueur de l’adresse du matériel : ces 8 bits indiquent la longueur n de l’adresse du matériel.
  • Longueur de l’adresse du protocole : ce champ détermine la longueur m de l’adresse réseau.
  • Code opération : ce champ, d’une longueur de 2 octets, indique le type d’opération. Une requête RARP a la valeur 3, la réponse correspondante la valeur 4.
  • Adresse du matériel source : emplacement de l’adresse MAC de l’émetteur. La longueur de ce champ est n et s’établit à partir de l’indication de longueur d’adresse matérielle. Dans un réseau Ethernet typique cette longueur est de 6 octets.
  • Adresse du protocole source : ce champ devrait théoriquement contenir l’adresse IP de l’émetteur, mais comme dans une requête elle n’est pas connue, le champ reste non défini. Dans la réponse par contre, c’est l’adresse IP du serveur qui y figure. Ce champ est d’une longueur m, en fonction de la longueur de l’adresse du protocole. Le plus souvent, ce champ a toutefois la longueur d’une adresse IPv4, soit 4 octets.
  • Adresse du matériel cible : ce champ contient l’adresse MAC de la cible. Étant donné que pour une requête RARP il n’existe pas de cible spécifique, ce champ contient lui aussi l’adresse de l’émetteur. La réponse contient elle aussi l’adresse du client demandeur. Ce champ est lui aussi d’une longueur n, soit 6 octets dans le cas d’un réseau Ethernet
  • Adresse du protocole cible : le dernier champ reste non défini dans le cadre d’une requête, et contient dans la réponse du serveur l’information recherchée : l’adresse IP du participant au réseau. Ce champ est également d’une longueur m, soit le plus souvent 4 octets.

Il existe toutefois des différences importantes entre les deux protocoles ARP et RARP : la première est naturellement celle des informations contenues. Alors qu’avec une requête RARP on connaît sa propre adresse MAC et on demande l’adresse IP correspondante, c’est exactement l’inverse pour l’ARP : on connaît l’adresse IP et il s’agit d’établir l’adresse MAC. Mais les deux protocoles se différencient également du point de vue du contenu de leurs champs opératoires : l’ARP utilise ici les deux valeurs 1 (pour une requête) et 2 (pour une réponse). Avec le RARP, par contre, on a les valeurs 3 et 4. Ainsi, un serveur peut reconnaître dès le code opératoire s’il s’agit d’ARP ou de RARP.

Problèmes que présente le reverse ARP

Le Reverse Address Resolution Protocol présente certains inconvénients qui ont conduit à son remplacement. Pour une bonne mise en œuvre du protocole, le serveur RARP doit par exemple se trouver dans le même réseau physique. L’ordinateur émet la requête RARP au niveau le plus bas des couches réseau. Cela rend par conséquent impossible la transmission du paquet par un routeur. De plus, le RARP ne gère pas le découpage en sous-réseaux du fait de l’impossibilité de transmettre des masques de sous-réseau. Si on est face à un réseau découpé en plusieurs sous-réseaux, il faut qu’un serveur RARP soit disponible dans chacun des sous-réseaux.

Par ailleurs la requête permet au participant au réseau de connaître uniquement son adresse IP. Ainsi que déjà mentionné, il n’y a pas de masque de sous-réseau, et le protocole RARP ne donne pas non plus d’informations sur la passerelle. Cela empêche par conséquent de configurer l’ordinateur pour un réseau moderne. Ce sont ces inconvénients qui ont conduit au développement des protocoles BOOTP et DHCP.