Address Resolution Protocol: Unterschied zwischen den Versionen
(133 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
''' | '''Address Resolution Protocol''' (ARP) - Adressauflösung von [[IP-Adresse]]n in [[MAC-Adresse]]n | ||
= Beschreibung = | == Beschreibung == | ||
{| class="wikitable float" | |||
! style="background:#C0C0FF" colspan="2" font="size:larger" | ARP (Address Resolution Protocol) | |||
|- | |||
! Familie: | |||
| [[Internetprotokolle]] | |||
|- | |||
! Einsatzgebiet: | |||
| Netzwerkadressenzuordnung | |||
|- | |||
| align="center" colspan="2" |{{Netzwerk-TCP-IP-Sicherungsprotokoll|ARP|IP=[[IPv4]]}} | |||
|- | |||
! Standards: | |||
| RFC 826 (1982) | |||
|} | |||
'''ARP''' ('''A'''ddress '''R'''esolution '''P'''rotocol) ist ein [[Netzwerkprotokoll]], das zu einer Netzwerkadresse der [[Internetschicht]] die physische Adresse (Hardware-Adresse) der [[Netzzugangsschicht]] ermittelt und diese Zuordnung gegebenenfalls in den ''ARP-Tabellen'' der beteiligten Rechner hinterlegt. | |||
Es wird im Zusammenhang mit [[IPv4]]-Adressierung auf [[Ethernet]]-[[Rechnernetz|Netzen]], also zur Ermittlung von [[MAC-Adresse]]n zu gegebenen [[IP-Adresse]]n verwendet | |||
* Für [[IPv6]] wird diese Funktionalität nicht von ARP, sondern durch das [[Neighbor Discovery Protocol]] (NDP) bereitgestellt. | * Für [[IPv6]] wird diese Funktionalität nicht von ARP, sondern durch das [[Neighbor Discovery Protocol]] (NDP) bereitgestellt. | ||
* Zuordnung von Ebene 3 (IP-) Adressen zu Ebene 2 (MAC-) Adressen | * Zuordnung von Ebene 3 (IP-) Adressen zu Ebene 2 (MAC-) Adressen | ||
; Um IP-Pakete über Ethernet zu verschicken, ist noch eine Zuordnung der Adressierung von IP auf die Adressierung von Ethernet nötig | |||
* Diese Zuordnung übernimmt das ARP - das Address Resolution Protocol | * Diese Zuordnung übernimmt das ARP - das Address Resolution Protocol | ||
* ARP ist ein einfaches Protokoll, das auf Ethernet-Broadcasts basiert | * ARP ist ein einfaches Protokoll, das auf Ethernet-Broadcasts basiert | ||
Zeile 19: | Zeile 35: | ||
* Um auf Veränderungen der IP- oder MAC-Adresse reagieren zu können | * Um auf Veränderungen der IP- oder MAC-Adresse reagieren zu können | ||
=== Verwendungen === | |||
; MAC-Adressen werden vom Hersteller einer Ethernet-[[Netzwerkkarte]] oder eines Ethernet-fähigen Gerätes vergeben | |||
* Die Adresse jeder [[Schnittstelle]] ist dabei theoretisch weltweit eindeutig. | |||
* Bei einigen Netzen, wie zum Beispiel [[Novell]] und [[DECnet]], werden die Netzwerkadressen eindeutig auf die Ethernet-Adressen abgebildet, etwa, indem die MAC-Adresse um weitere Informationen ergänzt wird. | |||
* Ein Sender kann dann die MAC-Adresse des Empfängers einfach aus der Netzwerkadresse ermitteln. | |||
== Namens- und Adressauflösung == | ; IP-Adressen werden von der IANA ([[Internet Assigned Numbers Authority]]) zugeteilt | ||
* Da IPv4-Adressen eine Länge von nur 32 [[Bit]]s haben, können die 48 Bit langen MAC-Adressen damit nicht direkt abgebildet werden. | |||
* Es kann deshalb keine feste Beziehung zwischen MAC-Adressen und IP-Adressen hergestellt werden. | |||
* Bevor ein Rechner in einem Ethernet an einen Rechner im selben [[Subnetz]] ein [[IP-Paket]] sendet, muss er die Information in einen Ethernet-Frame verpacken. | |||
* Dazu muss er die MAC-Adresse des Zielrechners kennen und im entsprechenden Feld des Ethernet-Frames einfügen. | |||
* Ist ihm diese nicht bekannt, kann er das IP-Paket nicht zustellen. | |||
* Stattdessen ermittelt er dann mithilfe des ARP zunächst die MAC-Adresse des Zielrechners. | |||
=== Namens- und Adressauflösung === | |||
=== Einordnung ins DoD-Modell === | |||
'''ARP - Eigenschaften''' | |||
* RFC 826 | * RFC 826 | ||
* Setzt auf dem Data Link Layer (Ethernet, TR, etc.) auf | * Setzt auf dem Data Link Layer (Ethernet, TR, etc.) auf | ||
Zeile 44: | Zeile 61: | ||
== Datagramm == | == Datagramm == | ||
Das ARP-Paket schließt sich an den Ethernet-MAC-Header an. | ; Das ARP-Paket schließt sich an den Ethernet-MAC-Header an. | ||
* Das Typfeld im Ethernet-Frame wird auf 0x0806 (2054) gesetzt. | * Das Typfeld im Ethernet-Frame wird auf 0x0806 (2054) gesetzt. | ||
* Diese Nummer ist für das ARP-Protokoll reserviert. | * Diese Nummer ist für das ARP-Protokoll reserviert. | ||
* Dadurch lassen sich ARP-Pakete von Paketen anderer Protokolle wie beispielsweise IP unterscheiden. | * Dadurch lassen sich ARP-Pakete von Paketen anderer Protokolle wie beispielsweise IP unterscheiden. | ||
Da das Paket sehr kurz ist, müssen in der Regel im Ethernet-Frame zwischen ARP-Paket und CRC zusätzliche | ; Padding | ||
Da das Paket sehr kurz ist, müssen in der Regel im Ethernet-Frame zwischen ARP-Paket und CRC zusätzliche Byte eingefügt werden (Padding), um die minimale Framelänge von 64 Byte zu erreichen. | |||
Obwohl ARP ursprünglich für IPv4 und MAC-Adressen entwickelt wurde, sind im Paket Adresstypen und Protokollgrößenfelder vorgesehen. | Obwohl ARP ursprünglich für IPv4 und MAC-Adressen entwickelt wurde, sind im Paket Adresstypen und Protokollgrößenfelder vorgesehen. | ||
* Dadurch ist ARP auch für andere Protokolle geeignet. | * Dadurch ist ARP auch für andere Protokolle geeignet. | ||
* Für [[IPv6]] könnten die Protokolladressgröße statt auf vier auf 16 | * Für [[IPv6]] könnten die Protokolladressgröße statt auf vier auf 16 Byte gesetzt und die Adressfelder auf 128 Bit (= 16 Byte) verlängert werden, jedoch wird ARP für IPv6 durch das [[Neighbor Discovery Protocol]] (NDP) ersetzt, welches auf [[ICMPv6]] basiert. | ||
; ARP-Nachrichtenformat | |||
Beispiel: Ethernet-MAC-Adressen und IPv4-Adressen | |||
{| class="wikitable" style="text-align: center; width: 40em;" border=1 | {| class="wikitable" style="text-align: center; width: 40em;" border=1 | ||
|- | |- | ||
! colspan="1"|octet offset | |||
! colspan="1"|octet offset | |||
! colspan="8" width="50%"|0 | ! colspan="8" width="50%"|0 | ||
! colspan="8" width="50%"|1 | ! colspan="8" width="50%"|1 | ||
Zeile 77: | Zeile 95: | ||
|- | |- | ||
! 8 | ! 8 | ||
| colspan="16" style="background:#f0fff0"| Quell-MAC-Adresse (erste 2 | | colspan="16" style="background:#f0fff0"| Quell-MAC-Adresse (erste 2 Byte) | ||
|- | |- | ||
! 10 | ! 10 | ||
| colspan="16" style="background:#f0fff0"| (nächste 2 | | colspan="16" style="background:#f0fff0"| (nächste 2 Byte) | ||
|- | |- | ||
! 12 | ! 12 | ||
| colspan="16" style="background:#f0fff0"| (letzte 2 | | colspan="16" style="background:#f0fff0"| (letzte 2 Byte) | ||
|- | |- | ||
! 14 | ! 14 | ||
| colspan="16" style="background:#d0ffd0"| Quell-IP-Adresse (erste 2 | | colspan="16" style="background:#d0ffd0"| Quell-IP-Adresse (erste 2 Byte) | ||
|- | |- | ||
! 16 | ! 16 | ||
| colspan="16" style="background:#d0ffd0"| (letzte 2 | | colspan="16" style="background:#d0ffd0"| (letzte 2 Byte) | ||
|- | |- | ||
! 18 | ! 18 | ||
| colspan="16" style="background:#f0f0ff"| Ziel-MAC-Adresse (erste 2 | | colspan="16" style="background:#f0f0ff"| Ziel-MAC-Adresse (erste 2 Byte) | ||
|- | |- | ||
! 20 | ! 20 | ||
| colspan="16" style="background:#f0f0ff"| (nächste 2 | | colspan="16" style="background:#f0f0ff"| (nächste 2 Byte) | ||
|- | |- | ||
! 22 | ! 22 | ||
| colspan="16" style="background:#f0f0ff"| (letzte 2 | | colspan="16" style="background:#f0f0ff"| (letzte 2 Byte) | ||
|- | |- | ||
! 24 | ! 24 | ||
| colspan="16" style="background:#d0d0ff"| Ziel-IP-Adresse (erste 2 | | colspan="16" style="background:#d0d0ff"| Ziel-IP-Adresse (erste 2 Byte) | ||
|- | |- | ||
! 26 | ! 26 | ||
| colspan="16" style="background:#d0d0ff"| (letzte 2 | | colspan="16" style="background:#d0d0ff"| (letzte 2 Byte) | ||
|} | |} | ||
'''Protokolladresstyp''' | {| class="wikitable sortable" | ||
|- | |||
'''Hardwareadressgröße''' | ! Feld !! Byte !! Beschreibung | ||
|- | |||
'''Protokolladressgröße''' | |'''Hardwareadresstyp''' || 2 || Typ der MAC-Adresse im Paket (für Ethernet/ <code>1</code>). | ||
|- | |||
'''Operation''' | |'''Protokolladresstyp''' || 2 || Protokolltyp, der für die MAC-Adresse angefordert wird (für IPv4-Adressen: <code>0x0800 (2048)</code>). | ||
|- | |||
'''Quell-MAC-Adresse''' | |'''Hardwareadressgröße''' || 1 || Größe der MAC-Adresse (für Ethernet/ <code>6</code>). | ||
|- | |||
|'''Protokolladressgröße''' || 1 || Größe des Protokolls (für IPv4: <code>4</code>). | |||
'''Quell-IP-Adresse''' | |- | ||
|'''Operation''' || 2 || Wert, der angibt, welche Operation ausgeführt werden soll (<code>1</code> für ARP-Anforderung, <code>2</code> für ARP-Antwort). | |||
|- | |||
'''Ziel-MAC-Adresse''' | |'''Quell-MAC-Adresse''' || 6 || In einer ARP-Anforderung die MAC-Adresse des Senders. In einer ARP-Antwort enthält es die MAC-Adresse des antwortenden Hosts oder Next-Hop-Routers. | ||
|- | |||
|'''Quell-IP-Adresse''' || 4 || Bei einer ARP-Anforderung die IP-Adresse des anfragenden Hosts. In einer ARP-Antwort enthält es die IP-Adresse des antwortenden Hosts oder Next-Hop-Routers. | |||
'''Ziel-IP-Adresse''' | |- | ||
|'''Ziel-MAC-Adresse''' || 6 || Wird in einer ARP-Anforderung ignoriert (meist 00:00:00:00:00:00<sub>16</sub>). In einer ARP-Antwort enthält es die MAC-Adresse des anfragenden Hosts. | |||
|- | |||
|'''Ziel-IP-Adresse''' || 4 || Bei einer ARP-Anforderung die IP-Adresse des gesuchten Hosts. In einer ARP-Antwort enthält es die IP-Adresse des anfragenden Hosts. | |||
|} | |||
== Ablauf einer Adressauflösung durch ARP == | == Ablauf einer Adressauflösung durch ARP == | ||
[[File:arp.png|mini|350px]] | |||
{| class="wikitable options col1center" | |||
|- | |||
! Option !! Beschreibung | |||
ARP - | |- | ||
| 1 || Rechner ‚A‘ sucht die MAC-Adresse von Rechner ‚B‘ | |||
ARP - | |- | ||
| 2 || ARP-Cache wird überprüft | |||
|- | |||
| 3 || ARP-Anforderung wird gesendet (Broadcast) | |||
|- | |||
| 4 || ARP-Eintrag von Rechner ‚A‘ wird dem ARP-Cache hinzugefügt | |||
|- | |||
| 5 || ARP-Antwort wird gesendet (Unicast) | |||
|- | |||
| 6 || ARP-Eintrag wird von Rechner ‚B‘ wird dem ARP-Cache hinzugefügt | |||
|- | |||
| 7 || IP-Pakete werden gesendet | |||
|} | |||
== Adressauflösung | === Adressauflösung === | ||
== | === Ablaufverfolgung === | ||
=== Ablaufdiagramm === | |||
= | === Adressauflösung über Subnetzgrenzen (Routing) === | ||
= | |||
== Spezielle ARP-Nachrichten == | == Spezielle ARP-Nachrichten == | ||
= | {| class="wikitable options" | ||
|- | |||
! Option !! Beschreibung | |||
|- | |||
| Proxy ARP || [[Proxy ARP]] | |||
|- | |||
| Gratuitous ARP || [[Gratuitous ARP]] | |||
|- | |||
| RARP – Reverse-ARP || [[Reverse Address Resolution Protocol]] | |||
|} | |||
Proxy ARP | |||
<noinclude> | |||
= | == Anhang == | ||
== | === Siehe auch === | ||
{{Special:PrefixIndex/arp}} | |||
---- | |||
* [[ARP-Spoofing]] | |||
= | ==== RFC ==== | ||
== | |||
== Weblinks == | ==== Links ==== | ||
===== Weblinks ===== | |||
# https://itexamanswers.net/cyberops-associate-module-8-address-resolution-protocol.html | # https://itexamanswers.net/cyberops-associate-module-8-address-resolution-protocol.html | ||
[[Kategorie:OSI/2 Data Link]] | |||
[[Kategorie:OSI/3 Network]] | |||
[[Kategorie: | |||
Aktuelle Version vom 16. März 2024, 11:07 Uhr
Address Resolution Protocol (ARP) - Adressauflösung von IP-Adressen in MAC-Adressen
Beschreibung
ARP (Address Resolution Protocol) | |
---|---|
Familie: | Internetprotokolle |
Einsatzgebiet: | Netzwerkadressenzuordnung |
Vorlage:Netzwerk-TCP-IP-Sicherungsprotokoll | |
Standards: | RFC 826 (1982) |
ARP (Address Resolution Protocol) ist ein Netzwerkprotokoll, das zu einer Netzwerkadresse der Internetschicht die physische Adresse (Hardware-Adresse) der Netzzugangsschicht ermittelt und diese Zuordnung gegebenenfalls in den ARP-Tabellen der beteiligten Rechner hinterlegt.
Es wird im Zusammenhang mit IPv4-Adressierung auf Ethernet-Netzen, also zur Ermittlung von MAC-Adressen zu gegebenen IP-Adressen verwendet
- Für IPv6 wird diese Funktionalität nicht von ARP, sondern durch das Neighbor Discovery Protocol (NDP) bereitgestellt.
- Zuordnung von Ebene 3 (IP-) Adressen zu Ebene 2 (MAC-) Adressen
- Um IP-Pakete über Ethernet zu verschicken, ist noch eine Zuordnung der Adressierung von IP auf die Adressierung von Ethernet nötig
- Diese Zuordnung übernimmt das ARP - das Address Resolution Protocol
- ARP ist ein einfaches Protokoll, das auf Ethernet-Broadcasts basiert
- Jeder Host der über Ethernet an ein Netzwerk angeschlossen ist unterhält eine Tabelle
- Diese Tabelle (ARP-Cache) enthält Einträge, die für alle bekannten IP-Adressen das Ethernet-Device und die MAC-Adresse angeben
- ARP-Einträge können entweder statisch gesetzt werden (wenn die MAC-Adresse bekannt ist) oder dynamisch angelegt werden (über das Protokoll)
- Ist ein Paket an eine IP-Adresse zu versenden, für die es im Cache keinen Eintrag gibt, wird ein Broadcast gesendet und nach der IP gefragt
- Das System, welches die IP besitzt, antwortet mit einem ARP-Reply
- Danach wird ein neuer Eintrag in den ARP-Cache eingefügt
- Dynamische ARP-Einträge haben eine begrenzte Gültigkeit und werden nach gewisser Zeit gelöscht
- Um auf Veränderungen der IP- oder MAC-Adresse reagieren zu können
Verwendungen
- MAC-Adressen werden vom Hersteller einer Ethernet-Netzwerkkarte oder eines Ethernet-fähigen Gerätes vergeben
- Die Adresse jeder Schnittstelle ist dabei theoretisch weltweit eindeutig.
- Bei einigen Netzen, wie zum Beispiel Novell und DECnet, werden die Netzwerkadressen eindeutig auf die Ethernet-Adressen abgebildet, etwa, indem die MAC-Adresse um weitere Informationen ergänzt wird.
- Ein Sender kann dann die MAC-Adresse des Empfängers einfach aus der Netzwerkadresse ermitteln.
- IP-Adressen werden von der IANA (Internet Assigned Numbers Authority) zugeteilt
- Da IPv4-Adressen eine Länge von nur 32 Bits haben, können die 48 Bit langen MAC-Adressen damit nicht direkt abgebildet werden.
- Es kann deshalb keine feste Beziehung zwischen MAC-Adressen und IP-Adressen hergestellt werden.
- Bevor ein Rechner in einem Ethernet an einen Rechner im selben Subnetz ein IP-Paket sendet, muss er die Information in einen Ethernet-Frame verpacken.
- Dazu muss er die MAC-Adresse des Zielrechners kennen und im entsprechenden Feld des Ethernet-Frames einfügen.
- Ist ihm diese nicht bekannt, kann er das IP-Paket nicht zustellen.
- Stattdessen ermittelt er dann mithilfe des ARP zunächst die MAC-Adresse des Zielrechners.
Namens- und Adressauflösung
Einordnung ins DoD-Modell
ARP - Eigenschaften
- RFC 826
- Setzt auf dem Data Link Layer (Ethernet, TR, etc.) auf
- (Ethernet-) Typefeld: 08-06
Datagramm
- Das ARP-Paket schließt sich an den Ethernet-MAC-Header an.
- Das Typfeld im Ethernet-Frame wird auf 0x0806 (2054) gesetzt.
- Diese Nummer ist für das ARP-Protokoll reserviert.
- Dadurch lassen sich ARP-Pakete von Paketen anderer Protokolle wie beispielsweise IP unterscheiden.
- Padding
Da das Paket sehr kurz ist, müssen in der Regel im Ethernet-Frame zwischen ARP-Paket und CRC zusätzliche Byte eingefügt werden (Padding), um die minimale Framelänge von 64 Byte zu erreichen.
Obwohl ARP ursprünglich für IPv4 und MAC-Adressen entwickelt wurde, sind im Paket Adresstypen und Protokollgrößenfelder vorgesehen.
- Dadurch ist ARP auch für andere Protokolle geeignet.
- Für IPv6 könnten die Protokolladressgröße statt auf vier auf 16 Byte gesetzt und die Adressfelder auf 128 Bit (= 16 Byte) verlängert werden, jedoch wird ARP für IPv6 durch das Neighbor Discovery Protocol (NDP) ersetzt, welches auf ICMPv6 basiert.
- ARP-Nachrichtenformat
Beispiel: Ethernet-MAC-Adressen und IPv4-Adressen
octet offset | 0 | 1 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Hardwareadresstyp | |||||||||||||||
2 | Protokolladresstyp | |||||||||||||||
4 | Hardwareadressgröße | Protokolladressgröße | ||||||||||||||
6 | Operation | |||||||||||||||
8 | Quell-MAC-Adresse (erste 2 Byte) | |||||||||||||||
10 | (nächste 2 Byte) | |||||||||||||||
12 | (letzte 2 Byte) | |||||||||||||||
14 | Quell-IP-Adresse (erste 2 Byte) | |||||||||||||||
16 | (letzte 2 Byte) | |||||||||||||||
18 | Ziel-MAC-Adresse (erste 2 Byte) | |||||||||||||||
20 | (nächste 2 Byte) | |||||||||||||||
22 | (letzte 2 Byte) | |||||||||||||||
24 | Ziel-IP-Adresse (erste 2 Byte) | |||||||||||||||
26 | (letzte 2 Byte) |
Feld | Byte | Beschreibung |
---|---|---|
Hardwareadresstyp | 2 | Typ der MAC-Adresse im Paket (für Ethernet/ 1 ).
|
Protokolladresstyp | 2 | Protokolltyp, der für die MAC-Adresse angefordert wird (für IPv4-Adressen: 0x0800 (2048) ).
|
Hardwareadressgröße | 1 | Größe der MAC-Adresse (für Ethernet/ 6 ).
|
Protokolladressgröße | 1 | Größe des Protokolls (für IPv4: 4 ).
|
Operation | 2 | Wert, der angibt, welche Operation ausgeführt werden soll (1 für ARP-Anforderung, 2 für ARP-Antwort).
|
Quell-MAC-Adresse | 6 | In einer ARP-Anforderung die MAC-Adresse des Senders. In einer ARP-Antwort enthält es die MAC-Adresse des antwortenden Hosts oder Next-Hop-Routers. |
Quell-IP-Adresse | 4 | Bei einer ARP-Anforderung die IP-Adresse des anfragenden Hosts. In einer ARP-Antwort enthält es die IP-Adresse des antwortenden Hosts oder Next-Hop-Routers. |
Ziel-MAC-Adresse | 6 | Wird in einer ARP-Anforderung ignoriert (meist 00:00:00:00:00:0016). In einer ARP-Antwort enthält es die MAC-Adresse des anfragenden Hosts. |
Ziel-IP-Adresse | 4 | Bei einer ARP-Anforderung die IP-Adresse des gesuchten Hosts. In einer ARP-Antwort enthält es die IP-Adresse des anfragenden Hosts. |
Ablauf einer Adressauflösung durch ARP
Option | Beschreibung |
---|---|
1 | Rechner ‚A‘ sucht die MAC-Adresse von Rechner ‚B‘ |
2 | ARP-Cache wird überprüft |
3 | ARP-Anforderung wird gesendet (Broadcast) |
4 | ARP-Eintrag von Rechner ‚A‘ wird dem ARP-Cache hinzugefügt |
5 | ARP-Antwort wird gesendet (Unicast) |
6 | ARP-Eintrag wird von Rechner ‚B‘ wird dem ARP-Cache hinzugefügt |
7 | IP-Pakete werden gesendet |
Adressauflösung
Ablaufverfolgung
Ablaufdiagramm
Adressauflösung über Subnetzgrenzen (Routing)
Spezielle ARP-Nachrichten
Option | Beschreibung |
---|---|
Proxy ARP | Proxy ARP |
Gratuitous ARP | Gratuitous ARP |
RARP – Reverse-ARP | Reverse Address Resolution Protocol |