RARP: Das Reverse Address Resolution Protocol

Was passiert, wenn der eigene Rechner seine IP-Adresse nicht kennt, weil dieser zum Beispiel keinerlei Speichermöglichkeit hat? In so einem Fall kann das Reverse Address Resolution Protocol (RARP) helfen – ein Protokoll zur umgekehrten Adressauflösung. Damit bildet RARP das Gegenstück zu ARP – dem Address Resolution Protocol.

Inzwischen ist Reverse ARP veraltet, neuere Protokolle wie das Bootstrap-Protokoll (BOOTP) oder das Dynamic-Host-Configuration-Protokoll (DHCP) haben RARP abgelöst. Dennoch ist es nützlich, auch die ältere Technik zu kennen. Zum einen findet man auch heute noch Anwendungen, die mit RARP arbeiten. Zum anderen hilft es, die alten Techniken zu kennen, um dadurch die darauf aufbauenden Technologien besser verstehen zu können.

Was ist RARP?

Zunächst einmal handelt es sich bei RARP um ein Protokoll, das man 1984 veröffentlicht und in den TCP/IP-Protokollstapel aufgenommen hat. RARP liegt dabei auf der Schicht des Netzzugangs (der elementarsten und niedrigsten Ebene des Stapels) und stellt somit eine Technik dar, die der Übertragung zwischen zwei Punkten in einem Netzwerk dient. Jeder Teilnehmer eines Netzwerks verfügt über zwei (mehr oder weniger) eindeutige Adressen: einer logischen, der IP-Adresse, und einer physikalischen, der MAC-Adresse. Während die IP-Adresse auf Seiten der Software festgelegt wird, ist die MAC-Adresse mit der Hardware verbunden. Der Hersteller Ihrer Netzwerkkarte hat Ihnen somit die Media-Access-Control-Adresse bereits vorgegeben.

Nun kann es vorkommen, dass die eigene IP-Adresse nicht bekannt ist, zum Beispiel weil das entsprechende Gerät keinen eigenen Speicher hat, der die Adresse sichern könnte. In diesem Fall kommt das Reverse-ARP-Protokoll zum Einsatz. Anhand der bekannten MAC-Adresse kann das Protokoll die eigene IP-Adresse ermitteln. Somit erfüllt es einen komplett anderen Zweck als ARP. Bei letztgenanntem Protokoll ist die IP-Adresse bekannt und mithilfe von ARP ermittelt man dann die Adresse der Hardware.

Wie funktioniert RARP?

Wer in einem Netzwerk kennt die IP-Adresse eines Teilnehmers, wenn dieser selbst sie nicht weiß? Die Antwort: ein spezieller RARP-Server. Dieser Server, der RARP-Anfragen beantwortet, kann selbst ebenfalls ein einfacher Computer im Netzwerk sein. Er muss allerdings alle MAC-Adressen mit den zugeordneten IP-Adressen gespeichert haben. Wenn ein Netzteilnehmer einen RARP-Request in das Netzwerk schickt, kann demnach auch nur solch ein Server diese Anfrage beantworten.

Da der anfragende Teilnehmer seine IP-Adresse ja nicht kennt, muss er das Datenpaket (den Request) auf den untersten Schichten des Netzwerks als Broadcast senden. Das bedeutet: Das Paket geht an alle Teilnehmer gleichzeitig raus. Allerdings antwortet nur der RARP-Server. Sollte es davon mehrere geben, nutzt der anfragende Teilnehmer nur die Antwort, die zuerst bei ihm eintrifft. Die Formate von Request und Antwort ähneln im Aufbau sehr dem, was man von ARP kennt.

