{"id":100,"date":"2011-06-24T23:58:56","date_gmt":"2011-06-24T21:58:56","guid":{"rendered":"https:\/\/sgaul.de\/?p=100"},"modified":"2014-03-13T21:34:55","modified_gmt":"2014-03-13T20:34:55","slug":"von-der-ip-zur-mac-adresse-arp","status":"publish","type":"post","link":"https:\/\/sgaul.de\/2011\/06\/24\/von-der-ip-zur-mac-adresse-arp\/","title":{"rendered":"Von der IP- zur Mac-Adresse: ARP"},"content":{"rendered":"

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

Nichtsdestotrotz nutzen zwei direkt verbundene Netzwerkteilnehmer sogenannte MAC-Adressen (Media-Access-Control)<\/strong>, um sich gegenseitig eindeutig zu identifizieren und Datenpakete zu tauschen. Ausgehend von einer IP-Adresse muss also zun\u00e4chst eine MAC-Adresse ermittelt werden, um zu wissen, an welchen Nachbarn Pakete verschickt werden m\u00fcssen. Eine hierf\u00fcr verwendete Technik hei\u00dft Address Resolution Protocol (ARP)<\/strong>.<\/p>\n

Im OSI-Schichtenmodell…<\/h2>\n

Datentransport im Netzwerk basiert auf verschiedenen Abstraktionsebenen. Im OSI-Schichtenmodell k\u00f6nnen wir ARP, IP und MAC folgenderma\u00dfen einordnen:<\/p>\n\n\n\n\n\n\n
OSI-Schicht<\/th>\nSchichtname<\/th>\nProtokolle<\/th>\n<\/tr>\n
1<\/td>\nPhysical Layer<\/td>\n<\/td>\n<\/tr>\n
2<\/td>\nData Link Layer<\/td>\nMAC<\/td>\n<\/tr>\n
3<\/td>\nNetwork Layer<\/td>\nIP, ARP<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n

Ausgehend von Schicht 3 brauchen wir nun also ein Protokoll, um Datenpakete f\u00fcr Schicht 2 umzuwandeln. Da das entsprechende Protokoll mit Layer 3 vertraut sein muss, ist ebenfalls in diese Schicht einzuordnen.<\/p>\n

Die Funktionsweise von ARP<\/h2>\n

ARP verfolgt einen recht simplen Ansatz. Zu einer gegebenen IP-Adresse wird eine Anfrage an alle Nachbarn verschickt, wer \u00fcber die entsprechende Adresse verf\u00fcgt:<\/p>\n

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

In der vorletzten Zeile sehen wir eine Anfrage der 192.168.1.1<\/code>, wer der Nachbarn die Adresse 192.168.1.33<\/code> 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<\/code>. Interessanterweise sieht man hier eine weitere angenehme Eigenschaft von ARP: Es ist f\u00fcr den Sendenden unwichtig, ob der Antwortende selbst wirklich die entsprechende IP hat, oder aber nur als Zwischenstation an die Adresse dient.<\/p>\n

Flexibilit\u00e4t<\/h2>\n

ARP ist generell sehr flexibel organisiert und keineswegs auf IP und MAC beschr\u00e4nkt. Erst im ARP-Paket werden Protokoll und Hardware spezifiziert, welche \u00fcbersetzt werden sollen:<\/p>\n\n\n\n\n\n\n\n\n\n\n\n
Header-Bytes<\/th>\nInhalt<\/th>\n<\/tr>\n
1-2<\/td>\nTyp der Hardware, zum Beispiel 1 f\u00fcr Ethernet<\/td>\n<\/tr>\n
3-4<\/td>\nTyp der Protokolladresse, etwa IPv4<\/td>\n<\/tr>\n
5<\/td>\nGr\u00f6\u00dfe der Hardwareadresse<\/td>\n<\/tr>\n
6<\/td>\nGr\u00f6\u00dfe der Protokolladresse<\/td>\n<\/tr>\n
entsprechend<\/td>\nHardwareadresse des Fragestellers<\/td>\n<\/tr>\n
entsprechend<\/td>\nProtokolladresse des Fragestellers<\/td>\n<\/tr>\n
entsprechend<\/td>\nHardwareadresse des Antwortenden<\/td>\n<\/tr>\n
entsprechend<\/td>\nProtokolladresse des Antwortenden<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n

Zukunft<\/h2>\n

Ungeachtet seiner M\u00f6glichkeiten, auch bei anderen Protokollen eingesetzt werden zu k\u00f6nnen, scheint ARP das Schicksal von IPv4 zu teilen: In der sechsten Version des Internet-Protokolls wird auf das neue Neighbor Discovery Protocol (NDP)<\/strong> gesetzt, welches dort die selben Aufgaben \u00fcbernimmt.<\/p>\n

Quellen<\/h2>\n