ARP (Address Resolution Protocol) ist ein Netzwerkprotokoll, das die Zuordnung von Hardwareadressen zu Internetadressen ermöglicht. Es gehört zur Internetschicht der TCP/IP-Protokollfamilie.
Das Problem
Die 48 Bit langen MAC-Adressen werden vom Hersteller einer Ethernet-Netzwerkkarte oder eines Ethernet-fähigen Gerätes vergeben. Die Adresse jedes Interfaces ist weltweit eindeutig. Bei einigen Netzwerken, wie z. B. [[Novell] und Decnet, werden die Netzwerkadressen eindeutig auf die Ethernetadressen abgebildet, etwa, indem die MAC-Adresse um weitere Informationen ergänzt wird. Ein Sender kann dann die MAC-Adresse des Empfängers einfach aus der Netzwerkadresse ermitteln.
IP-Adressbereiche werden von der IANA (Internet Assigned Numbers Authority) zugeteilt. IPv4-Adressen enthalten darüberhinaus nur 32 Bits und sind daher prinzipiell nicht in der Lage, die MAC-Adressen zu speichern. Es gibt daher keine feste Beziehung zwischen MAC-Adressen und IP-Adressen. Will ein Rechner in einem Ethernetnetzwerk an einen Rechner in demselben Netzwerk ein IP-Paket senden, muss er die Information in einem Ethernetpaket (auch Ethernetframe) verpacken. Jeder Frame enthält die Ethernetquelladresse und -zieladresse. Zunächst kennt ein Rechner nur die eigene Adresse, die er in das Feld für die Quelladresse einfügt. Mit Hilfe des ARP-Protokolls kann jeder Rechner die Ethernet-Zieladresse der anderen Rechner ermitteln.
Obwohl ARP nicht auf Ethernet- und IP-Protokolle beschränkt ist, wird es fast ausschließlich im Zusammenhang mit IP-Adressierung auf Ethernet-Netzwerken verwendet.
Verwendung und Funktionsweise
Beispiel für Ethernet-Netzwerke:
Bevor das erste IP-Paket in einen Ethernet-Frame gepackt werden kann, wird über ARP die fehlende MAC-Adresse ermittelt:
Es wird ein ARP Request-Broadcast mit der IP-Adresse des anderen Computers gesendet. Bei Broadcasts ist das Erzeugen eines Ethernetframes kein Problem, da als MAC-Zieladresse die Broadcast-Adresse ffffffffffff16 verwendet wird. Ein Host, der die IP-Adresse kennt, antwortet mit dem Zurücksenden der passenden MAC-Adresse (ARP-Reply). Als MAC-Ziel wird die Quelladresse des Request verwendet. Der antwortende Host muss nicht unbedingt der gesuchte Host sein, da jeder teilnehmende Host über einen Cache von MAC- und IP-Adressen verfügt.
Empfängt ein Host einen ARP-Request oder ARP-Reply, aktualisiert er seinen sogenannten ARP-Cache. Dazu trägt er die Quell-IP-Adresse und Quell-MAC-Adresse bzw. die entsprechenden Zieladressen in die ARP-Tabelle ein. Jeder Eintrag läuft normalerweise nach 20 Minuten aus. Sobald ein Eintrag in der Tabelle genutzt wird, wird dessen Ablaufzeit verlängert.
Unter Unix und Windows kann der ARP-Cache mit arp (oder arp -a) angezeigt und manipuliert werden. Mit dem Zusatzprogramm arping können manuell ARP-Requests versendet werden.
ARP und RARP
RARP funktioniert umgekehrt zu ARP (Reverse ARP). Es kann also Internetadressen zu Hardwareadressen auflösen. Dies ist für die Ermittlung der eigenen IP-Adresse bei plattenlosen Geräten nützlich. Beide Protokolle besitzen das gleiche Headerformat. Im Gegensatz zu RARP funktioniert ARP ohne dass der Administrator oder Benutzer den Host konfigurieren müssen.
Header Format
0 | 8 | 16 | 24 | 31 |
Hardwareadresstyp | Protokolladresstyp | |||
Hardwareadressgröße | Protokolladressgröße | Operation | ||
Quell-MAC-Adresse | ||||
Quell-MAC-Adresse | Quell-IP-Adresse | |||
Quell-IP-Adresse | Ziel-MAC-Adresse | |||
Ziel-MAC-Adresse | ||||
Ziel-IP-Adresse |
Hardwareadresstyp (2 Byte) enthält den Typ der MAC-Adresse im Paket (für Ethernet: 1
). Protokolladresstyp (2 Byte) enthält den Protokolltyp, der für die MAC-Adresse angefordert wird (für IP-Adressen: 0x800
). Hardwareadressgröße (1 Byte) enthält die Größe der MAC-Adresse (für Ethernet: 6
). Protokolladressgröße (1 Byte) enthält die Größe des Protokolls (für IP: 4
).
Operation (2 Byte) enthält den Wert, der angibt, welche Operation ausgeführt werden soll (1
für ARP Request, 2
für ARP Reply).
Quell-MAC-Adresse (6 Byte) enthält in einem ARP Request die MAC-Adresse des Senders. In einem ARP Reply enthält es die MAC-Adresse des antwortenden Hosts. Quell-IP-Adresse (4 Byte) enthält bei einem ARP Request die IP-Adresse des anfragenden Hosts. In einem ARP Reply enthält es die IP-Adresse des anwortenden Hosts. Ziel-MAC-Adresse (6 Byte) ist in einem ARP Request undefiniert. In einem ARP Reply enthält es die MAC-Adresse des anfragenden Hosts. Ziel-IP-Adresse (4 Byte) ist bei einem ARP Request die IP-Adresse des gesuchten Hosts. In einem ARP Reply enthält es die IP-Adresse des anfragenden Hosts.
Proxy ARP
Proxy ARP erlaubt einem Router ARP Requests für Hosts zu beantworten.
Die Hosts befinden sich dabei in verschiedenen Netzwerken. Bei der Kommunikation ist für sie der Router transparent, das heißt er muss nicht speziell angesprochen werden, sondern die Hosts können wie gewöhnlich Pakete über verschiedene Netze hinweg versenden.
Schickt Computer A einen ARP-Request an Computer B, erwidert der dazwischenliegende Router mit einem ARP-Reply und seiner Hardwareadresse als Inhalt. Der anfragende Computer A wird jetzt seine Daten an den Router schicken. Der Router wird diese Daten direkt an Computer B weiterleiten.
Gratuitous ARP
Gratuitous ARP (engl. "gratis ARP") bezeichnet eine spezielle Verwendung von ARP. Dabei wird von einem Host ein ARP-Request Broadcast gesendet, bei der er seine eigene IP-Adresse als Quell- und Ziel-IP-Adresse einträgt. Das kann zwei Zwecken dienen:
- Normalerweise darf keine Antwort kommen, denn eine IP-Adresse muss in einem Netzwerk eindeutig sein. Bekommt er trotzdem eine Antwort, ist das für den Administrator ein Hinweis darauf, dass ein Host nicht richtig konfiguriert ist.
- Jeder Host aktualisiert seinen ARP-Cache. Das ist beispielsweise dann nützlich, wenn die Netzwerkkarte eines Rechners ausgetauscht wurde und die anderen Hosts über die neue MAC-Adresse informiert werden sollen. Gratuitous ARP geschieht deshalb normalerweise beim Booten eines Computers.
Probleme
ARP funktioniert erstaunlich gut. Normalerweise ist ARP unsichtbar, so dass das Vorhandensein dieses Protokolls meist nur bemerkt wird, wenn die zugegebenermaßen seltenen Fehler auftreten.
Die Länge der Gültigkeit eines ARP-Eintrags (normalerweise 20 Minuten) kann ein Problem darstellen, wenn falsche Einträge vorhanden sind. Solange ein fehlerhafter Eintrag existiert, kann mit dem betreffenden Host nicht kommuniziert werden. Die Fehlfunktion wird häufig nicht dem ARP-Protokoll zugeschrieben. Darüber hinaus ermöglicht nicht jedes Betriebssystem das Erzeugen eines korrigierten Eintrags oder eines Requests.
Gravierender ist das Eintragen von Daten in den ARP-Cache aus Packeten, für die kein Request erzeugt wurde (blinder Glaube). Ein überlasteter Host, der eine alte IP-Adresse führt, antwortet mit großer Wahrscheinlichkeit als letzter auf einen ARP-Request mit einem Reply, der die falsche Adresse enthält. Dieses letzte Packet überschreibt die ARP-Tabelle aller Geräte auf dem Netzwerk, ein fehlerhafter Eintrag bleibt übrig.
Es ist auch möglich, absichtlich eine falsche Hardwareadresse über ARP in einem Netzwerk zu verteilen, teilweise sogar von außen über einen Remote-Broadcast. Dadurch kann der Verkehr für einen Rechner auf einen anderen umgelenkt und eventuell von diesem sogar gefiltert werden. Dies stellt ein Sicherheitsproblem dar.
Moderne Implementierungen tendieren dazu, die ARP-Tabelle nur für ARP-Replies zu ändern, für die vorher von dem betreffenden Host ein ARP-Request generiert wurde.
Weblinks
- RFC 826 - Address Resolution Protocol