Folgende Informationen befinden sich in den einzelnen Feldern:

  • Hardware Address Space: In diesen beiden Bytes wird der Typ der Hardwareadresse angegeben.
  • Protocol Address Space: Dieses zwei Byte große Feld gibt die Art des Netzwerkprotokolls an.
  • Hardware Address Length: Diese 8 Bit legen die Länge n der Hardwareadresse fest.
  • Protocol Address Length: Mit diesem Feld bestimmt man die Länge m der Netzwerkadresse.
  • Opcode: Das zwei Byte große Feld gibt an, um was für eine Operation es sich handelt. Eine RARP-Anfrage hat den Wert 3 und die entsprechende Antwort den Wert 4.
  • Source Hardware Address: Dort wird die MAC-Adresse des Absenders hinterlegt. Die eigentliche Länge dieses Feldes ist n und wird durch die Angabe unter Hardware Address Length festgelegt. Bei einem typischen Ethernet-Netzwerk handelt es sich um 6 Bytes.
  • Source Protocol Address: In diesem Feld würde theoretisch die IP-Adresse des Absenders stehen, da diese aber ja bei einem Request nicht bekannt ist, bleibt das Feld undefiniert. Bei der Antwort hingegen findet sich an dieser Stelle die IP-Adresse des Servers. Die Länge dieses Feldes ist m und abhängig von Protocol Address Length. Typischerweise hat das Feld allerdings die Länge einer IPv4-Adresse, also 4 Bytes.
  • Target Hardware Address: Dieses Feld enthält die MAC-Adresse des Ziels. Da es kein spezifisches Ziel beim RARP-Request gibt, steht auch hier die Adresse des Absenders. Bei der Antwort trägt der Server hier ebenfalls die Adresse des anfragenden Clients ein. Auch dieses Feld hat die Länge n und ist im Fall eines Ethernet-Netzwerks 6 Byte groß.
  • Target Protocol Address: Das letzte Feld schließlich bleibt bei einer Anfrage undefiniert und enthält in der Antwort des Servers die eigentlich gesuchte Information: die IP-Adresse des Netzteilnehmers. Dieses Feld hat ebenfalls die Länge m, also üblicherweise 4 Bytes.

Wichtige Unterschiede zwischen den beiden Protokollen ARP und RARP gibt es dennoch: In erster Linie unterscheiden sich beide natürlich hinsichtlich der Angaben. Während man bei einem RARP-Request die eigene MAC-Adresse kennt, aber die entsprechende IP-Adresse nachfragt, ist es beim ARP genau andersrum: Die IP-Adresse ist bekannt und die MAC-Adresse soll herausgefunden werden. Die beiden Protokolle unterscheiden sich aber auch hinsichtlich der Inhalte ihrer Operation-Felder: ARP kennt hier die beiden Werte 1 (für eine Anfrage) und 2 (für eine Antwort). RARP hingegen verwendet 3 und 4. Somit kann ein Server schon am Operation-Code erkennen, ob es sich um ARP oder RARP handelt.

Probleme mit Reverse ARP

Das Reverse Address Resolution Protocol hat einige Nachteile, die schließlich dazu geführt haben, dass man das Protokoll durch neuere ersetzt hat. Damit man das Protokoll erfolgreich einsetzen kann, muss der RARP-Server beispielsweise im gleichen physikalischen Netzwerk liegen. Der Computer sendet den RARP-Request auf der niedrigsten Ebene der Netzschicht. Somit ist es nicht möglich, dass ein Router das Paket weitervermittelt. Hinzu kommt noch, dass RARP nicht mit Subnetting umgehen kann, da keinerlei Subnetzmasken übertragen werden. Sollte das Netzwerk in mehrere Subnetze aufgeteilt worden sein, muss in jedem einzelnen ein RARP-Server verfügbar sein.

Durch die Anfrage erfährt der Netzteilnehmer zudem ausschließlich seine IP-Adresse. Wie bereits erwähnt ist eine Subnetzmaske nicht enthalten und auch Informationen zum Gateway erhält man über Reverse ARP nicht. Somit ist es auch nicht möglich, den Computer in einem modernen Netzwerk zu konfigurieren. Diese Missstände haben schließlich zur Entwicklung von BOOTP und DHCP geführt.