Benutzer:Tomen~dewiki/Prru

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

ICMP[Bearbeiten | Quelltext bearbeiten]

Das Internet Control Message Protocol ist ein integraler Bestandteil der IP-Familie und muss von allen IP-fähigen Implementierungen erwartet. Es dient als Hilfsprotokoll zum Austausch von Informations- und Fehlermeldungen. Es ist Teil des Network Layers. ICMP-Pakete enthalten Diagnose-, Routing- oder Fehlerinformationen über den Status des Netzwerkes oder einzelner Pakete.

ICMP unterscheidet sich von TCP und UDP vor allem dadurch, dass es keine Anwendungen zum Austausch von Nutzdaten implementiert, sondern nur dem Betrieb des Netzwerkes dient. Beispiele dazu (traceroute, ping) werden weiter unten unter Anwendungen beschrieben. Versionen von ICMP verlaufen paralell zum Internet Protokoll, die aktuelle Version ist folglich ICMPv6.

Beispiele:

Ein Router sendet ein ICMP-Paket "Destination Unreachable" an den Quellcomputer, um mitzuteilen, dass das Paket nicht zugestellt werden konnte.
"TTL Exceeded" wird gesendet um mitzuteilen, dass das Paket nicht zugestellt werden konnte, da die Time to live abgelaufen ist.
"Router Advertisment" wird von einem Router gesendet, um sich bei den anderen Routern öffentlich bekannt zu machen.
"Timestamp" zum Zeitabgleich.


Es gilt der Grundsatz, dass ein ICMP-Paket niemals ein anderes ICMP-Paket auslöst, d.h. die Tatsache, dass ein ICMP Paket nicht zugestellt werden konnte, wird nicht durch ein Weiteres signalisiert. Eine Ausnahme zu diesem Grundsatz bilden Pakete, die nach einem Reply verlangen ( beispielsweise Echo ).

ICMPv6[Bearbeiten | Quelltext bearbeiten]

ICMPv6 führt einige Protokolle der IPv4-Generation zusammen:

  • ICMPv4
  • IGMPv4 (Internet Group Membership Protocol)
  • ARP (Address Resolution Protocol)

Weiters werden einige Nachrichten eliminiert, die mit IPv6 nicht mehr in Verwendung sind.

Aufbau[Bearbeiten | Quelltext bearbeiten]

Der Aufbau einer ICMP-Nachricht lässt sich wie folgt darstellen:

Bit 0 7 Bit 8 15 Bit 16 23 Bit 24 31
Typ Code Prüfsumme

Daten (optional)

Das Feld Typ gibt dabei die Klasse der ICMP-Nachricht an, das Feld Code spezifiziert die Art der Nachricht genauer. Einige der häufiger vorkommenden Typ-Code-Kombinationen sind:

Typ Typname Code Bedeutung
0 Echo Reply 0 Echo Reply
3 Destination Unreachable 1 Host Unreachable
3 Port Unreachable
4 Fragmentation Needed, DF Set
13 Communication Administrativly Prohibited
11 Time Exceeded 0 TTL Exceeded
1 Fragment Reassembly Timeout

Ein zusätzliches Feld Daten trägt bei vielen ICMP-Nachrichten im ersten 32-Bit-Wort genauere Informationen zur Zuordnung der ICMP-Nachricht. Oft werden ab dem zweiten Datenwort auch IP-Header des auslesenden Datagramms sowie die ersten 64 Byte des Pakets übermittelt.

ICMP Pakettypen[Bearbeiten | Quelltext bearbeiten]

  • 0 = Echo Reply
  • 3 = Destination Unreachable
  • 4 = Source Quench
  • 5 = Redirect
  • 8 = Echo Request
  • 9 = Router Advertisment
  • 10 = Router Solicitation
  • 11 = Time Exceeded
  • 12 = Parameter Problem
  • 13 = Timestamp (erleichtert die Synchronisation von Uhren)
  • 14 = Timestamp Reply
  • 15 = Information Request
  • 16 = Information Reply
  • 17 = Address Mask Request
  • 18 = Address Mask Reply
  • 19 = Reserved (for Security)
  • 20–29 = Reserved (for Robustness Experiment)
  • 30 = Traceroute
  • 31 = Datagram Conversion Error
  • 32 = Mobile Host Redirect
  • 33 = IPv6 Where-Are-You
  • 34 = IPv6 I-Am-Here
  • 35 = Mobile Registration Request
  • 36 = Mobile Registration Reply
  • 37 = Domain Name Request
  • 38 = Domain Name Reply
  • 39 = SKIP
  • 40 = Photuris
  • 41 = ICMP messages utilized by experimental mobility protocols such as Seamoby
  • 42–255 = Reserved

