Address Resolution Protocol
[[pl:Protok%F3%B3_ARP]]
ARP (Address Resolution Protocol) ist ein Netzwerkprotokoll, das die Zuordnung von Hardwareadressen zu Internetadressen ermöglicht. Obwohl es nicht auf Ethernet- und IP-Protokolle beschränkt ist, wird es fast ausschließlich im Zusammenhang mit IP-Adressierung auf Ethernet-Netzwerken verwendet. ARP gehört zur Netzwerkschicht der TCP/IP-Protokollfamilie.
Verwendung
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 bestehen nur aus 32 Bits und sind daher nicht in der Lage 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 Ethernetframe verpacken. Jeder Frame enthält eine 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.
ARP wird also verwendet, wenn einem Computer die MAC-Adresse eines anderen Computers nicht bekannt ist und sie somit nicht adressiert werden können.
Funktionsweise
Beispiel für Ethernet-Netzwerke:
Es wird eine ARP-Anforderung (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-Antwort oder ARP-Reply). Als MAC-Ziel wird die Quelladresse der Anforderung 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 eine ARP-Anforderung oder ARP-Antwort, 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-Anforderungen versendet werden.
ARP und Routing
Das ARP-Protokoll kann nur die MAC-Adressen der Geräte im gleichen Subnetz auflösen, da Ethernet-Broadcasts auf Subnetze beschränkt sind. Aus der Ziel-IP-Adresse wird mit Hilfe der Routingtabelle eine Host-IP-Adresse ermittelt. Diese entspricht der Ziel-IP-Adresse, falls sich der Host im gleichen Subnetz befindet. Ansonsten stellt die Host-IP-Adresse die IP-Adresse des nächsten Routers dar, dessen MAC-Adresse dann über ARP ermittelt wird. Der Ethernet-Frame wird dann an den Router gesendet. Jeder Router verwendet denselben Algorithmus, um den jeweils nächsten Host bzw. Router zu ermitteln.
Das folgende Diagramm stellt den Zusammenhang von IP-Routing mit ARP dar:
![]() |
Der optionale (blaue) Teil wird normalerweise nicht implementiert. ARP befindet sich in den unteren Protokollschichten, in denen Pakete verlorengehen dürfen. Für die Sicherung und damit die Zuverlässigkeit sind die oberen Schichten zuständig. TCP erreicht beispielsweise Zuverlässigkeit durch Wiederholung von Paketen.
Wird kein gültiger Eintrag in der ARP-Tabelle gefunden, wird das IP-Paket einfach verworfen und stattdessen eine ARP-Anforderung gesendet. Die oberen Protokollschichten sind dann für die Wiederholung des IP-Pakets verantwortlich.
Paketformat
Das ARP-Paket schließt sich an den Ethernet-MAC-Header an. Das Typfeld im Ethernetframe wird auf 0x806 (2054) gesetzt. Diese Nummer ist für das ARP-Protokoll reserviert. Dadurch lassen sich ARP-Pakete von Paketen anderer Protokolle wie beispielsweise IP unterscheiden.
Da das Paket sehr kurz ist, müssen in der Regel im Ethernetframe zwischen ARP-Paket und CRC zusätzliche Bytes eingefügt werden (Padding), um die minimale Framelänge von 64 Bytes zu erreichen.
Obwohl ARP ursprünglich für IPv4 und MAC-Adressen entwickelt wurde, sind im Paket Adresstypen und Protokollgrößenfelder vorgesehen. Dadurch ist ARP für andere, auch zukünftige, Protokolle geeignet. Bei IPv6 wird die Protokolladressgröße statt auf 4 auf 16 Bytes gesetzt, die Adressfelder werden auf 128 Bits (=16 Bytes) verlängert.
Ethernet MAC-Adressen und IPv4 Adressen
0 | 8 | 16 | 24 | 31 |
Hardwareadresstyp (1) | Protokolladresstyp (0x800) | |||
Hardwareadressgröße (6) | Protokolladressgröße (4) | Operation | ||
Quell-MAC-Adresse | ||||
Quell-MAC-Adresse | Quell-IP-Adresse | |||
Quell-IP-Adresse | Ziel-MAC-Adresse | |||
Ziel-MAC-Adresse | ||||
Ziel-IP-Adresse |
Ethernet MAC-Adressen und IPv6 Adressen
0 | 8 | 16 | 24 | 31 |
Hardwareadresstyp (1) | Protokolladresstyp (0x800) | |||
Hardwareadressgröße (6) | Protokolladressgröße (16) | Operation | ||
Quell-MAC-Adresse | ||||
Quell-MAC-Adresse | Quell-IP-Adresse | |||
Quell-IP-Adresse | ||||
Quell-IP-Adresse | ||||
Quell-IP-Adresse | Ziel-MAC-Adresse | |||
Ziel-MAC-Adresse | ||||
Ziel-IP-Adresse | ||||
Ziel-IP-Adresse | ||||
Ziel-IP-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 (2048)
). 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 IPv4: 4
, für IPv6: 16
).
Operation (2 Byte) enthält den Wert, der angibt, welche Operation ausgeführt werden soll (1
für ARP-Anforderung, 2
für ARP-Antwort).
Quell-MAC-Adresse (6 Byte) enthält in einer ARP-Anforderung die MAC-Adresse des Senders. In einer ARP-Antwort enthält es die MAC-Adresse des antwortenden Hosts. Quell-IP-Adresse (4 Bytes bei IPv4, 16 Bytes bei IPv5) enthält bei einer ARP-Anforderung die IP-Adresse des anfragenden Hosts. In einer ARP-Antwort enthält es die IP-Adresse des anwortenden Hosts. Ziel-MAC-Adresse (6 Byte) ist in einer ARP-Anforderung undefiniert. In einer ARP-Antwort enthält es die MAC-Adresse des anfragenden Hosts. Ziel-IP-Adresse (4 Bytes bei IPv4, 16 Bytes bei IPv5) ist bei einer ARP-Anforderung die IP-Adresse des gesuchten Hosts. In einer ARP-Antwort enthält es die IP-Adresse des anfragenden Hosts.
Spezielle ARP-Nachrichten
Proxy ARP
Proxy ARP erlaubt einem Router ARP-Anforderungen 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 eine ARP-Anforderung an Computer B, erwidert der dazwischenliegende Router mit einer ARP-Antwort 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-Anforderungs-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.
RARP - Reverse ARP
RARP funktioniert umgekehrt zu 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 Paketformat. Im Gegensatz zu RARP funktioniert ARP ohne dass der Administrator oder Benutzer den Host konfigurieren müssen.
Probleme
ARP ist für den Benutzer unsichtbar, so dass das Vorhandensein dieses Protokolls meist nur bemerkt wird, wenn seltene 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, sondern dem Netzwerk oder einem Fehler in der Netzwerkimplementierung. Darüber hinaus ermöglicht nicht jedes Betriebssystem das Erzeugen eines korrigierten Eintrags oder einer Anforderung.
Gravierender ist das Eintragen von Daten in den ARP-Cache aus Paketen, für die keine Anforderung erzeugt wurde (blinder Glaube). Ein überlasteter Host, der eine alte IP-Adresse führt, antwortet mit großer Wahrscheinlichkeit als letzter auf eine ARP-Anforderung mit einer Antwort, die die falsche Adresse enthält. Dieses letzte Paket überschreibt die ARP-Tabelle aller Geräte auf dem Netzwerk, ein fehlerhafter Eintrag bleibt übrig.
Mit ARP-Spoofing ist es auch möglich, absichtlich eine falsche Hardwareadresse in einem Netzwerk zu verteilen, teilweise sogar von außen über einen Remote-Broadcast. Dadurch kann der Datenverkehr für einen Rechner auf einen anderen umgelenkt und eventuell von diesem sogar gefiltert werden. Dies stellt ein Sicherheitsproblem dar.
Moderne Implementierungen ändern die ARP-Tabelle nur für ARP-Antworten, für die vorher von dem betreffenden Host eine ARP-Anforderung generiert wurde.
Weblinks
- RFC 826 - Address Resolution Protocol