WikiDer > Protokoll zur Adressauflösung

Address resolution protocol

Es Adressauflösungsprotokoll (ARP) ist ein Protokoll innerhalb TCP/IP Welche Computers - alles auf dem gleichen Subnetzwerk (genauer: LAN) verbunden sind - ermöglicht das Einzigartige Hardware--Adresse (MAC-Adresse) von einem anderen PC innerhalb dieses Netzwerks unter Verwendung der IP-Adresse dieses PCs Die Implementierung von ARP basiert auf dem in beschriebenen Standard RFC 826 von 1982.[1]

Technik

Angenommen, Computer A möchte eine Verbindung zu Computer B herstellen, dessen IP-Adresse Computer A bekannt ist, seine Hardwareadresse jedoch nicht. Computer A sendet dazu eine ARP-Nachricht im Netzwerk. Diese ARP-Nachricht wird als a . gesendet Übertragung. Ein Broadcast bedeutet, dass eine Empfangsadresse (Schicht 2) verwendet wird, die anzeigt, dass die Nachricht tatsächlich gesendet wird jeder Computer, der mit diesem Netzwerk verbunden ist, empfangen werden. Die ARP-Nachricht enthält die IP-Adresse von Computer B. Nur Computer B erkennt seine eigene IP-Adresse und antwortet entsprechend auf die Nachricht mit seiner Hardware-Adresse (auch bekannt als MAC-Adresse erwähnt). An diesem Punkt ist das ARP-Protokoll bereit, da A die Hardwareadresse von B hat.

Zum Vergleich: Man muss Kontakt zu einem „Hans“ aus einer fremden Gruppe aufnehmen. Du stellst dich in die Mitte der Gruppe und schreist laut: "Wer heißt Hans?". Die Person, die mit „Das bin ich!“ antwortet, ist Ihr Ansprechpartner. Wie beim Networking entsteht ein Problem, wenn es mehr Leute namens Hans gibt. Die Wahrscheinlichkeit, dass zwei gleiche Hardwareadressen verbunden sind, ist jedoch recht gering, Ethernet das ist weit verbreitet Hardwareadressen ab 6 Bytes (48 Bits) also gibt es 248 = 281474976710656 (mehr als 281 Billionen) verschiedene Adressen möglich. Im Allgemeinen werden die ersten drei Bytes als Vendor-ID und die letzten drei als fortlaufende Nummer pro Vendor verwendet.

Beispiel für ARP-Kommunikation

Unten ist ein Beispiel für eine vollständige ARP-Transaktion: also die ARP-Anfrage und die ARP-Antwort. Für dieses Beispiel verwenden wir die folgenden Daten:

Der anfragende PC mit IP-Adresse 192.168.1.11 und Ethernet-MAC-Adresse 00:24:d7:c9:5f:f8 (=Intel WiFi MAC-Adresse)
Der Host/Server hat eine IP-Adresse von 192.168.1.10 und eine Ethernet-MAC-Adresse 00:16:ce:29:81:22 (=HonHai Precision Industries)[2]

Jeder Netzwerkkarte (NIC) erstellt eine Tabelle mit den IP-Adressen in Ihrem lokalen IP-Subnetz und den entsprechenden MAC-Adressen. Wenn ein Computer eine Verbindung zu einem anderen Computer herstellen möchte, durchsucht er diese ARP-Tabelle, um festzustellen, ob ihm die erforderliche MAC-Adresse des Ziels bereits bekannt ist. Unter Windows können Sie den Inhalt der ARP-Tabelle über arp -a. Diese Tabelle zeigt die IP-Adresse, die zugehörige MAC-Adresse und den Typ bzw. Status des Eintrags (dynamisch, statisch, unvollständig usw.). Alle Einträge, die die NIC über eine ARP-Anfrage gelernt hat und die entsprechende Antwort werden in der Tabelle als 'dynamisch' aufgeführt. Die Informationen werden für einen bestimmten Zeitraum gespeichert und nach Ablauf dieser Zeit wird der Eintrag gelöscht. Besteht vor Ablauf dieser Zeit eine Kommunikation mit dem betreffenden Ziel, wird der Timer zurückgesetzt (und bei Ausfall der Kommunikation kann sich auch der Status ändern).

In diesem Beispiel gehen wir davon aus, dass der anfragende PC die Adresse des Servers noch nicht in seiner ARP-Tabelle hat. Als nächstes möchte eine Anwendung eine Verbindung zu einem Host herstellen. Zunächst bestimmt die Vermittlungsschicht des IP-Stacks, dass sich der Host in seinem eigenen IP-Subnetz befindet, also muss er den Host über sein eigenes LAN-Segment erreichen können. Um zu erfahren, an welcher Hardware-Adresse (MAC-Adresse) die IP-Adresse liegt 192.168 1.10 ist, sendet die NIC einen ARP Request Broadcast. Das gesendete Broadcast-Paket enthält folgende Daten:

