Zum Inhalt springen

„Address Resolution Protocol“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[ungesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
RobotQuistnix (Diskussion | Beiträge)
K Proxy ARP: BKS-Link als unnötig entfernt - "Spoofing" daneben präzisiert den Angriff
 
(329 dazwischenliegende Versionen von mehr als 100 Benutzern, die nicht angezeigt werden)
Zeile 1: Zeile 1:
{{Infobox Netzwerkprotokoll
{| {{Prettytable-R}}
|Name=
|-----
|Familie= [[Internetprotokollfamilie]]
! bgcolor="#C0C0FF" colspan="2" font="size:larger" | ARP (Address Resolution Protocol)
|Einsatzfeld= Netzwerkadressenzuordnung
|-----
|aufbauend auf= [[Netzzugangsschicht]]
| align="left" | '''Familie:'''
|Basis zu=
| align="left" | [[TCP/IP-Referenzmodell|TCP/IP]]
|Einführung=
|-----
|entwickelt aus=
| align="left" | '''Einsatzgebiet:'''
|entwickelt zu=
| align="left" |
|Version=
Auffinden von Medienadressen<br>
|Version Datum=
(etwa [[MAC-Adresse|Ethernet]]-Adressen)
|Vorabversion=
|-----
|Vorabversion Datum=
| align="center" colspan="2" |
|Entwickler=
|Standard= <nowiki>RFC&nbsp;826</nowiki> (1982)<ref>{{RFC-Internet |RFC=826 |Titel=An Ethernet Address Resolution Protocol – or – Converting Network Protocol Addresses |Datum=1982-11}}</ref>
}}
{{Netzwerk-TCP-IP-Sicherungsprotokoll|ARP|IP=[[IPv4]]}}
Das '''Address Resolution Protocol''' ('''ARP''') ist ein [[Netzwerkprotokoll]], das zu einer [[Netzwerkadresse]] der [[Internetschicht]] die physische Adresse (Hardware-Adresse) der [[Netzzugangsschicht]] ermittelt und diese Zuordnung gegebenenfalls in den ''ARP-Tabellen'' der beteiligten Rechner hinterlegt. Es wird fast ausschließlich im Zusammenhang mit [[IPv4]]-Adressierung auf [[Ethernet]]-[[Rechnernetz|Netzen]], also zur Ermittlung von [[MAC-Adresse]]n zu gegebenen [[IP-Adresse]]n verwendet, obwohl es nicht darauf beschränkt ist. Für [[IPv6]] wird diese Funktionalität nicht von ARP, sondern durch das [[Neighbor Discovery Protocol]] (NDP) bereitgestellt.


== Verwendungen ==
'''ARP-[[TCP/IP-Referenzmodell|Protokollstapel]]'''
MAC-Adressen werden vom Hersteller einer Ethernet-[[Netzwerkkarte]] oder eines Ethernet-fähigen Gerätes vergeben. Die Adresse jeder [[Schnittstelle]] ist dabei theoretisch weltweit eindeutig. Bei einigen Netzen, wie zum Beispiel [[Novell]] und [[DECnet]], werden die [[Netzwerkadresse]]n eindeutig auf die Ethernet-Adressen 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.
{|
| rowspan="1" align="center" bgcolor="#FFCC99" | '''Netzwerk'''
| colspan="2" align="center" bgcolor="#9999FF" | '''ARP'''
|-----
| rowspan="2" align="center" bgcolor="#FFEEBB" | ''Netzzugang''
| align="center" bgcolor="#EEEEEE" | [[Ethernet]]
| align="center" bgcolor="#EEEEEE" | ...
|}


IP-Adressen werden von der IANA ([[Internet Assigned Numbers Authority]]) zugeteilt. Da IPv4-Adressen eine Länge von nur 32 [[Bit]]s haben, können die 48 Bit langen MAC-Adressen damit nicht direkt abgebildet werden. Es kann deshalb keine feste Beziehung zwischen MAC-Adressen und IP-Adressen hergestellt werden. Bevor ein Rechner in einem Ethernet an einen Rechner im selben [[Subnetz]] ein [[IP-Paket]] sendet, muss er die Information in einen Ethernet-Frame verpacken. Dazu muss er die MAC-Adresse des Zielrechners kennen und im entsprechenden Feld des Ethernet-Frames einfügen. Ist ihm diese nicht bekannt, kann er das IP-Paket nicht zustellen. Stattdessen ermittelt er dann mit Hilfe des ARP zunächst die MAC-Adresse des Zielrechners.
|-----
| align="left" | '''Standards:'''
| align="left" |
RFC 826 ([[1982]])
|}
'''ARP''' (''Address Resolution Protocol'') ist ein [[Netzwerkprotokoll]], das die Zuordnung von Internetadressen zu Hardwareadressen möglich macht. Obwohl es nicht auf [[Ethernet]]- und [[Internet Protocol|IP]]-Protokolle beschränkt ist, wird es fast ausschließlich im Zusammenhang mit [[IP-Adresse|IP-Adressierung]] auf Ethernet-[[Rechnernetz|Netzen]] verwendet.
== Verwendung ==


== Funktionsweise am Beispiel Ethernet ==
Die 48 Bit langen [[MAC-Adresse]]n werden vom Hersteller einer Ethernet-[[Netzwerkkarte]] oder eines Ethernet-fähigen Gerätes vergeben. Die Adresse jeder [[Schnittstelle]] ist dabei theoretisch weltweit eindeutig. Praktisch haben diese Vergaben aber die Hersteller in der Hand; außerdem kann man z. B. bei den auf der [[Hauptplatine]] integrierten Netzwerkchips meistens die MAC-Adresse beliebig über das [[BIOS]], der Registry oder gewollt in einem Terminal ändern. Bei einigen Netzen, 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.
Es wird eine ARP-Anforderung (''ARP Request'') mit der [[MAC-Adresse]] und der [[IP-Adresse]] des anfragenden [[Computer]]s als Sender-IP-Adresse und der IP-Adresse des gesuchten Computers als Empfänger-IP-Adresse an alle Computer des lokalen Netzwerkes gesendet. Als Empfänger-MAC-Adresse wird dazu die [[Broadcast]]-Adresse <code>ff-ff-ff-ff-ff-ff<sub>16</sub></code> im Ethernet-Frame verwendet, damit alle Computer des lokalen Netzwerkes die ARP-Anforderung empfangen. Jedoch wird die Ziel-MAC-Adresse innerhalb der ARP-Anforderung mit <code>00-00-00-00-00-00<sub>16</sub></code> gefüllt, um anzuzeigen, dass der Sender der ARP-Anforderung diese MAC-Adresse herausfinden möchte. Empfängt ein Computer ein solches Paket, sieht er nach, ob dieses Paket seine IP-Adresse als Empfänger-IP-Adresse enthält.
Wenn dies der Fall ist, antwortet er mit dem Zurücksenden seiner MAC-Adresse und IP-Adresse (ARP-Antwort oder ''ARP-Reply'') per Broadcast oder als [[Unicast]]. Der Empfänger trägt nach Empfang der Antwort die empfangene Kombination von IP- und MAC-Adresse in seine ARP-Tabelle, auch ''ARP-Cache'' genannt, ein. Für ARP-Request und ARP-Reply wird das gleiche Paketformat verwendet.


Zusätzlich können die Empfänger des ARP-Requests ebenfalls die Kombination von IP-Adresse und MAC-Adresse des anfragenden Computers in ihre ARP-Tabelle eintragen bzw. einen bestehenden Eintrag aktualisieren. Insbesondere der Rechner mit der im ARP-Request angefragten IP-Adresse sollte diese Eintragung vornehmen, da anzunehmen ist, dass der ARP-Request als Vorbereitung für weitere Kommunikation auf höherer Protokollebene dienen soll, wofür er dann für eventuelle Antworten ebenfalls die MAC-Adresse des Anfragenden benötigt.
IP-Adressbereiche werden von der [[IANA]] (''Internet Assigned Numbers Authority'') zugeteilt. [[IPv4]]-Adressen bestehen nur aus 32 [[Bit]]s und sind daher nicht in der Lage, MAC-Adressen zu speichern. Es gibt deswegen keine feste Beziehung zwischen MAC-Adressen und IP-Adressen. Will ein Rechner in einem Ethernet an einen Rechner in demselben Netz ein IP-[[Datenpaket|Paket]] senden, muss er die Information in einen Ethernetframe verpacken. Dazu muss er die MAC-Adresse des Zielrechners kennen und im entsprechenden Feld des Ethernetframes einfügen. Ist ihm diese nicht bekannt, kann er das IP-Paket nicht zustellen. Statt dessen ermittelt er dann mit Hilfe des ARP-Protokolls zunächst die MAC-Adresse des Zielrechners.


Die Einträge im [[ARP-Cache]] bestehen neben der Zuordnung von IP-Adresse und MAC-Adresse aus Angaben zu Eintragungszeitpunkt, Gültigkeitsdauer oder Alter des Eintrags und ggf. zum Protokolltyp. Wie lange ein Eintrag im ARP-Cache verbleibt, bevor er aus dem ARP-Cache gelöscht wird, ist implementierungsabhängig und liegt meist im Bereich von wenigen Minuten. So verwerfen aktuelle Linux-Distributionen Einträge nach etwa 5 Minuten. Sobald ein Eintrag in der Tabelle genutzt wird, wird dessen Ablaufzeit verlängert.
== Funktionsweise ==


Unter [[Unix]] und [[Microsoft Windows|Windows]] kann der ARP-Cache mit <code>arp</code> beziehungsweise <code>arp -a</code> angezeigt und mit dem entsprechenden Programm auch manipuliert werden. Mit dem Zusatzprogramm [[arping]] können manuell Anforderungen versendet werden.
Beispiel für Ethernet:


== ARP im globalen Zusammenhang ==
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 <code>ff-ff-ff-ff-ff-ff<sub>16</sub></code> verwendet wird. Jeder Rechner, der diese ARP-broadcast-Anforderung empfängt, aktualisiert damit seinen so genannten ARP-Cache, wenn die Absender-IP-Adresse darin schon enthalten ist. Der Rechner, der die angefragte IP-Adresse besitzt, trägt den Absender ggf. als neuen Eintrag in seinen ARP-Cache ein (in der Annahme, dass man zukünftig von dort Pakete bekommen wird, auf die man antworten soll) und antwortet mit dem Zurücksenden seiner MAC-Adresse (ARP-Antwort oder ''ARP-Reply'') an die MAC-Quelladresse des Anforderers.
Das ARP ist für die Auflösung der MAC-Adressen im lokalen Netzwerk zuständig. Sollen Daten über Netzwerkgrenzen hinweg gesendet werden, wird das [[Internet Protocol|Internet-Protokoll]] (IP) verwendet. IP-Implementierungen sind in der Lage, zu erkennen, dass ein Paket nicht für das lokale Subnetz bestimmt ist und senden es an einen lokalen [[Router]], der sich um die Weiterleitung des Pakets kümmert. Dieser Router hat wiederum eine lokale MAC-Adresse, die über ARP ermittelt werden kann.


Das folgende [[Programmablaufplan|Flussdiagramm]] stellt den Zusammenhang von IP-Routing mit ARP dar:
Der ARP-Cache enthält eine dreispaltige Tabelle, die im allgemeinen aus <Protokolltyp, sender protocol address, sender hardware address> besteht. Das Zeitintervall, nach dem ein Eintrag aus dem ARP-Cache gelöscht wird, ist implementierungsabhängig. So verwerfen aktuelle Linux-Distributionen Einträge nach ca. 5 Minuten. Sobald ein Eintrag in der Tabelle genutzt wird, wird dessen Ablaufzeit verlängert.
[[Datei:ARP und Routing.png|mini|ohne|400px|Schematische Darstellung von ARP und Routing]]

Unter [[Unix]] und [[Microsoft Windows|Windows]] kann der ARP-Cache mit <code>arp</code> (oder <code>arp -a</code>) angezeigt und manipuliert werden. Mit dem Zusatzprogramm <code>arping</code> können manuell 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 [[Router]]s 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:

:[[Bild:ARP_und_Routing.png|none|thumb|400px|Schematische Darstellung von ARP und Routing]]

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. [[Transmission Control Protocol|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 ==
== Paketformat ==
Das ARP-Paket schließt sich an den Ethernet-MAC-Header an. Das Typfeld im Ethernet-Frame wird auf 0x0806 (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 Ethernet-Frame zwischen ARP-Paket und CRC zusätzliche Bytes eingefügt werden (Padding), um die minimale Framelänge von 64 Bytes zu erreichen.
Das ARP-Paket schließt sich an den Ethernet-MAC-Header an. Das Typfeld im Ethernetframe wird auf 0x0806 (2054) gesetzt. Diese Nummer ist für das ARP-Protokoll reserviert. Dadurch lassen sich ARP-Pakete von Paketen anderer Protokolle wie beispielsweise IP unterscheiden.


Obwohl ARP ursprünglich für IPv4 und MAC-Adressen entwickelt wurde, sind im Paket Adresstypen und Protokollgrößenfelder vorgesehen. Dadurch ist ARP auch für andere Protokolle geeignet. Für [[IPv6]] könnten die Protokolladressgröße statt auf vier auf 16 Bytes gesetzt und die Adressfelder auf 128 Bits (= 16 Byte) verlängert werden, jedoch wird ARP für IPv6 durch das [[Neighbor Discovery Protocol]] (NDP) ersetzt, welches auf [[ICMPv6]] basiert.
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.


{| class="wikitable" style="text-align: center; width: 40em;"
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 Byte) verlängert.
!colspan="17"| ARP-Nachrichtenformat am Beispiel Ethernet-MAC-Adressen und IPv4-Adressen

|-
'''Ethernet MAC-Adressen und IPv4 Adressen'''
! octet offset

!colspan="8" style="width:18em"| 0
Von 0 bis 32 Bits
!colspan="8" style="width:18em"| 1
{| {{Prettytable}} style="margin:auto;text-align:center"
|-
| style="text-align:left" | Bit 0-7
! 0
| style="text-align:left" | Bit 8-15
|colspan="16"| Hardwareadresstyp
| style="text-align:left" | Bit 16-23
|-
| style="text-align:left" | Bit 24-31
! 2
|-----
| colspan=2 width="50%" | Hardwareadresstyp (1)
|colspan="16"| Protokolladresstyp
|-
| colspan=2 width="50%" | Protokolladresstyp (0x806)
! 4
|-----
| colspan=1 width="25%" | Hardwareadressgröße (6)
|colspan="8"| Hardwareadressgröße
| colspan=1 width="25%" | Protokolladressgröße (4)
|colspan="8"| Protokolladressgröße
|-
| colspan=2 width="50%" | Operation
! 6
|-----
| colspan=4 | Quell-MAC-Adresse
|colspan="16"| Operation
|-----
|-
! 8
| colspan=2 width="50%" | Quell-MAC-Adresse
| colspan=2 width="50%" | Quell-IP-Adresse
|colspan="16" style="background:#F0FFF0"| Quell-MAC-Adresse (erste 2 Bytes)
|-----
|-
! 10
| colspan=2 width="50%" | Quell-IP-Adresse
| colspan=2 width="50%" | Ziel-MAC-Adresse
|colspan="16" style="background:#F0FFF0"| (nächste 2 Bytes)
|-----
|-
! 12
| colspan=4 | Ziel-MAC-Adresse
|colspan="16" style="background:#F0FFF0"| (letzte 2 Bytes)
|-----
|-
| colspan=4 | Ziel-IP-Adresse
! 14
|colspan="16" style="background:#D0FFD0"| Quell-IP-Adresse (erste 2 Bytes)
|-
! 16
|colspan="16" style="background:#D0FFD0"| (letzte 2 Bytes)
|-
! 18
|colspan="16" style="background:#F0F0FF"| Ziel-MAC-Adresse (erste 2 Bytes)
|-
! 20
|colspan="16" style="background:#F0F0FF"| (nächste 2 Bytes)
|-
! 22
|colspan="16" style="background:#F0F0FF"| (letzte 2 Bytes)
|-
! 24
|colspan="16" style="background:#D0D0FF"| Ziel-IP-Adresse (erste 2 Bytes)
|-
! 26
|colspan="16" style="background:#D0D0FF"| (letzte 2 Bytes)
|}
|}


'''Hardwareadresstyp''' (2 Byte) enthält den Typ der MAC-Adresse im Paket (für Ethernet: <code>1</code>).
'''Ethernet MAC-Adressen und IPv6 Adressen'''


'''Protokolladresstyp''' (2 Byte) enthält den Protokolltyp, der für die MAC-Adresse angefordert wird (für IPv4-Adressen: <code>0x0800 (2048)</code>).
Von 0 bis 32 Bits
{| {{Prettytable}} style="margin:auto;text-align:center;"
| style="text-align:left" | Bit 0-7
| style="text-align:left" | Bit 8-15
| style="text-align:left" | Bit 16-23
| style="text-align:left" | Bit 24-31
|-----
| colspan=2 width="50%" | Hardwareadresstyp (1)
| colspan=2 width="50%" | Protokolladresstyp (0x86DD)
|-----
| colspan=1 width="25%" | Hardwareadressgröße (6)
| colspan=1 width="25%" | Protokolladressgröße (16)
| colspan=2 width="50%" | Operation
|-----
| colspan=4 | Quell-MAC-Adresse
|-----
| colspan=2 width="50%" | Quell-MAC-Adresse
| colspan=2 width="50%" | Quell-IP-Adresse
|-----
| colspan=4 | Quell-IP-Adresse
|-----
| colspan=4 | Quell-IP-Adresse
|-----
| colspan=4 | Quell-IP-Adresse
|-----
| colspan=2 width="50%" | Quell-IP-Adresse
| colspan=2 width="50%" | Ziel-MAC-Adresse
|-----
| colspan=4 | Ziel-MAC-Adresse
|-----
| colspan=4 | Ziel-IP-Adresse
|-----
| colspan=4 | Ziel-IP-Adresse
|-----
| colspan=4 | Ziel-IP-Adresse
|-----
| colspan=4 | Ziel-IP-Adresse
|}


'''Hardwareadresstyp''' (2 Byte) enthält den Typ der MAC-Adresse im Paket (für Ethernet: <code>1</code>).
'''Hardwareadressgröße''' (1 Byte) enthält die Größe der MAC-Adresse (für Ethernet: <code>6</code>).


'''Protokolladresstyp''' (2 Byte) enthält den Protokolltyp, der für die MAC-Adresse angefordert wird (für IPv4-Adressen: <code>0x0800 (2048)</code>).
'''Protokolladressgröße''' (1 Byte) enthält die Größe des Protokolls (für IPv4: <code>4</code>).

'''Hardwareadressgröße''' (1 Byte) enthält die Größe der MAC-Adresse (für Ethernet: <code>6</code>).

'''Protokolladressgröße''' (1 Byte) enthält die Größe des Protokolls (für IPv4: <code>4</code>, für IPv6: <code>16</code>).


'''Operation''' (2 Byte) enthält den Wert, der angibt, welche Operation ausgeführt werden soll (<code>1</code> für ARP-Anforderung, <code>2</code> für ARP-Antwort).
'''Operation''' (2 Byte) enthält den Wert, der angibt, welche Operation ausgeführt werden soll (<code>1</code> für ARP-Anforderung, <code>2</code> 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-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 oder Next-Hop-Routers.


'''Quell-IP-Adresse''' (4 Bytes bei IPv4, 16 Bytes bei IPv6) enthält bei einer ARP-Anforderung die IP-Adresse des anfragenden Hosts. In einer ARP-Antwort enthält es die IP-Adresse des antwortenden Hosts.
'''Quell-IP-Adresse''' (4 Bytes bei IPv4) enthält bei einer ARP-Anforderung die IP-Adresse des anfragenden Hosts. In einer ARP-Antwort enthält es die IP-Adresse des antwortenden Hosts oder Next-Hop-Routers.


'''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-MAC-Adresse''' (6 Byte) wird in einer ARP-Anforderung ignoriert (meist 00:00:00:00:00:00<sub>16</sub>). In einer ARP-Antwort enthält es die MAC-Adresse des anfragenden Hosts.


'''Ziel-IP-Adresse''' (4 Bytes bei IPv4, 16 Bytes bei IPv6) ist bei einer ARP-Anforderung die IP-Adresse des gesuchten Hosts. In einer ARP-Antwort enthält es die IP-Adresse des anfragenden Hosts.
'''Ziel-IP-Adresse''' (4 Bytes bei IPv4) 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 ==
== Spezielle ARP-Nachrichten ==
Zeile 158: Zeile 120:
=== Proxy ARP ===
=== Proxy ARP ===


[[Proxy]] ARP erlaubt einem [[Router]] ARP-Anforderungen für Hosts zu beantworten.
[[Proxy (Rechnernetz)|Proxy]] ARP erlaubt einem Router, ARP-Anforderungen für Hosts zu beantworten.


Die Hosts befinden sich dabei in verschiedenen Netzen. Bei der Kommunikation ist für die Hosts 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.
Die Hosts befinden sich dabei in durch einen Router getrennten Netzen – verwenden untypischerweise jedoch den gleichen [[Classless Inter-Domain Routing|IP-Adressbereich]]. Bei der Kommunikation ist für die Hosts der Router ''transparent'', d.&nbsp;h. er braucht nicht speziell angesprochen zu werden, sondern die Hosts können wie gewöhnlich Pakete über verschiedene Netze hinweg versenden.


Sendet Computer A eine ARP-Anforderung an Computer B, erwidert der dazwischenliegende Router an Stelle des Computers B mit einer ARP-Antwort und der Hardwareadresse der Schnittstelle (MAC des Ports am Router) auf der die Anfrage empfangen wurde. Der anfragende Computer A sendet dann seine Daten an den Router, der sie dann an Computer B weiterleitet.
Sendet Computer A eine ARP-Anforderung an Computer B, reagiert der dazwischen liegende Router anstelle des Computers B mit einer ARP-Antwort und der Hardware-Adresse der Schnittstelle (MAC-Adresse des Ports am Router), auf der die Anfrage empfangen wurde. Der anfragende Computer A sendet dann seine [[Daten]] an den Router, der sie dann an Computer B weiterleitet.


Proxy ARP kann man am ARP-Cache von Computer A erkennen. Falls für mehrere [[IP-Adresse]]n die selbe [[MAC-Adresse]] eingetragen ist, arbeitet der Router mit dieser MAC-Adresse als Proxy. Die Einträge können auch ein Hinweis auf einen Angriff durch [[ARP-Spoofing]] sein.
Proxy ARP kann man am ARP-Cache von Computer A erkennen. Falls für mehrere IP-Adressen dieselbe MAC-Adresse eingetragen ist, arbeitet der Router mit dieser MAC-Adresse als Proxy. Die Einträge können auch ein Hinweis auf einen Angriff durch [[ARP-Spoofing]] sein.


=== Gratuitous ARP ===
=== Gratuitous ARP ===
''Gratuitous ARP'' (engl. „unaufgefordertes ARP“) bezeichnet eine spezielle Verwendung von ARP. Dabei sendet ein Host ein ARP-Anforderungs-Broadcast, bei dem er seine eigene IP-Adresse als Quell- und Ziel-IP-Adresse einträgt. Damit teilt er seine ggf. neue MAC-Adresse unaufgefordert mit. Das kann mehreren Zwecken dienen:
# Normalerweise darf keine Antwort kommen, denn eine IP-Adresse muss in einem Netz eindeutig sein. Bekommt er trotzdem eine Antwort, ist das für den [[Systemadministrator|Administrator]] ein Hinweis darauf, dass ein Host nicht richtig konfiguriert ist, d.&nbsp;h. die designierte IP-Adresse bereits anderweitig genutzt wird.
# 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.
# Wenn zwei Server aus Gründen der Ausfallsicherheit als Server und Ersatzserver aufgebaut sind und sich eine IP-Adresse teilen und der aktive Verkehr vom einen auf den anderen geschwenkt werden soll, ist die IP-Adresse jetzt über eine andere MAC-Adresse zu erreichen. Diese neue MAC-/IP-Adress-Zuordnung muss bekannt gemacht werden. Sonst bekommt niemand den Wechsel mit.
# In einem ''[[Mobile IP]]''-Szenario sendet der ''Home Agent'' einen ''Gratuitous ARP'', wenn sich der ''Mobile Host'' aus dem Heimatnetz entfernt, um die Pakete stellvertretend für diesen zu empfangen. Analog sendet der ''Mobile Host'' einen ''Gratuitous ARP'', sobald er sich wieder im Netz befindet.


=== RARP – Reverse-ARP ===
''Gratuitous ARP'' (engl. "unaufgefordertes 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. Damit teilt er seine ggf. neue MAC-Adresse unaufgefordert mit. Das kann drei Zwecken dienen:
Das [[Reverse Address Resolution Protocol|Reverse-ARP (RARP)]] funktioniert umgekehrt zu ARP. Es kann also MAC-Adressen zu IP-Adressen auflösen. Dies ist für die Ermittlung der eigenen IP-Adresse bei Geräten nützlich, bei denen keine dauerhafte Speicherung oder Zuweisung einer Adresse vorgesehen ist. Beide Protokolle besitzen das gleiche Paketformat. Die Anwendungsbereiche von RARP und ARP unterscheiden sich jedoch stark voneinander.
# Normalerweise darf keine Antwort kommen, denn eine IP-Adresse muss in einem Netz eindeutig sein. Bekommt er trotzdem eine Antwort, ist das für den [[Systemadministrator|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.
# Wenn zwei Server aus Gründen der Ausfallsicherheit als Server und Ersatzserver aufgebaut sind und sich eine IP teilen und der aktive Verkehr vom einen auf den anderen geschwenkt werden soll, ist die IP jetzt über eine andere MAC Adresse zu erreichen. Diese neue MAC-Adress-IP-Zuordnung muss bekannt gemacht werden. Sonst bekommt niemand den Wechsel mit.
# In einem [[Mobile IP]] Szenario sendet der Home Agent einen Gratuitous ARP, wenn sich der Mobile Host aus dem Heimatnetz entfernt, um die Pakete stellvertretend für diesen zu empfangen. Analog sendet der Mobile Host einen Gratuitous ARP, sobald er sich wieder im Netz befindet.


== Probleme ==
=== RARP – Reverse ARP ===
ARP ist für den Benutzer unsichtbar, sodass das Vorhandensein dieses Protokolls meist nur bemerkt wird, wenn seltene Fehler auftreten.


Die Dauer der Gültigkeit eines ARP-Eintrags (normalerweise wenige 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 Netz oder einem Fehler in der Netzwerkimplementierung. Darüber hinaus ermöglicht nicht jedes Betriebssystem das Erzeugen eines korrigierten Eintrags oder einer Anforderung.
[[Reverse Address Resolution Protocol|RARP]] funktioniert umgekehrt zu ARP. Es kann also MAC-Adressen zu IP-Adressen auflösen. Dies ist für die Ermittlung der eigenen IP-Adresse bei plattenlosen Geräten nützlich. Beide Protokolle besitzen das gleiche Paketformat. Die Anwendungsbereiche von RARP und ARP unterscheiden sich jedoch stark voneinander.


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 im Netz, ein fehlerhafter Eintrag bleibt übrig.
== Probleme ==


=== ARP-Spoofing ===
ARP ist für den Benutzer unsichtbar, so dass das Vorhandensein dieses Protokolls meist nur bemerkt wird, wenn seltene Fehler auftreten.
{{Hauptartikel|ARP-Spoofing}}
Mit [[ARP-Spoofing]] ist es möglich, absichtlich eine falsche Hardwareadresse in einem Netz zu verteilen. Dadurch kann der Datenverkehr für einen Rechner auf einen anderen umgelenkt und eventuell von diesem sogar verändert werden ([[Man-in-the-Middle-Angriff]]). Das stellt ein [[Netzwerksicherheit|Sicherheitsproblem]] dar.


ARP-Spoofing ist aufgrund der Architektur von ARP sehr einfach zu realisieren. Es müssen einfach ARP-Pakete mit den falschen MAC-/IP-Kombinationen versendet werden. Daraufhin wird keiner der Empfängerrechner irgendwelche Überprüfungen anstellen, sondern die Daten einfach in seinen Cache eintragen.
Die Länge der Gültigkeit eines ARP-Eintrags (normalerweise wenige 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 Netz 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 im Netz, ein fehlerhafter Eintrag bleibt übrig.


Moderne [[Implementierung]]en ändern die ARP-Tabelle nur für ARP-Antworten, für die vorher vom betreffenden Host eine Anforderung generiert wurde.
Mit [[ARP-Spoofing]] ist es auch möglich, absichtlich eine falsche Hardwareadresse in einem Netz 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 ([[Man-In-The-Middle-Angriff]]). Dies stellt ein [[Netzwerksicherheit|Sicherheitsproblem]] dar.


== Siehe auch ==
Moderne [[Implementierung]]en ändern die ARP-Tabelle nur für ARP-Antworten, für die vorher von dem betreffenden Host eine ARP-Anforderung generiert wurde.
* [[Protokollstapel]]
* [[OSI-Modell]]
* [[Datenkapselung (Netzwerktechnik)]]
* [[Service Access Point]]


verwandte Protokolle:
==Siehe auch==
[[Reverse Address Resolution Protocol]]
* [[Internet Control Message Protocol]]
* [[Internet Protocol]] ([[IPv4]], [[IPv6]])
* [[Neighbor Discovery Protocol]]
* [[Reverse Address Resolution Protocol]]


== Weblinks ==
== Weblinks ==
{{Commonscat}}
* RFC 826 – Address Resolution Protocol
* {{RFC-Internet |Autor=David C. Plummer |RFC=826 |Titel=An Ethernet Address Resolution Protocol – or – Converting Network Protocol Addresses |Datum=1982-11}}
* [http://wiki.manitu.de/index.php/Server:Fehlermeldung_%22kernel:_Neighbour_table_overflow%22#Der_ARP-Cache_.28die_neighbour_table.29_des_Linux_Kernels ARP-Cache-Einstellungen unter Linux.] manitu.de
* {{man|8|arp|gnu}}


== Einzelnachweise ==
[[Kategorie:Netzwerkprotokoll]]
<references />


[[Kategorie:Netzwerkprotokoll (Sicherungsschicht)]]
[[ca:Address Resolution Protocol]]
[[cs:Address Resolution Protocol]]
[[Kategorie:Internet Protocol]]
[[da:Address resolution protocol]]
[[el:Address Resolution Protocol]]
[[en:Address Resolution Protocol]]
[[es:Address Resolution Protocol]]
[[fi:ARP]]
[[fr:Address Resolution Protocol]]
[[he:Address Resolution Protocol]]
[[hu:ARP]]
[[it:Address Resolution Protocol]]
[[ja:Address Resolution Protocol]]
[[nl:Address Resolution Protocol]]
[[nn:Address Resolution Protocol]]
[[no:Address Resolution Protocol]]
[[pl:ARP]]
[[pt:Address Resolution Protocol]]
[[ru:ARP]]
[[sv:ARP]]
[[tr:ARP]]

Aktuelle Version vom 26. Januar 2025, 14:51 Uhr

Address Resolution Protocol
Familie: Internetprotokollfamilie
Einsatzfeld: Netzwerkadressenzuordnung
aufbauend auf Netzzugangsschicht
Standard: RFC 826 (1982)[1]
ARP im TCP/IP-Protokollstapel:
Anwendung HTTP IMAP SMTP DNS
Transport TCP UDP
Internet IPv4
Netzzugang ARP
Ethernet Token
Bus
Token
Ring
FDDI

Das Address Resolution Protocol (ARP) ist ein Netzwerkprotokoll, das zu einer Netzwerkadresse der Internetschicht die physische Adresse (Hardware-Adresse) der Netzzugangsschicht ermittelt und diese Zuordnung gegebenenfalls in den ARP-Tabellen der beteiligten Rechner hinterlegt. Es wird fast ausschließlich im Zusammenhang mit IPv4-Adressierung auf Ethernet-Netzen, also zur Ermittlung von MAC-Adressen zu gegebenen IP-Adressen verwendet, obwohl es nicht darauf beschränkt ist. Für IPv6 wird diese Funktionalität nicht von ARP, sondern durch das Neighbor Discovery Protocol (NDP) bereitgestellt.

MAC-Adressen werden vom Hersteller einer Ethernet-Netzwerkkarte oder eines Ethernet-fähigen Gerätes vergeben. Die Adresse jeder Schnittstelle ist dabei theoretisch weltweit eindeutig. Bei einigen Netzen, wie zum Beispiel Novell und DECnet, werden die Netzwerkadressen eindeutig auf die Ethernet-Adressen 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-Adressen werden von der IANA (Internet Assigned Numbers Authority) zugeteilt. Da IPv4-Adressen eine Länge von nur 32 Bits haben, können die 48 Bit langen MAC-Adressen damit nicht direkt abgebildet werden. Es kann deshalb keine feste Beziehung zwischen MAC-Adressen und IP-Adressen hergestellt werden. Bevor ein Rechner in einem Ethernet an einen Rechner im selben Subnetz ein IP-Paket sendet, muss er die Information in einen Ethernet-Frame verpacken. Dazu muss er die MAC-Adresse des Zielrechners kennen und im entsprechenden Feld des Ethernet-Frames einfügen. Ist ihm diese nicht bekannt, kann er das IP-Paket nicht zustellen. Stattdessen ermittelt er dann mit Hilfe des ARP zunächst die MAC-Adresse des Zielrechners.

Funktionsweise am Beispiel Ethernet

[Bearbeiten | Quelltext bearbeiten]

Es wird eine ARP-Anforderung (ARP Request) mit der MAC-Adresse und der IP-Adresse des anfragenden Computers als Sender-IP-Adresse und der IP-Adresse des gesuchten Computers als Empfänger-IP-Adresse an alle Computer des lokalen Netzwerkes gesendet. Als Empfänger-MAC-Adresse wird dazu die Broadcast-Adresse ff-ff-ff-ff-ff-ff16 im Ethernet-Frame verwendet, damit alle Computer des lokalen Netzwerkes die ARP-Anforderung empfangen. Jedoch wird die Ziel-MAC-Adresse innerhalb der ARP-Anforderung mit 00-00-00-00-00-0016 gefüllt, um anzuzeigen, dass der Sender der ARP-Anforderung diese MAC-Adresse herausfinden möchte. Empfängt ein Computer ein solches Paket, sieht er nach, ob dieses Paket seine IP-Adresse als Empfänger-IP-Adresse enthält. Wenn dies der Fall ist, antwortet er mit dem Zurücksenden seiner MAC-Adresse und IP-Adresse (ARP-Antwort oder ARP-Reply) per Broadcast oder als Unicast. Der Empfänger trägt nach Empfang der Antwort die empfangene Kombination von IP- und MAC-Adresse in seine ARP-Tabelle, auch ARP-Cache genannt, ein. Für ARP-Request und ARP-Reply wird das gleiche Paketformat verwendet.

Zusätzlich können die Empfänger des ARP-Requests ebenfalls die Kombination von IP-Adresse und MAC-Adresse des anfragenden Computers in ihre ARP-Tabelle eintragen bzw. einen bestehenden Eintrag aktualisieren. Insbesondere der Rechner mit der im ARP-Request angefragten IP-Adresse sollte diese Eintragung vornehmen, da anzunehmen ist, dass der ARP-Request als Vorbereitung für weitere Kommunikation auf höherer Protokollebene dienen soll, wofür er dann für eventuelle Antworten ebenfalls die MAC-Adresse des Anfragenden benötigt.

Die Einträge im ARP-Cache bestehen neben der Zuordnung von IP-Adresse und MAC-Adresse aus Angaben zu Eintragungszeitpunkt, Gültigkeitsdauer oder Alter des Eintrags und ggf. zum Protokolltyp. Wie lange ein Eintrag im ARP-Cache verbleibt, bevor er aus dem ARP-Cache gelöscht wird, ist implementierungsabhängig und liegt meist im Bereich von wenigen Minuten. So verwerfen aktuelle Linux-Distributionen Einträge nach etwa 5 Minuten. Sobald ein Eintrag in der Tabelle genutzt wird, wird dessen Ablaufzeit verlängert.

Unter Unix und Windows kann der ARP-Cache mit arp beziehungsweise arp -a angezeigt und mit dem entsprechenden Programm auch manipuliert werden. Mit dem Zusatzprogramm arping können manuell Anforderungen versendet werden.

ARP im globalen Zusammenhang

[Bearbeiten | Quelltext bearbeiten]

Das ARP ist für die Auflösung der MAC-Adressen im lokalen Netzwerk zuständig. Sollen Daten über Netzwerkgrenzen hinweg gesendet werden, wird das Internet-Protokoll (IP) verwendet. IP-Implementierungen sind in der Lage, zu erkennen, dass ein Paket nicht für das lokale Subnetz bestimmt ist und senden es an einen lokalen Router, der sich um die Weiterleitung des Pakets kümmert. Dieser Router hat wiederum eine lokale MAC-Adresse, die über ARP ermittelt werden kann.

Das folgende Flussdiagramm stellt den Zusammenhang von IP-Routing mit ARP dar:

Schematische Darstellung von ARP und Routing

Das ARP-Paket schließt sich an den Ethernet-MAC-Header an. Das Typfeld im Ethernet-Frame wird auf 0x0806 (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 Ethernet-Frame 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 auch für andere Protokolle geeignet. Für IPv6 könnten die Protokolladressgröße statt auf vier auf 16 Bytes gesetzt und die Adressfelder auf 128 Bits (= 16 Byte) verlängert werden, jedoch wird ARP für IPv6 durch das Neighbor Discovery Protocol (NDP) ersetzt, welches auf ICMPv6 basiert.

ARP-Nachrichtenformat am Beispiel Ethernet-MAC-Adressen und IPv4-Adressen
octet offset 0 1
0 Hardwareadresstyp
2 Protokolladresstyp
4 Hardwareadressgröße Protokolladressgröße
6 Operation
8 Quell-MAC-Adresse (erste 2 Bytes)
10 (nächste 2 Bytes)
12 (letzte 2 Bytes)
14 Quell-IP-Adresse (erste 2 Bytes)
16 (letzte 2 Bytes)
18 Ziel-MAC-Adresse (erste 2 Bytes)
20 (nächste 2 Bytes)
22 (letzte 2 Bytes)
24 Ziel-IP-Adresse (erste 2 Bytes)
26 (letzte 2 Bytes)

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 IPv4-Adressen: 0x0800 (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).

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 oder Next-Hop-Routers.

Quell-IP-Adresse (4 Bytes bei IPv4) enthält bei einer ARP-Anforderung die IP-Adresse des anfragenden Hosts. In einer ARP-Antwort enthält es die IP-Adresse des antwortenden Hosts oder Next-Hop-Routers.

Ziel-MAC-Adresse (6 Byte) wird in einer ARP-Anforderung ignoriert (meist 00:00:00:00:00:0016). In einer ARP-Antwort enthält es die MAC-Adresse des anfragenden Hosts.

Ziel-IP-Adresse (4 Bytes bei IPv4) 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

[Bearbeiten | Quelltext bearbeiten]

Proxy ARP erlaubt einem Router, ARP-Anforderungen für Hosts zu beantworten.

Die Hosts befinden sich dabei in durch einen Router getrennten Netzen – verwenden untypischerweise jedoch den gleichen IP-Adressbereich. Bei der Kommunikation ist für die Hosts der Router transparent, d. h. er braucht nicht speziell angesprochen zu werden, sondern die Hosts können wie gewöhnlich Pakete über verschiedene Netze hinweg versenden.

Sendet Computer A eine ARP-Anforderung an Computer B, reagiert der dazwischen liegende Router anstelle des Computers B mit einer ARP-Antwort und der Hardware-Adresse der Schnittstelle (MAC-Adresse des Ports am Router), auf der die Anfrage empfangen wurde. Der anfragende Computer A sendet dann seine Daten an den Router, der sie dann an Computer B weiterleitet.

Proxy ARP kann man am ARP-Cache von Computer A erkennen. Falls für mehrere IP-Adressen dieselbe MAC-Adresse eingetragen ist, arbeitet der Router mit dieser MAC-Adresse als Proxy. Die Einträge können auch ein Hinweis auf einen Angriff durch ARP-Spoofing sein.

Gratuitous ARP (engl. „unaufgefordertes ARP“) bezeichnet eine spezielle Verwendung von ARP. Dabei sendet ein Host ein ARP-Anforderungs-Broadcast, bei dem er seine eigene IP-Adresse als Quell- und Ziel-IP-Adresse einträgt. Damit teilt er seine ggf. neue MAC-Adresse unaufgefordert mit. Das kann mehreren Zwecken dienen:

  1. Normalerweise darf keine Antwort kommen, denn eine IP-Adresse muss in einem Netz eindeutig sein. Bekommt er trotzdem eine Antwort, ist das für den Administrator ein Hinweis darauf, dass ein Host nicht richtig konfiguriert ist, d. h. die designierte IP-Adresse bereits anderweitig genutzt wird.
  2. 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.
  3. Wenn zwei Server aus Gründen der Ausfallsicherheit als Server und Ersatzserver aufgebaut sind und sich eine IP-Adresse teilen und der aktive Verkehr vom einen auf den anderen geschwenkt werden soll, ist die IP-Adresse jetzt über eine andere MAC-Adresse zu erreichen. Diese neue MAC-/IP-Adress-Zuordnung muss bekannt gemacht werden. Sonst bekommt niemand den Wechsel mit.
  4. In einem Mobile IP-Szenario sendet der Home Agent einen Gratuitous ARP, wenn sich der Mobile Host aus dem Heimatnetz entfernt, um die Pakete stellvertretend für diesen zu empfangen. Analog sendet der Mobile Host einen Gratuitous ARP, sobald er sich wieder im Netz befindet.

RARP – Reverse-ARP

[Bearbeiten | Quelltext bearbeiten]

Das Reverse-ARP (RARP) funktioniert umgekehrt zu ARP. Es kann also MAC-Adressen zu IP-Adressen auflösen. Dies ist für die Ermittlung der eigenen IP-Adresse bei Geräten nützlich, bei denen keine dauerhafte Speicherung oder Zuweisung einer Adresse vorgesehen ist. Beide Protokolle besitzen das gleiche Paketformat. Die Anwendungsbereiche von RARP und ARP unterscheiden sich jedoch stark voneinander.

ARP ist für den Benutzer unsichtbar, sodass das Vorhandensein dieses Protokolls meist nur bemerkt wird, wenn seltene Fehler auftreten.

Die Dauer der Gültigkeit eines ARP-Eintrags (normalerweise wenige 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 Netz 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 im Netz, ein fehlerhafter Eintrag bleibt übrig.

Mit ARP-Spoofing ist es möglich, absichtlich eine falsche Hardwareadresse in einem Netz zu verteilen. Dadurch kann der Datenverkehr für einen Rechner auf einen anderen umgelenkt und eventuell von diesem sogar verändert werden (Man-in-the-Middle-Angriff). Das stellt ein Sicherheitsproblem dar.

ARP-Spoofing ist aufgrund der Architektur von ARP sehr einfach zu realisieren. Es müssen einfach ARP-Pakete mit den falschen MAC-/IP-Kombinationen versendet werden. Daraufhin wird keiner der Empfängerrechner irgendwelche Überprüfungen anstellen, sondern die Daten einfach in seinen Cache eintragen.

Moderne Implementierungen ändern die ARP-Tabelle nur für ARP-Antworten, für die vorher vom betreffenden Host eine Anforderung generiert wurde.

verwandte Protokolle:

Commons: Address Resolution Protocol – Sammlung von Bildern, Videos und Audiodateien
  • David C. Plummer: RFC: 826 – An Ethernet Address Resolution Protocol – or – Converting Network Protocol Addresses. November 1982 (englisch).
  • ARP-Cache-Einstellungen unter Linux. manitu.de
  • arp(8) – Debian GNU/Linux Systemverwaltung Handbuchseite

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. RFC: 826 – An Ethernet Address Resolution Protocol – or – Converting Network Protocol Addresses. November 1982 (englisch).