|
|
Zeile 40: |
Zeile 40: |
| <div class="mw-collapsible-content">'''Antwort5'''</div> | | <div class="mw-collapsible-content">'''Antwort5'''</div> |
| </div> | | </div> |
|
| |
| = TMP =
| |
| == Beschreibung ==
| |
| '''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.
| |
| * 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 [[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.
| |
|
| |
|
| |
| == Namens- und Adressauflösung ==
| |
|
| |
| == 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'''
| |
|
| |
| * 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.
| |
|
| |
| 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.
| |
|
| |
| {| 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="8" width="50%"|0
| |
| ! colspan="8" width="50%"|1
| |
| |-
| |
| ! 0
| |
| | colspan="16"| Hardwareadresstyp
| |
| |-
| |
| ! 2
| |
| | colspan="16"| Protokolladresstyp
| |
| |-
| |
| ! 4
| |
| | colspan="8"| Hardwareadressgröße
| |
| | colspan="8"| Protokolladressgröße
| |
| |-
| |
| ! 6
| |
| | colspan="16"| Operation
| |
| |-
| |
| ! 8
| |
| | colspan="16" style="background:#f0fff0"| Quell-MAC-Adresse (erste 2 Byte)
| |
| |-
| |
| ! 10
| |
| | colspan="16" style="background:#f0fff0"| (nächste 2 Byte)
| |
| |-
| |
| ! 12
| |
| | colspan="16" style="background:#f0fff0"| (letzte 2 Byte)
| |
| |-
| |
| ! 14
| |
| | colspan="16" style="background:#d0ffd0"| Quell-IP-Adresse (erste 2 Byte)
| |
| |-
| |
| ! 16
| |
| | colspan="16" style="background:#d0ffd0"| (letzte 2 Byte)
| |
| |-
| |
| ! 18
| |
| | colspan="16" style="background:#f0f0ff"| Ziel-MAC-Adresse (erste 2 Byte)
| |
| |-
| |
| ! 20
| |
| | colspan="16" style="background:#f0f0ff"| (nächste 2 Byte)
| |
| |-
| |
| ! 22
| |
| | colspan="16" style="background:#f0f0ff"| (letzte 2 Byte)
| |
| |-
| |
| ! 24
| |
| | colspan="16" style="background:#d0d0ff"| Ziel-IP-Adresse (erste 2 Byte)
| |
| |-
| |
| ! 26
| |
| | colspan="16" style="background:#d0d0ff"| (letzte 2 Byte)
| |
| |}
| |
|
| |
|
| |
| {| class="wikitable sortable"
| |
| |-
| |
| ! Feld !! Länge !! Beschreibung
| |
| |-
| |
| |'''Hardwareadresstyp''' || 2 Byte || Typ der MAC-Adresse im Paket (für Ethernet/ <code>1</code>).
| |
| |-
| |
| |'''Protokolladresstyp''' || 2 Byte || Protokolltyp, der für die MAC-Adresse angefordert wird (für IPv4-Adressen: <code>0x0800 (2048)</code>).
| |
| |-
| |
| |'''Hardwareadressgröße''' || 1 Byte || Größe der MAC-Adresse (für Ethernet/ <code>6</code>).
| |
| |-
| |
| |'''Protokolladressgröße''' || 1 Byte || Größe des Protokolls (für IPv4: <code>4</code>).
| |
| |-
| |
| |'''Operation''' || 2 Byte || Wert, der angibt, welche Operation ausgeführt werden soll (<code>1</code> für ARP-Anforderung, <code>2</code> für ARP-Antwort).
| |
| |-
| |
| |'''Quell-MAC-Adresse''' || 6 Byte || 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 Byte || 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 Byte || 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 Byte || 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 ==
| |
| # Rechner ‚A‘ sucht die MAC-Adresse von Rechner ‚B‘
| |
| # 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 ==
| |
|
| |
| == Ablaufverfolgung ==
| |
|
| |
| == Ablaufdiagramm ==
| |
|
| |
| == Adressauflösung über Subnetzgrenzen (Routing) ==
| |
| == Spezielle ARP-Nachrichten ==
| |
| === Proxy ARP ===
| |
| [[Proxy (Rechnernetz)|Proxy]] ARP erlaubt einem Router, ARP-Anforderungen für Hosts zu beantworten.
| |
| Die Hosts befinden sich dabei in durch einen Router getrennten Netzen – verwenden untypischerweise jedoch den gleichen [[Classless Inter-Domain Routing|IP-Adressbereich]].
| |
| * Bei der Kommunikation ist für die Hosts der Router ''transparent'', d. h.
| |
| * er braucht nicht speziell angesprochen zu werden, sondern die Hosts können wie gewöhnlich Pakete über verschiedene Netze hinweg versenden.
| |
|
| |
| 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.
| |
| * 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.
| |
| * Falls für mehrere IP-Adressen dieselbe MAC-Adresse eingetragen ist, arbeitet der Router mit dieser MAC-Adresse als Proxy.
| |
| * Die Einträge können auch ein Hinweis auf einen [[Angriff]] durch [[ARP-Spoofing]] sein.
| |
|
| |
| * 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
| |
| * Leitet ARP-Anfragen an Routing-Table weiter
| |
| * Erspart (temporär) Routingeinträge auf Host
| |
| * Belastet den Router durch notwendige zusätzliche ARP-Bearbeitung
| |
|
| |
| === 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. 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.
| |
|
| |
| === 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:ARP]] | | [[Kategorie:ARP]] |
| [[Kategorie:IPv4]] | | [[Kategorie:IPv4]] |
| </noinclude> | | </noinclude> |