Quell-MAC: 00:24:d7:c9:5f:f8, Quell-IP: 192.168.1.11
Ziel-MAC: ff:ff:ff:ff:ff:ff (Broadcast), Ziel-IP: 192.168.1.10

Wenn Sie das Paket analysieren mit -zum Beispiel- Wireshark dann ist zu sehen, dass es übersetzt wird mit: Wer hat 192.168.1.10? sag 192.168.1.11

Da es sich um einen Ethernet-Broadcast handelt, muss jede empfangene NIC den Frame verarbeiten. Der TCP/IP-Stack jedes Computers, der den Frame empfangen hat, überprüft dann auf IP-Ebene, ob er dafür geeignet ist. Er prüft, ob er selbst die NIC für 192.168.1.10 ist: wenn nicht, ignoriert er den Broadcast, wenn ja, sendet er ein Unicast-Paket zurück:

Quell-MAC: 00:16:ce:29:81:22, Quell-IP: 192.168.1.10
Ziel-MAC: 00:24:d7:c9:5f:f8, Ziel-IP: 192.168.1.11

und das wird von Wireshark übersetzt als 192.168.1.10 ist um 00:16:ce:29:81:22'Dann legt der Host diese Informationen in seine eigene ARP-Tabelle und nach Empfang durch den PC, der die ARP-Anforderung gesendet hat, legt er die Informationen in seine MAC-Tabelle ab. Also, wenn du ein bist arp -a tut auf dem pc sehen sie:192.168.1.10 00-16-ce-29-81-22 dynamisch

Neben den gelernten (dynamischen) Adressen enthält die ARP-Tabelle auch einige feste (statische) Adressen, die beim Aufbau des IP-Stacks in die Tabelle eingetragen werden:

Schnittstelle: 192.168.1.11 --- 0xf

Internetadresse Physikalischer Adresstyp192.168.1.10 00-16-ce-29-81-22 dynamic192.168.1.255 ff-ff-ff-ff-ff-ff static224.0.0.22 01-00-5e-00-00 -16 statisch224.0.0.252 01-00-5e-00-00-fc statisch239.255.255.250 01-00-5e-7f-ff-fa statisch255.255.255.255 ff-ff-ff-ff-ff-ff statisch

Zu sehen ist, dass die IP-Subnetz-Broadcast-Adresse 192.168.1.255 in die Ethernet-Broadcast-Adresse übersetzt wird und es darin 4 Einträge für Multicast gibt, wo die IP-Multicast-Adressen in feste Ethernet-Multicast-Adressen übersetzt werden.Es ist auch möglich, manuell einzugeben ARP-Einträge in die Tabelle: Manchmal kann dies für Fehlerbehebungsaktivitäten nützlich sein: Wenn Sie beispielsweise eine doppelte IP-Adresse in Ihrem Netzwerk haben und eine Verbindung zu einem dieser Computer herstellen möchten (z. B. um die IP-Adresse dieses Computers zu ändern), dann können Sie die MAC-Adresse der Maschine, mit der Sie sich verbinden möchten, manuell in die ARP-Tabelle eintragen über:
arp -s<ip adres> <MAC adres>
also zum Beispiel: arp -s 192.168.1.10 00-16-ce-29-81-22

Ein ARP-Gespräch

Neben den oben genannten Daten befinden sich im übertragenen Frame noch weitere Informationen. Eine ARP-Request/Reply-Sitzung ist recht einfach. Wenn Sie den Frame Byte für Byte analysieren, sehen Sie Folgendes:

Ein ARP-Ethernet-Frame ist 42 Byte lang (sowohl Anfrage als auch Antwort) und hat die folgenden Felder hintereinander:

Details der ARP-Anfrage