ICMPv6 Typen[Bearbeiten | Quelltext bearbeiten]

Typ Bedeutung
1 Destination Unreachable
2 Packet Too Big
3 Time Exceeded
4 Parameter Problem
128 Echo Request
129 Echo Reply
130 Group Membership Query
131 Group Membership Report
132 Group Membership Reduction
133 Router Solicitation
134 Router Advertisement
135 Neighbor Solicitation
136 Neighbor Advertisement
137 Redirect


Anwendundungen[Bearbeiten | Quelltext bearbeiten]

Ping[Bearbeiten | Quelltext bearbeiten]

Ping macht Verwendung vom Echo-Paket um die Reaktionszeit eines anderen Rechners zu testen. Hierbei wird ein Echo-Request gesendet, der angesprochene Rechner antwortet mit einem Echo-Reply oder, falls nicht vorhanden, wird ein Destination Unreachable gesendet.

Traceroute[Bearbeiten | Quelltext bearbeiten]

Traceroute ist mit Ping verwandt. Es soll den Weg eines Paketes von einem Rechner zum nächsten herausfinden. Hierzu wird ein Paket mit einer Zieladresse versehen. Die TTL wird jedoch auf 1 gesetzt und das Paket wird vom ersten Router mit einem Time to live exceeded in transit beantwortet (und somit wird die IP des Routers übertragen). Die TTL wird progressiv um 1 erhöht und es werden solange Pakete versendet bis die gesamte Route bis zum Ziel bekannt ist.

Probleme[Bearbeiten | Quelltext bearbeiten]

smurf.c[Bearbeiten | Quelltext bearbeiten]

Smurf] ist eine DOS-Attacke. Sie sendet ein Echo request an die Broadcastadresse eines Netzwerkes. Hierbei wird die Source-IP als die des Opfers ausgegeben. Jeder Rechner im Netz antwortet mit einem Echo reply an das Ziel. Durch diese Methode wird eine große Anzahl an Paketen auf die Zieladresse geschickt. Diese Attacke wird von den meisten Routern heutzutage bereits blockiert.

Siehe auch[Bearbeiten | Quelltext bearbeiten]

http://de.wikipedia.org/wiki/ICMP http://en.wikipedia.org/wiki/ICMP http://en.wikipedia.org/wiki/ICMPv6 http://www.iana.org/assignments/icmp-parameters - Auflistung aller Pakettypen und -codes

ARP[Bearbeiten | Quelltext bearbeiten]

Das Address Resolution Protocol ist ein Netzwerkprotokoll, das die Zuordnung von Internetadressen zu Hardwareadressen möglich macht. Obwohl es nicht auf Ethernet- und IP-Protokolle beschränkt ist, wird es fast ausschließlich im Zusammenhang mit IP-Adressierung auf Ethernet-Netzen verwendet. ARP gehört zur Internetschicht der TCP/IP-Protokollfamilie.

Verwendung[Bearbeiten | Quelltext bearbeiten]

Die 48 Bit langen MAC-Adressen werden vom Hersteller einer Ethernet-Netzwerkkarte oder eines Ethernet-fähigen Gerätes vergeben. Die Adresse jeder Schnittstelle muss dabei innerhalb eines Netzwerks eindeutig sein. MAC-Adressen werden von Ethernet-fähigen Geräten benötigt, um Daten zu addressieren und dieso somit richtig austauschen zu können.

Da es keine feste Beziehung zwischen 32 Bit langen IP-Adressen und MAC-Adressen gibt, wurde das ARP geschaffen um die MAC-Adresse aus der IP-Adresse zu ermitteln. Will ein Rechner in einem Ethernet an einen Rechner in demselben Netz ein IP-Paket senden, muss er die Information in einem Ethernetframe verpacken. Jeder Frame enthält eine Ethernetquelladresse und -zieladresse. Zunächst kennt ein Rechner nur die eigene Adresse, die er in das Feld für die Quelladresse einfügt. Mit Hilfe des ARP-Protokolls kann jeder Rechner die Ethernet-Zieladresse der anderen Rechner ermitteln.

ARP wird also verwendet, wenn einem Computer die MAC-Adresse eines anderen Computers nicht bekannt ist und sie somit nicht adressiert werden können.

Funktionsweise[Bearbeiten | Quelltext bearbeiten]

