Address Resolution Protocol: Unterschied zwischen den Versionen

Aus Foxwiki
 
(136 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''ARP''' ('''A'''ddress '''R'''esolution '''P'''rotocol)
'''Address Resolution Protocol''' (ARP) - Adressauflösung von [[IP-Adresse]]n in [[MAC-Adresse]]n


= Beschreibung =
== Beschreibung ==
Das '''Address Resolution Protocol''' ('''ARP''') 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.  
{| class="wikitable float"
* Es wird fast ausschließlich im Zusammenhang mit [[IPv4]]-Adressierung auf [[Ethernet]]-[[Rechnernetz|Netzen]], also zur Ermittlung von [[MAC-Adresse]]n zu gegebenen [[IP-Adresse]]n verwendet, obwohl es nicht darauf beschränkt ist.
! 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
; 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 ===


== Einordnung ins DoD-Modell ==
{| class="wikitable"
! style="background:#C0C0FF" colspan="2" font="size:larger" | ARP (Address Resolution Protocol)
|-
!  Familie:
| [[Internetprotokollfamilie]]
|-
! Einsatzgebiet:
| Netzwerkadressenzuordnung
|-
| align="center" colspan="2" |{{Netzwerk-TCP-IP-Sicherungsprotokoll|ARP|IP=[[IPv4]]}}
|-
!  Standards:
|  RFC 826 (1982)
|}


== ARP - Eigenschaften ==
'''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 Bytes eingefügt werden (Padding), um die minimale Framelänge von 64 Bytes zu erreichen.
; 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 Bytes gesetzt und die Adressfelder auf 128 Bits (= 16 Byte) verlängert werden, jedoch wird ARP für IPv6 durch das [[Neighbor Discovery Protocol]] (NDP) ersetzt, welches auf [[ICMPv6]] basiert.
* 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="17" | ARP-Nachrichtenformat am Beispiel Ethernet-MAC-Adressen und IPv4-Adressen
! 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 Bytes)
| colspan="16" style="background:#f0fff0"| Quell-MAC-Adresse (erste 2 Byte)
|-
|-
! 10
! 10
| colspan="16" style="background:#f0fff0"| (nächste 2 Bytes)
| colspan="16" style="background:#f0fff0"| (nächste 2 Byte)
|-
|-
! 12
! 12
| colspan="16" style="background:#f0fff0"| (letzte 2 Bytes)
| colspan="16" style="background:#f0fff0"| (letzte 2 Byte)
|-
|-
! 14
! 14
| colspan="16" style="background:#d0ffd0"| Quell-IP-Adresse (erste 2 Bytes)
| colspan="16" style="background:#d0ffd0"| Quell-IP-Adresse (erste 2 Byte)
|-
|-
! 16
! 16
| colspan="16" style="background:#d0ffd0"| (letzte 2 Bytes)
| colspan="16" style="background:#d0ffd0"| (letzte 2 Byte)
|-
|-
! 18
! 18
| colspan="16" style="background:#f0f0ff"| Ziel-MAC-Adresse (erste 2 Bytes)
| colspan="16" style="background:#f0f0ff"| Ziel-MAC-Adresse (erste 2 Byte)
|-
|-
! 20
! 20
| colspan="16" style="background:#f0f0ff"| (nächste 2 Bytes)
| colspan="16" style="background:#f0f0ff"| (nächste 2 Byte)
|-
|-
! 22
! 22
| colspan="16" style="background:#f0f0ff"| (letzte 2 Bytes)
| colspan="16" style="background:#f0f0ff"| (letzte 2 Byte)
|-
|-
! 24
! 24
| colspan="16" style="background:#d0d0ff"| Ziel-IP-Adresse (erste 2 Bytes)
| colspan="16" style="background:#d0d0ff"| Ziel-IP-Adresse (erste 2 Byte)
|-
|-
! 26
! 26
| colspan="16" style="background:#d0d0ff"| (letzte 2 Bytes)
| colspan="16" style="background:#d0d0ff"| (letzte 2 Byte)
|}
|}


'''Hardwareadresstyp''' (2 Byte) enthält den Typ der MAC-Adresse im Paket (für Ethernet: <code>1</code>).


