Content
- Das Address Resolution Protocol (ARP, RFC 826) arbeitet auf der Schicht 2, der Sicherungsschicht, des OSI-Schichtenmodells und setzt IP-Adressen in Hardware- und MAC-Adressen um. Alle Netzwerktypen und -topologien benutzen Hardware-Adressen um die Datenpakete zu adressieren. Damit nun ein IP-Paket an sein Ziel findet, muss die Hardware-Adresse des Ziels bekannt sein.
Jede Netzwerkkarte besitzt eine einzigartige und eindeutige Hardware-Adresse, die fest auf der Karte eingestellt ist. - Bevor nun ein Datenpaket verschickt werden kann, muss durch ARP eine Adressauflösung erfolgen. Dazu benötigt ARP Zugriff auf IP-Adresse und Hardware-Adresse. Um an die Hardware-Adresse einer anderen Station zu kommen verschickt ARP z. B. einen Ethernet-Frame als Broadcast-Meldung mit der MAC-Adresse "FF FF FF FF FF FF". Diese Meldung wird von jedem Netzwerkinterface entgegengenommen und ausgewertet. Der Ethernet-Frame enthält die IP-Adresse der gesuchten Station. Fühlt sich eine Station mit dieser IP-Adresse angesprochen, schickt sie eine ARP-Antwort an den Sender zurück. Die gemeldete MAC-Adresse wird dann im lokalen ARP-Cache des Senders gespeichert. Dieser Cache dient zur schnelleren ARP-Adressauflösung.
- Häufig findet man in anderen Dokumentationen, das ARP ein Schicht 3 Protokoll ist. Allerdings sind ARP und auch RARP für die Adressauflösung zuständig, was eigentlich kein Schicht 3 Protokoll ist. Da ARP und IP aber so eng verzahnt sind, wäre ARP eigentlich irgendwo zwischen Schicht 3 und Schicht 2 richtig angesiedelt.
Ablauf einer ARP-Adressauflösung
- Eine ARP-Auflösung unterscheidet zwischen lokalen IP-Adressen und IP-Adressen in einem anderen Subnetz. Als erstes wird anhand der Subnetzmaske festgestellt, ob sich die IP-Adresse im gleichen Subnetz befindet. Ist das der Fall, wird im ARP-Cache geprüft, ob bereits eine MAC-Adresse für die IP-Adresse hinterlegt ist. Wenn ja, dann wird die MAC-Adresse zur Adressierung verwendet. Wenn nicht, setzt ARP eine Anfrage mit der IP-Adresse nach der Hardware-Adresse in das Netzwerk. Diese Anfrage wird von allen Stationen im selben Subnetz entgegengenommen und ausgewertet. Die Stationen vergleichen die gesendete IP-Adresse mit ihrer eigenen. Wenn sie nicht übereinstimmt, wird die Anfrage verworfen. Wenn die IP-Adresse übereinstimmt schickt die betreffende Station eine ARP-Antwort direkt an den Sender der ARP-Anfrage. Dieser speichert die Hardware-Adresse in seinem Cache. Da bei beiden Stationen die Hardware-Adresse bekannt sind, können sie nun miteinander Daten austauschen.
- Befindet sich eine IP-Adresse nicht im gleichen Subnetz, geht ARP über das Standard-Gateway. Findet ARP die Hardware-Adresse des Standard-Gateways im Cache nicht, wird eine lokale ARP-Adressauflösung ausgelöst. Ist die Hardware-Adresse des Standard-Gateways bekannt, schickt der Sender bereits sein erstes Datenpaket an die Ziel-Station. Der Router (Standard-Gateway) nimmt das Datenpaket in Empfang und untersucht den IP-Header. Der Router überprüft, ob sich die Ziel-IP-Adresse in einem angeschlossenen Subnetz befindet. Wenn ja, ermittelt er anhand der lokalen ARP-Adressauflösung die MAC-Adresse der Ziel-Station. Anschließend leitet er das Datenpaket weiter. Ist das Ziel in einem entfernten Subnetz, überprüft der Router seine Routing-Tabelle, ob ein Weg zum Ziel bekannt ist. Ist das nicht der Fall steht dem Router auch ein Standard-Gateway zu Verfügung. Der Router führt für sein Standard-Gateway eine ARP-Adressauflösung durch und leitet das Datenpaket an dieses weiter.
- Die vorangegangenen Schritte wiederholen sich so oft, bis das Datenpaket sein Ziel erreicht oder das IP-Header-Feld TTL auf den Wert 0 springt. Dann wird das Datenpaket vom Netz genommen.
Erreicht das Datenpaket irgendwann doch sein Ziel, schreibt die betreffende Station seine Rückantwort in ein ICMP-Paket an den Sender. In dieser Antwort wird falls möglich ein Gateway vermerkt, über das die beiden Stationen miteinander kommunizieren. So werden weitere ARP-Adressauflösungen und dadurch Broadcasts vermieden.
ARP-Cache
- Durch den ARP-Cache wird vermieden, dass bei jedem Datenpaket an das selbe Ziel wieder und immer wieder ein ARP-Broadcast ausgelöst wird. Häufig benutzte Hardware-Adressen sind im ARP-Cache gespeichert. Die Einträge im ARP-Cache können statisch oder dynamisch sein.
- Statische Einträge können manuell hinzugefügt und gelöscht werden. Dynamische Einträge werden durch die ARP-Adressauflösung erzeugt.
- Jeder dynamische Eintrag bekommt einen Zeitstempel. Ist er nach zwei Minuten nicht mehr abgerufen worden, wird der Eintrag gelöscht. Wird eine Adresse auch nach zwei Minuten noch benutzt, wird der Eintrag erst nach zehn Minuten gelöscht. Ist der ARP-Cache für neue Einträge zu klein, werden alte Einträge entfernt.
- Wird die Hardware neu gestartet oder ausgeschaltet, wird der ARP-Cache gelöscht. Es gehen dabei auch die statischen Einträge verloren.
Fehler und Probleme mit ARP
- Grundsätzlich gibt es keine Probleme oder Fehler mit ARP, solange keine statischen Einträge im ARP-Cache vorgenommen werden oder Hardware-Adressen von Netzwerkkarten verändert werden.
ARP läuft für den Benutzer ganz im Verborgenen.
Im LAN, speziell im Ethernet, kommunizieren die Geräte allerdings nicht direkt über IP-Adressen, sondern über unsere bekannten 48-stellige MAC-Adresse.
Unser Rechner kennt in einem IP-Netzwerk allerdings nur die IP-Adresse des Rechners mit dem er reden soll, zum Beispiel die IP-Adresse seines Anmeldeservers.
Ein Rechner der frisch eingeschaltet wird, muss also zuerst einmal die MAC-Adresse seines Anmeldeservers herausfinden. Um das zu tun sendet er einen ARP-Request.
Mann kann sich das etwa so vorstellen: Der Rechner ruft nach dem Hochfahren ins Netz hinaus :
- »Ich bin der Rechner mit der MAC-Adresse xx-xx-xx-xx-xx-xx und der IP-Adresse yyy.yyy.yyy.yyy. Ich soll mit dem Rechner mit der IP-Adresse zzz.zzz.zzz.zzz reden, weiss jemand dessen MAC-Adresse?«
- Das ganze LAN hört diese Ankündigung und merkt sich gleich das mitgelieferte Adressenpärchen, aber nur der Rechner mit der IP-Adresse zzz.zzz.zzz.zzz antwortet und sagt:
- »Ja Hallo, ich bin der Rechner mit der IP-Adresse zzz.zzz.zzz.zzz und meine MAC-Adresse ist aa-aa-aa-aa-aa-aa.«
Etwas technischer ausgedrückt sieht das so aus: Wenn eine Maschine eine Anforderung an eine IP-Adresse erhält, dann sieht sie in ihrem ARP-Cache nach ob sie die entsprechende MAC-Adressse schon kennt.
Bei einem ARP-Request werden alle Felder bis auf die Hardware-Adresse des Empfängers genutzt (genau die versuchen wir ja gerade herauszufinden )
Dieser Request wird nun von allen Maschinen im Netz gehört, und gegebenenfalls genutzt um den ARP-Cache auf den neuesten Stand zu bringen. Die Maschine nach der gefragt wird sendet dann einen ARP-Reply der genauso aussieht wie der Request, aber alle Felder nutzt. Auch dieses Paket wird wieder genutzt um den ARP-Cache aller Maschinen im Netz auf den neuesten Stand zu bringen.
Einträge im ARP-Cache die nicht statisch sind werden nach einer bestimmten Zeit wieder gelöscht.