Es wird eine ARP-Anforderung (ARP Request-Broadcast) mit der IP-Adresse des anderen Computers gesendet. Bei Broadcasts ist das Erzeugen eines Ethernetframes kein Problem, da als MAC-Zieladresse die Broadcast-Adresse ff-ff-ff-ff-ff-ff verwendet wird. Ein Host, der die IP-Adresse kennt, antwortet mit dem Zurücksenden der passenden MAC-Adresse (ARP-Antwort oder ARP-Reply). Als MAC-Ziel wird die Quelladresse der Anforderung verwendet. Der antwortende Host muss nicht unbedingt der gesuchte Host sein, da jeder teilnehmende Host über einen Cache von MAC- und IP-Adressen verfügt (Routingtabellen). Dies wird jedoch üblicherweise nicht implementiert, da sonst in einem größeren Netz eine ARP-Anfrage von vielen Hosts beantwortet würde (und der Zielhost vielleicht sogar schon abgeschalten ist).

Empfängt ein Host eine ARP-Anforderung oder ARP-Antwort, aktualisiert er seinen ARP-Cache. Dazu trägt er die Quell-IP-Adresse und Quell-MAC-Adresse bzw. die entsprechenden Zieladressen in die ARP-Tabelle ein. Jeder Eintrag läuft normalerweise nach 20 Minuten aus. Sobald ein Eintrag in der Tabelle genutzt wird, wird dessen Ablaufzeit verlängert.

Unter Unix und Windows kann der ARP-Cache mit arp (oder arp -a) angezeigt und manipuliert werden.

ARP und Routing[Bearbeiten | Quelltext bearbeiten]

Das ARP-Protokoll kann nur die MAC-Adressen der Geräte im gleichen Subnetz auflösen, da Ethernet-Broadcasts auf Subnetze beschränkt sind. Aus der Ziel-IP-Adresse wird mit Hilfe der Routingtabelle eine Host-IP-Adresse ermittelt. Diese entspricht der Ziel-IP-Adresse, falls sich der Host im gleichen Subnetz befindet. Ansonsten stellt die Host-IP-Adresse die IP-Adresse des nächsten Routers dar, dessen MAC-Adresse dann über ARP ermittelt wird. Der Ethernet-Frame wird dann an den Router gesendet. Jeder Router verwendet denselben Algorithmus, um den jeweils nächsten Host bzw. Router zu ermitteln.

Das folgende Diagramm stellt den Zusammenhang von IP-Routing mit ARP dar:

Schematische Darstellung von ARP und Routing

Der optionale (blaue) Teil wird normalerweise nicht implementiert. ARP befindet sich in den unteren Protokollschichten, in denen Pakete verlorengehen dürfen. Für die Sicherung und damit die Zuverlässigkeit sind die oberen Schichten zuständig. TCP erreicht beispielsweise Zuverlässigkeit durch Wiederholung von Paketen.

Wird kein gültiger Eintrag in der ARP-Tabelle gefunden, wird das IP-Paket einfach verworfen und stattdessen eine ARP-Anforderung gesendet. Die oberen Protokollschichten sind dann für die Wiederholung des IP-Pakets verantwortlich.

Paketformat[Bearbeiten | Quelltext bearbeiten]

Das ARP-Paket schließt sich an den Ethernet-MAC-Header an. Das Typfeld im Ethernetframe 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 Ethernetframe zwischen ARP-Paket und CRC zusätzliche Bytes eingefügt werden (Padding), um die minimale Framelänge von 64 Bytes 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 für andere, auch zukünftige, Protokolle geeignet. Bei IPv6 wird die Protokolladressgröße statt auf 4 auf 16 Bytes gesetzt, die Adressfelder werden auf 128 Bits (=16 Byte) verlängert.

Ethernet MAC-Adressen und IPv4 Adressen

Von 0 bis 32 Bits

Bit 0-7 Bit 8-15 Bit 16-23 Bit 24-31
Hardwareadresstyp (1) Protokolladresstyp (0x800)
Hardwareadressgröße (6) Protokolladressgröße (4) Operation
Quell-MAC-Adresse
Quell-MAC-Adresse Quell-IP-Adresse
Quell-IP-Adresse Ziel-MAC-Adresse
Ziel-MAC-Adresse
Ziel-IP-Adresse

Ethernet MAC-Adressen und IPv6 Adressen

Von 0 bis 32 Bits

Bit 0-7 Bit 8-15 Bit 16-23 Bit 24-31
Hardwareadresstyp (1) Protokolladresstyp (0x86DD)
Hardwareadressgröße (6) Protokolladressgröße (16) Operation
Quell-MAC-Adresse
Quell-MAC-Adresse Quell-IP-Adresse
Quell-IP-Adresse
Quell-IP-Adresse
Quell-IP-Adresse
Quell-IP-Adresse Ziel-MAC-Adresse
Ziel-MAC-Adresse
Ziel-IP-Adresse
Ziel-IP-Adresse
Ziel-IP-Adresse
Ziel-IP-Adresse

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