Der Ethernet-Frame-Header
-Ziel-MAC (also alle '1' in der Anfrage oder ff:ff:ff:ff:ff:ff
-source MAC: in unserem Beispiel: 00:24:d7:c9:5f:f8
-Typ: ARP-Hex: 08:06
-trailer: Polsterung, um die Mindestgröße eines Ethernet-Frames zu erfüllen
Und danach ist der Datenlink-Inhalt:
-die Daten für eine ARP-Anfrage oder -Antwort
---Hardware-Typ: Ethernet (hex: 00:01)
--- Protokolltyp: IP (hex: 08:00)
---Hardwaregröße: 6 (Länge der MAC-Adresse, bei Ethernet immer 6 Byte) Hex: 06
---Protokollgröße: 4 (wenn es sich um eine IPv4-IP-Adresse wie in unserem Beispiel handelt): hex: 04
---opcode: für ARP-Request 1 (hex: 00:01)
---Absender-MAC-Adresse: entspricht der Quell-MAC-Adresse im obigen Frame-Header 00:24:d7:c9:5f:f8
---sender IP address: die HEX-Darstellung der IP-Adresse, in unserem Beispiel: c0:a8:01:0b (=192.168.1.11)
---target MAC: in der Anfrage alle 0 (00:00:00:00:00:00)
---target IP address: die HEX-Darstellung der IP-Adresse, in unserem Beispiel: c0:a8:01:0a (=192.168.1.10)

Details der ARP-Antwort

Bei der Antwort:
-Ziel-MAC (in der Antwort: 00:24:d7:c9:5f:f8)
-source MAC: in unserem Beispiel: 00:16:ce:29:81:22
-Typ: ARP-Hex: 08:06
-trailer: Polsterung, um die Mindestgröße eines Ethernet-Frames zu erfüllen
-die Daten für eine ARP-Anfrage oder -Antwort
---Hardware-Typ: Ethernet (hex: 00:01)
--- Protokolltyp: IP (hex: 08:00)
---Hardwaregröße: 6 (Länge der MAC-Adresse, bei Ethernet immer 6 Byte) Hex: 06
---Protokollgröße: 4 (wenn es sich um eine IPv4-IP-Adresse wie in unserem Beispiel handelt): hex: 04
---opcode: für ARP-Antwort: 2 (hex: 00:02)
---Absender-MAC-Adresse: entspricht der Quell-MAC-Adresse im obigen Frame-Header 00:16:ce:29:81:22
---sender IP address: die HEX-Darstellung der IP-Adresse, in unserem Beispiel: c0:a8:01:0a (=192.168.1.10)
---Ziel-MAC: 00:24:d7:c9:5f:f8)
---target IP address: die HEX-Darstellung der IP-Adresse, in unserem Beispiel: c0:a8:01:0b (=192.168.1.11)

Da alle NICs im Netzwerk alle Broadcasts verarbeiten müssen, ist es wichtig, dass dies sehr schnell geht und wenig CPU-Last erzeugt. Die meisten NIC-Treiber können eine ARP-Anfrage vollständig „on board“ ausführen und beanspruchen daher wenig oder keine CPU des betreffenden Servers oder der betreffenden Workstation. Da ein ARP-Request-Frame eine sehr einfache feste Struktur hat, ist dies auch einfach: Die Länge ist immer fest und alle Informationen, die zur Bearbeitung eines ARP-Requests notwendig sind, sind lokal auf der NIC bekannt. Wäre das nicht der Fall, müsste die NIC bei jedem eingehenden Broadcast einen Interrupt an die CPU des Rechners schicken, dann müsste die CPU den ARP-Request bearbeiten, ggf. Daten aus dem Arbeitsspeicher holen und so weiter: das ist unerwünscht Bei der Definition des ARP-Protokolls im Jahr 1982[1] CPUs waren viel weniger leistungsstark als jetzt und es war wichtig, sie so effizient wie möglich zu nutzen.

Missbrauch des ARP-Protokolls

Dies wird auch als ARP-Vergiftung (ARP-Vergiftung) bezeichnet.

Da das ARP-Protokoll zustandslos ist, kann es missbraucht werden, um Internetverkehr innerhalb eines lokalen Netzwerks zu erhalten (schnüffeln).

Wie funktioniert das
Gegeben: du hast zwei hosts und einen Tor (Weg zum Internet).
  • Der erste Host hat die IP-Adresse 1 und die MAC-Adresse A
  • Der zweite Host hat die IP-Adresse 2 und die MAC-Adresse B
  • Das Gateway hat die IP-Adresse 3 und die MAC-Adresse C
Nehmen wir nun an: Der erste Host möchte den gesamten Internetverkehr vom zweiten Host erhalten.
Dazu führt der erste Host Folgendes aus:
  • sendet eine ARP-Antwort an das Gateway mit Quell-IP-Adresse 2 und Quell-MAC-Adresse A
  • sendet eine ARP-Antwort an den zweiten Host mit der Quell-IP-Adresse 3 und der Quell-MAC-Adresse A
Ergebnis: Host2 denkt, dass host1 das Gateway ist, und das Gateway denkt, dass host1 host2 ist. Jetzt wird der gesamte Datenverkehr zwischen dem zweiten Host und dem Internet an Host 1 gesendet. Host 1 leitet dann den gesamten Datenverkehr an den richtigen Host oder Gateway weiter.

Externe Links

Quelle

  1. einbIETF RFC-Bibliothek: RFC 826, November 1982, abgerufen am 24. Juni 2011
  2. Suche nach MAC-Adressenanbietern für 00:16:ce:29:81:22, abgerufen am 23. Juni 2011