Address Resolution Protocol

Aus Lowlevel
Wechseln zu:Navigation, Suche

Das Address Resolution Protocol (ARP) dient dazu, Netzwerkadressen zu physikalischen Adressen (bzw. Hardwareadressen) aufzulösen. Es wird fast ausschließlich in Ethernetnetzwerken verwendet, um IPv4-Adressen zu MAC-Adressen aufzulösen. Für IPv6 wird ARP nicht mehr verwendet, dort werden die neuen "Neighbor Discovery"-Mechanismen benutzt.

Ablauf

Wenn ein Computer A ein IP-Paket zu einem anderen Computer B im Netzwerk senden will, muss er dessen IP-Adresse kennen. Damit B das Paket sicher empfängt, muss jedoch auch dessen MAC-Adresse bekannt sein. Diese wird mittels ARP bestimmt. Dazu sendet A einen ARP-Request, in welchem er seine eigene MAC-Adresse, seine IP-Adresse und die IP-Adresse von B einträgt. Dieser Request wird an alle Computer im Netzwerk gesendet, indem als Ziel-MAC-Adresse FF:FF:FF:FF:FF:FF eingetragen wird. Der Computer mit der angegebenen IP-Adresse – also B – sollte dann mit einem ARP-Reply antworten. Dort trägt er seine MAC-Adresse, seine IP-Adresse, die IP-Adresse von A und die MAC-Adresse von A ein. A wird dieses Paket empfangen und kann dort die MAC-Adresse von B auslesen.

Die Zuordnung IP <-> MAC sollte dann von A in einem ARP-Cache eingetragen werden, damit A nicht vor jedem Paket nach der MAC-Adresse von B fragen muss. B muss nun übrigens keinen ARP-Request an A senden, um dessen MAC-Adresse herauszufinden, da B diese Adresse aus dem ARP-Request von A herauslesen kann.

Aufbau von ARP-Paketen

Übersicht

0 4 8 12 16 20 24 28 31
Hardwareadresstyp Netzwerkadresstyp
Hardwareadresslänge Netzwerkadresslänge Operation
Absender-MAC-Adresse
Absender-MAC-Adresse (Fortsetzung) Absender-IP-Adresse
Absender-IP-Adresse (Fortsetzung) Empfänger-MAC-Adresse
Empfänger-MAC-Adresse (Fortsetzung)
Empfänger-IP-Adresse


Genaue Betrachtung

Bitte beachten: Wie bei vielen Netzwerkprotokollen wird auch bei ARP Big-Endian verwendet.

Offset Länge Beschreibung
0x00 2 Hardwareadresstyp (0x0001 für Ethernet, also MAC)
0x02 2 Netzwerkadresstyp (0x0800 für IPv4)
0x04 1 Hardwareadresslänge (6 Bytes für MAC-Adressen)
0x05 1 Netzwerkadresslänge (4 Bytes für IPv4-Adressen)
0x06 2 Typ der Operation (1 für Request, 2 für Reply)
0x08 6 MAC-Adresse des Absenders
0x0E 4 IP-Adresse des Absenders
0x12 6 MAC-Adresse des Zieles
0x18 4 IP-Adresse des Zieles

Bei unbekannter MAC-Adresse wird im Ethernetpaket als Ziel-MAC-Adresse FF:FF:FF:FF:FF:FF eingetragen und im ARP-Paket zum Beispiel 00:00:00:00:00:00 (wobei man dort theoretisch irgendeine beliebige Adresse eintragen könnte).

Im Typfeld des Ethernetpaketes muss übrigens 0x0806 für ARP eingetragen werden.