Protokolladresstyp (2 Byte) enthält den Protokolltyp, der für die MAC-Adresse angefordert wird (für IPv4-Adressen: 0x0800 (2048)).

Hardwareadressgröße (1 Byte) enthält die Größe der MAC-Adresse (für Ethernet: 6).

Protokolladressgröße (1 Byte) enthält die Größe des Protokolls (für IPv4: 4, für IPv6: 16).

Operation (2 Byte) enthält den Wert, der angibt, welche Operation ausgeführt werden soll (1 für ARP-Anforderung, 2 für ARP-Antwort).

Quell-MAC-Adresse (6 Byte) enthält in einer ARP-Anforderung die MAC-Adresse des Senders. In einer ARP-Antwort enthält es die MAC-Adresse des antwortenden Hosts.

Quell-IP-Adresse (4 Bytes bei IPv4, 16 Bytes bei IPv6) 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.

Ziel-MAC-Adresse (6 Byte) ist in einer ARP-Anforderung undefiniert. In einer ARP-Antwort enthält es die MAC-Adresse des anfragenden Hosts.

Ziel-IP-Adresse (4 Bytes bei IPv4, 16 Bytes bei IPv6) ist bei einer ARP-Anforderung die IP-Adresse des gesuchten Hosts. In einer ARP-Antwort enthält es die IP-Adresse des anfragenden Hosts.

Spezielle ARP-Nachrichten[Bearbeiten | Quelltext bearbeiten]

Proxy ARP[Bearbeiten | Quelltext bearbeiten]

Proxy ARP erlaubt einem Router ARP-Anforderungen für Hosts zu beantworten.

Die Hosts befinden sich dabei in verschiedenen Netzen. Bei der Kommunikation ist für die Hosts der Router transparent, das heißt er muss nicht speziell angesprochen werden, sondern die Hosts können wie gewöhnlich Pakete über verschiedene Netze hinweg versenden.

Sendet Computer A eine ARP-Anforderung an Computer B, erwidert der dazwischenliegende Router an Stelle des Computers B mit einer ARP-Antwort und der Hardwareadresse der Schnittstelle (MAC 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 die selbe 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.

Gratuitous ARP[Bearbeiten | Quelltext bearbeiten]

Gratuitous ARP (engl. "unaufgefordertes ARP") bezeichnet eine spezielle Verwendung von ARP. Dabei wird von einem Host ein ARP-Anforderungs-Broadcast gesendet, bei der er seine eigene IP-Adresse als Quell- und Ziel-IP-Adresse einträgt. Damit teilt er seine ggf. neue MAC-Adresse unaufgefordert mit. Das kann drei Zwecken dienen:

  1. 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 Administrator ein Hinweis darauf, dass ein Host nicht richtig konfiguriert ist.
  2. 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.
  3. Wenn zwei Server aus Gründen der Ausfallsicherheit als Server und Ersatzserver aufgebaut sind und sich eine IP teilen und der aktive Verkehr vom einen auf den anderen geschwenkt werden soll, ist die IP jetzt über eine andere MAC Adresse zu erreichen. Diese neue MAC-Adress-IP-Zuordnung muss bekannt gemacht werden. Sonst bekommt niemand den Wechsel mit.

RARP – Reverse ARP[Bearbeiten | Quelltext bearbeiten]

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 plattenlosen Geräten nützlich. Beide Protokolle besitzen das gleiche Paketformat. Die Anwendungsbereiche von RARP und ARP unterscheiden sich jedoch stark voneinander.

Probleme[Bearbeiten | Quelltext bearbeiten]

ARP ist für den Benutzer unsichtbar, so dass das Vorhandensein dieses Protokolls meist nur bemerkt wird, wenn seltene Fehler auftreten.

Die Länge der Gültigkeit eines ARP-Eintrags (normalerweise 20 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.

Mit ARP-Spoofing ist es auch möglich, absichtlich eine falsche Hardwareadresse in einem Netz zu verteilen, teilweise sogar von außen über einen Remote-Broadcast. Dadurch kann der Datenverkehr für einen Rechner auf einen anderen umgelenkt und eventuell von diesem sogar gefiltert werden (Man-In-The-Middle-Angriff). Dies stellt ein Sicherheitsproblem dar.

Moderne Implementierungen ändern die ARP-Tabelle nur für ARP-Antworten, für die vorher von dem betreffenden Host eine ARP-Anforderung generiert wurde.