'''Protokolladresstyp''' (2 Byte) enthält den Protokolltyp, der für die MAC-Adresse angefordert wird (für IPv4-Adressen: <code>0x0800 (2048)</code>).
{| class="wikitable sortable"
 
|-
'''Hardwareadressgröße''' (1 Byte) enthält die Größe der MAC-Adresse (für Ethernet: <code>6</code>).
! Feld !! Byte !! Beschreibung
 
|-
'''Protokolladressgröße''' (1 Byte) enthält die Größe des Protokolls (für IPv4: <code>4</code>).
|'''Hardwareadresstyp'''  || 2 ||  Typ der MAC-Adresse im Paket (für Ethernet/ <code>1</code>).
 
|-
'''Operation''' (2 Byte) enthält den Wert, der angibt, welche Operation ausgeführt werden soll (<code>1</code> für ARP-Anforderung, <code>2</code> für ARP-Antwort).
|'''Protokolladresstyp''' || 2 ||  Protokolltyp, der für die MAC-Adresse angefordert wird (für IPv4-Adressen: <code>0x0800 (2048)</code>).
 
|-
'''Quell-MAC-Adresse''' (6 Byte) enthält in einer ARP-Anforderung die MAC-Adresse des Senders.  
|'''Hardwareadressgröße''' || 1 ||  Größe der MAC-Adresse (für Ethernet/ <code>6</code>).
* In einer ARP-Antwort enthält es die MAC-Adresse des antwortenden Hosts oder Next-Hop-Routers.
|-
 
|'''Protokolladressgröße''' || 1 || Größe des Protokolls (für IPv4: <code>4</code>).
'''Quell-IP-Adresse''' (4 Bytes bei IPv4) enthält 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.
|'''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''' (6 Byte) wird in einer ARP-Anforderung ignoriert (meist 00:00:00:00:00:00<sub>16</sub>).  
|'''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.
* In einer ARP-Antwort enthält es die MAC-Adresse des anfragenden Hosts.
|-
 
|'''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''' (4 Bytes bei IPv4) ist bei einer ARP-Anforderung die IP-Adresse des gesuchten Hosts.  
|-
* In einer ARP-Antwort enthält es die IP-Adresse des anfragenden Hosts.
|'''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 ==
# Rechner ‚A‘ sucht die MAC-Adresse von Rechner ‚B‘
[[File:arp.png|mini|350px]]
# ARP-Cache wird überprüft
# ARP-Anforderung wird gesendet (Broadcast)
# ARP-Eintrag von Rechner ‚A‘ wird dem ARP-Cache hinzugefügt
# ARP-Antwort wird gesendet (Unicast)
# ARP-Eintrag wird von Rechner ‚B‘ wird dem ARP-Cache hinzugefügt
# IP-Pakete werden gesendet


Adressauflösung
{| class="wikitable options col1center"
 
|-
== Aufzeichnung des Befehls PING an 192.168.10.99 ==
! Option !! Beschreibung
ARP - Ablaufdiagramm
|-
 
| 1 || Rechner ‚A‘ sucht die MAC-Adresse von Rechner ‚B‘
ARP - Datagramm
|-
 
| 2 || ARP-Cache wird überprüft
== Adressauflösung über Subnetzgrenzen (Routing) ==
|-
| 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
|}


== Proxy ARP ==
=== Adressauflösung ===
* Alternative zum Routing
* Es gibt  auch den Fall, dass ein System die IP-Pakete für ein anderes entgegennimmt und diese an das System weiterleitet
* Gerade für Firewall-System ist dies nicht ungewöhnlich
* In diesem Fall muss das System den ARP-Request für diese IP mit seiner eigenen MAC-Adresse beantworten
* Dieses Verfahren nennt man “Proxy ARP”


* Kein Protokoll, sondern Programm (Daemon) auf Router
=== Ablaufverfolgung ===
* Leitet ARP-Anfragen an Routing-Table weiter
* Erspart (temporär) Routingeinträge auf Host
* Belastet den Router durch notwendige zusätzliche ARP-Bearbeitung


= Installation =
=== Ablaufdiagramm ===
= Syntax =
== Parameter ==
== Optionen ==
= Konfiguration =
== Dateien ==


= Anwendungen =
=== Adressauflösung über Subnetzgrenzen (Routing) ===
= Dokumentation =
== RFC ==
 
= Links =
== Intern ==
# [[Linux:Befehl:arp]]
 
== Weblinks ==
# https://itexamanswers.net/cyberops-associate-module-8-address-resolution-protocol.html
 
== Kontrollfragen ==
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 1''
<div class="mw-collapsible-content">'''Antwort1'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 2''
<div class="mw-collapsible-content">'''Antwort2'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 3''
<div class="mw-collapsible-content">'''Antwort3'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 4''
<div class="mw-collapsible-content">'''Antwort4'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 5''
<div class="mw-collapsible-content">'''Antwort5'''</div>
</div>
 
[[Kategorie:Netzwerke]]
 
= tmp =
 
== 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 [[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 mit Hilfe des ARP zunächst die MAC-Adresse des Zielrechners.
 
== Funktionsweise am Beispiel Ethernet ==
Es wird eine ARP-Anforderung (''ARP Request'') mit der [[MAC-Adresse]] und der [[IP-Adresse]] des anfragenden [[Computer]]s als Sender-IP-Adresse und der IP-Adresse des gesuchten Computers als Empfänger-IP-Adresse an alle Computer des lokalen Netzwerkes gesendet.
* Als Empfänger-MAC-Adresse wird dazu die [[Broadcast]]-Adresse <code>ff-ff-ff-ff-ff-ff<sub>16</sub></code> im Ethernet-Frame verwendet, damit alle Computer des lokalen Netzwerkes die ARP-Anforderung empfangen.
* Jedoch wird die Ziel-MAC-Adresse innerhalb der ARP-Anforderung mit <code>00-00-00-00-00-00<sub>16</sub></code> gefüllt, um anzuzeigen, dass der Sender der ARP-Anforderung diese MAC-Adresse herausfinden möchte.
* Empfängt ein Computer ein solches Paket, sieht er nach, ob dieses Paket seine IP-Adresse als Empfänger-IP-Adresse enthält.
Wenn dies der Fall ist, antwortet er mit dem Zurücksenden seiner MAC-Adresse und IP-Adresse (ARP-Antwort oder ''ARP-Reply'') per Broadcast oder als [[Unicast]].
* Der Empfänger trägt nach Empfang der Antwort die empfangene Kombination von IP- und MAC-Adresse in seine ARP-Tabelle, auch ''ARP-Cache'' genannt, ein.
* Für ARP-Request und ARP-Reply wird das gleiche Paketformat verwendet.
 
Zusätzlich können die Empfänger des ARP-Requests ebenfalls die Kombination von IP-Adresse und MAC-Adresse des anfragenden Computers in ihre ARP-Tabelle eintragen oder einen bestehenden Eintrag aktualisieren.
* Insbesondere der Rechner mit der im ARP-Request angefragten IP-Adresse sollte diese Eintragung vornehmen, da anzunehmen ist, dass der ARP-Request als Vorbereitung für weitere Kommunikation auf höherer Protokollebene dienen soll, wofür er dann für eventuelle Antworten ebenfalls die MAC-Adresse des Anfragenden benötigt.
 
Die Einträge im [[ARP-Cache]] bestehen neben der Zuordnung von IP-Adresse und MAC-Adresse aus Angaben zu Eintragungszeitpunkt, Gültigkeitsdauer oder Alter des Eintrags und gegebenenfalls zum Protokolltyp.
* Wie lange ein Eintrag im ARP-Cache verbleibt bevor er aus dem ARP-Cache gelöscht wird ist implementierungsabhängig und liegt meist im Bereich von wenigen Minuten.
* So verwerfen aktuelle Linux-Distributionen Einträge nach etwa 5 Minuten.
* Sobald ein Eintrag in der Tabelle genutzt wird, wird dessen Ablaufzeit verlängert.
 
Unter [[Unix]] und [[Microsoft Windows|Windows]] kann der ARP-Cache mit <code>arp</code> beziehungsweise <code>arp -a</code> angezeigt und mit dem entsprechenden Programm auch manipuliert werden.
* Mit dem Zusatzprogramm [[arping]] können manuell Anforderungen versendet werden.
 
== ARP im globalen Zusammenhang ==
Das ARP ist für die Auflösung der MAC-Adressen im lokalen Netzwerk zuständig.
* Sollen Daten über Netzwerkgrenzen hinweg gesendet werden, wird das [[Internet Protocol|Internet-Protokoll]] (IP) verwendet.
* IP-Implementierungen sind in der Lage, zu erkennen, dass ein Paket nicht für das lokale Subnetz bestimmt ist und senden es an einen lokalen [[Router]], der sich um die Weiterleitung des Pakets kümmert.
* Dieser Router hat wiederum eine lokale MAC-Adresse, die über ARP ermittelt werden kann.
 
Das folgende Flussdiagramm stellt den Zusammenhang von IP-Routing mit ARP dar:
[[Datei:ARP und Routing.png|none|Schematische Darstellung von ARP und Routing]]


== Spezielle ARP-Nachrichten ==
== Spezielle ARP-Nachrichten ==


=== Proxy ARP ===
{| class="wikitable options"
|-
! Option !! Beschreibung
|-
| Proxy ARP || [[Proxy ARP]]
|-
| Gratuitous ARP || [[Gratuitous ARP]]
|-
| RARP – Reverse-ARP || [[Reverse Address Resolution Protocol]]
|}


[[Proxy (Rechnernetz)|Proxy]] ARP erlaubt einem Router, ARP-Anforderungen für Hosts zu beantworten.
<noinclude>


Die Hosts befinden sich dabei in durch einen Router getrennten Netzen – verwenden untypischerweise jedoch den gleichen [[Classless Inter-Domain Routing|IP-Adressbereich]].
== Anhang ==
* Bei der Kommunikation ist für die Hosts der Router ''transparent'', d.&nbsp;h.
=== Siehe auch ===
* er braucht nicht speziell angesprochen zu werden, sondern die Hosts können wie gewöhnlich Pakete über verschiedene Netze hinweg versenden.
{{Special:PrefixIndex/arp}}
----
* [[ARP-Spoofing]]


Sendet Computer A eine ARP-Anforderung an Computer B, reagiert der dazwischen liegende Router anstelle des Computers B mit einer ARP-Antwort und der Hardware-Adresse der Schnittstelle (MAC-Adresse des Ports am Router), auf der die Anfrage empfangen wurde.
==== RFC ====
* Der anfragende Computer A sendet dann seine [[Daten]] an den Router, der sie dann an Computer B weiterleitet.


Proxy ARP kann man am ARP-Cache von Computer A erkennen.
==== Links ====
* Falls für mehrere IP-Adressen dieselbe MAC-Adresse eingetragen ist, arbeitet der Router mit dieser MAC-Adresse als Proxy.
===== Weblinks =====
* Die Einträge können auch ein Hinweis auf einen [[Angriff]] durch [[ARP-Spoofing]] sein.
# https://itexamanswers.net/cyberops-associate-module-8-address-resolution-protocol.html
 
=== Gratuitous ARP ===
''Gratuitous ARP'' (engl. „unaufgefordertes ARP“) bezeichnet eine spezielle Verwendung von ARP.
* Dabei sendet ein Host ein ARP-Anforderungs-Broadcast, bei dem er seine eigene IP-Adresse als Quell- und Ziel-IP-Adresse einträgt.
* Damit teilt er seine gegebenenfalls neue MAC-Adresse unaufgefordert mit.
* Das kann mehreren Zwecken dienen:
# Normalerweise darf keine Antwort kommen, denn eine IP-Adresse muss in einem Netz eindeutig sein.
* Bekommt er trotzdem eine Antwort, ist das für den [[Systemadministrator|Administrator]] ein Hinweis darauf, dass ein Host nicht richtig konfiguriert ist, d.&nbsp;h.
* die designierte IP-Adresse bereits anderweitig genutzt wird.
# Jeder Host aktualisiert seinen ARP-Cache.
* Das ist beispielsweise dann nützlich, wenn die Netzwerkkarte eines Rechners ausgetauscht wurde und die anderen Hosts über die neue MAC-Adresse informiert werden sollen. ''Gratuitous ARP'' geschieht deshalb normalerweise beim [[Booten]] eines Computers.
# Wenn zwei Server aus Gründen der Ausfallsicherheit als Server und Ersatzserver aufgebaut sind und sich eine IP-Adresse teilen und der aktive Verkehr vom einen auf den anderen geschwenkt werden soll, ist die IP-Adresse jetzt über eine andere MAC-Adresse zu erreichen.
* Diese neue MAC-/IP-Adress-Zuordnung muss bekannt gemacht werden.
* Sonst bekommt niemand den Wechsel mit.
# In einem ''[[Mobile IP]]''-Szenario sendet der ''Home Agent'' einen ''Gratuitous ARP'', wenn sich der ''Mobile Host'' aus dem Heimatnetz entfernt, um die Pakete stellvertretend für diesen zu empfangen.
* Analog sendet der ''Mobile Host'' einen ''Gratuitous ARP'', sobald er sich wieder im Netz befindet.
 
=== RARP – Reverse-ARP ===
Das [[Reverse Address Resolution Protocol| Reverse-ARP (RARP)]] funktioniert umgekehrt zu ARP.
* Es kann also MAC-Adressen zu IP-Adressen auflösen.
* Dies ist für die Ermittlung der eigenen IP-Adresse bei Geräten nützlich, bei denen keine dauerhafte Speicherung oder Zuweisung einer Adresse vorgesehen ist.
* Beide Protokolle besitzen das gleiche Paketformat.
* Die Anwendungsbereiche von RARP und ARP unterscheiden sich jedoch stark voneinander.
 
== Probleme ==
ARP ist für den Benutzer unsichtbar, sodass das Vorhandensein dieses Protokolls meist nur bemerkt wird, wenn seltene Fehler auftreten.
 
Die Dauer der Gültigkeit eines ARP-Eintrags (normalerweise wenige Minuten) kann ein Problem darstellen, wenn falsche Einträge vorhanden sind.
* Solange ein fehlerhafter Eintrag existiert, kann mit dem betreffenden Host nicht kommuniziert werden.
* Die Fehlfunktion wird häufig nicht dem ARP-Protokoll zugeschrieben, sondern dem Netz oder einem Fehler in der Netzwerkimplementierung.
* Darüber hinaus ermöglicht nicht jedes Betriebssystem das Erzeugen eines korrigierten Eintrags oder einer Anforderung.
 
Gravierender ist das Eintragen von Daten in den ARP-Cache aus Paketen, für die keine Anforderung erzeugt wurde (blinder Glaube).
* Ein überlasteter Host, der eine alte IP-Adresse führt, antwortet mit großer Wahrscheinlichkeit als letzter auf eine ARP-Anforderung mit einer Antwort, die die falsche Adresse enthält.
* Dieses letzte Paket überschreibt die ARP-Tabelle aller Geräte im Netz, ein fehlerhafter Eintrag bleibt übrig.
 
=== ARP-Spoofing ===
Mit [[ARP-Spoofing]] ist es möglich, absichtlich eine falsche Hardwareadresse in einem Netz zu verteilen.  
* Dadurch kann der Datenverkehr für einen Rechner auf einen anderen umgelenkt und eventuell von diesem sogar verändert werden ([[Man-in-the-Middle-Angriff]]).
* Das stellt ein [[Netzwerksicherheit|Sicherheitsproblem]] dar.
 
ARP-Spoofing ist aufgrund der Architektur von ARP sehr einfach zu realisieren.
* Es müssen einfach ARP-Pakete mit den falschen MAC-/IP-Kombinationen versendet werden.
* Daraufhin wird keiner der Empfängerrechner irgendwelche Überprüfungen anstellen, sondern die Daten einfach in seinen Cache eintragen.


Moderne [[Implementierung]]en ändern die ARP-Tabelle nur für ARP-Antworten, für die vorher vom betreffenden Host eine Anforderung generiert wurde.
[[Kategorie:OSI/2 Data Link]]
[[Kategorie:OSI/3 Network]]

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


Anhang

Siehe auch


RFC

Links

Weblinks
  1. https://itexamanswers.net/cyberops-associate-module-8-address-resolution-protocol.html