Address Resolution Protocol
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.
Inhaltsverzeichnis
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.

