Von der IP- zur Mac-Adresse: ARP

Die guten alten IP-Adressen sind vielen Menschen bestens bekannt. Das Internet Protocol erlaubt es, mehrere verbundene Rechner in logische Netze aufzuteilen. Bei der Adressierung ist es somit nicht mehr notwendig zu wissen, wer genau der Empfänger ist, sondern in welchem Netzwerk er sich befindet. Diesem Protokoll verdanken wir nicht zuletzt auch das Internet.

Nichtsdestotrotz nutzen zwei direkt verbundene Netzwerkteilnehmer sogenannte MAC-Adressen (Media-Access-Control), um sich gegenseitig eindeutig zu identifizieren und Datenpakete zu tauschen. Ausgehend von einer IP-Adresse muss also zunächst eine MAC-Adresse ermittelt werden, um zu wissen, an welchen Nachbarn Pakete verschickt werden müssen. Eine hierfür verwendete Technik heißt Address Resolution Protocol (ARP).

Im OSI-Schichtenmodell…

Datentransport im Netzwerk basiert auf verschiedenen Abstraktionsebenen. Im OSI-Schichtenmodell können wir ARP, IP und MAC folgendermaßen einordnen:

OSI-Schicht Schichtname Protokolle
1 Physical Layer
2 Data Link Layer MAC
3 Network Layer IP, ARP

Ausgehend von Schicht 3 brauchen wir nun also ein Protokoll, um Datenpakete für Schicht 2 umzuwandeln. Da das entsprechende Protokoll mit Layer 3 vertraut sein muss, ist ebenfalls in diese Schicht einzuordnen.

Die Funktionsweise von ARP

ARP verfolgt einen recht simplen Ansatz. Zu einer gegebenen IP-Adresse wird eine Anfrage an alle Nachbarn verschickt, wer über die entsprechende Adresse verfügt:

sg@sg-desktop:~$ sudo tcpdump -i eth0 arp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
22:41:04.915921 ARP, Request who-has 192.168.1.33 tell 192.168.1.1, length 46
22:41:04.915947 ARP, Reply 192.168.1.33 is-at 20:cf:30:6e:e1:f6, length 28

In der vorletzten Zeile sehen wir eine Anfrage der 192.168.1.1, wer der Nachbarn die Adresse 192.168.1.33 hat. Zudem wird in dem Paket mitgeteilt, an wen die Antwort geschickt werden soll (letzte Zeile). In dieser Antwort sehen wir, unter welcher MAC-Adresse die entsprechende IP zu erreichen ist: 20:cf:30:6e:e1:f6. Interessanterweise sieht man hier eine weitere angenehme Eigenschaft von ARP: Es ist für den Sendenden unwichtig, ob der Antwortende selbst wirklich die entsprechende IP hat, oder aber nur als Zwischenstation an die Adresse dient.

Flexibilität

ARP ist generell sehr flexibel organisiert und keineswegs auf IP und MAC beschränkt. Erst im ARP-Paket werden Protokoll und Hardware spezifiziert, welche übersetzt werden sollen:

Header-Bytes Inhalt
1-2 Typ der Hardware, zum Beispiel 1 für Ethernet
3-4 Typ der Protokolladresse, etwa IPv4
5 Größe der Hardwareadresse
6 Größe der Protokolladresse
entsprechend Hardwareadresse des Fragestellers
entsprechend Protokolladresse des Fragestellers
entsprechend Hardwareadresse des Antwortenden
entsprechend Protokolladresse des Antwortenden

Zukunft

Ungeachtet seiner Möglichkeiten, auch bei anderen Protokollen eingesetzt werden zu können, scheint ARP das Schicksal von IPv4 zu teilen: In der sechsten Version des Internet-Protokolls wird auf das neue Neighbor Discovery Protocol (NDP) gesetzt, welches dort die selben Aufgaben übernimmt.

Quellen

Zudem basiert dieser Artikel auf meinen Erkenntnissen und Mitschriften aus Vorlesungen an der Universität Rostock.

Artikelbild

Das Artikelbild ist Eigentum von Chris Dag, zur Verfügung gestellt via Flicker zu den Bedingungen „Creative Commons —Attribution 2.0 Generic“.