Transport
Einführung
IP
IPv6
VPN
TCP / UDP
Überblick

Hauptmenü
Startseite
Einführung
Daten übertragen
Datennetze
Anwendungen
Info

Themen
Einführung
Paketaufbau
Fragmentierung
IP-Adressen
ARP, RARP, DHCP und BootP
Subnetze
Routing
ICMP

Abbildungen
Das Change-Route-Paket und seine Wirkung

IP - ICMP

Das Internet Control Message Protocol (ICMP) ermöglicht den höheren Protokollschichten, Fehlerzustände auf der Vermittlungsschicht zu erkennen und gibt dem Netzwerkbetreuer Werkzeuge zur Diagnose an die Hand. ICMP-Pakete werden als Nutzdaten von gewöhnlichen IP-Paketen übertragen und können je nach Typ unterschiedliche Länge haben. Jedes ICMP-Paket enthält jedoch zuerst zwei 8-Bit-Felder, "Type" und "Code". Der Type legt dabei die grundsätzliche Funktion des Pakets fest, Code kann diesen dann genauer spezifizieren. Bei Paketen, die bei Fehlern automatisch generiert werden, enthält das ICMP-Paket zudem den Header und die ersten 8 Bytes der Nutzdaten des den Fehler verursachenden IP-Pakets.

Ping:
Der wichtigste Typ der ICMP-Pakete ist der "Echo Request", der mit Type=8 und Code=0 verschickt wird. Der Empfänger dieses Pakets muss es zurücksenden, wobei er Type=0 und Code=0 setzt und es damit zum "Echo Reply" macht. Dieser Mechanismus ermöglicht es, die Erreichbarkeit einer bestimmten Adresse zu prüfen. Der Echo Request lässt sich bei fast jedem Betriebssystem mit folgendem Befehl auslösen:

ping <adresse> [<paketgroesse>]

An dem Parameter "Paketgröße" ist zu erkennen, dass man einen Echo Request mit Testdaten füllen kann, um das Verhalten des Netzes bei verschiedenen Paketgrößen prüfen zu können. Je nach Implementierung läuft der Ping-Befehl entweder im Sekundentakt so lange, bis er mit Strg-C abgebrochen wird, oder erzeugt nur 4 Echo Requests im Sekundentakt und beendet sich dann wieder. Dieses Standardverhalten lässt sich jedoch über Parameter ändern.

Ziel nicht erreichbar:
Dieses ICMP-Paket wird erzeugt, wenn ein Gerät im Netz ein Paket als nicht zustellbar erkennt und deswegen verwerfen muss. Es hat den Type von 3 und kennzeichnet mit dem Code den Fehler genauer:

0 network unreachable (Netzwerk nicht erreichbar)
1 host unreachable (Endgerät nicht erreichbar)
2 protocol unreachable (Protokoll nicht verfügbar)
3 port unreachible (Port nicht erreichbar)
4 fragmentation needed and DF set (Fragmentierung wäre notwendig, ist aber per DF-Flag untersagt)
5 source route failed (vom Sender vorgegebenes Routing fehlgeschlagen)

Source Quench:
Falls ein Router oder Endgerät Datenpakete von einem bestimmten Sender in schnellerer Folge erhält, als es sie verarbeiten kann, sendet es dieses ICMP-Paket mit Type=4 und Code=0. Der Sender sollte dann seine Pakete mit größeren Pausen versenden, ansonsten wird der Empfänger voraussichtlich Pakete verwerfen müssen.

Route ändern:
Gesetzt den Fall, ein Router erhält ein Datenpaket, das er aufgrund seiner Routingtabellen weiterleiten kann. Stellt er nun fest, dass der Sender des Datenpakets und der Router, an den er es weiterleiten möchte, sich im gleichen Netz befinden, könnte das Paket günstiger direkt über diesen verschickt werden. Dies wird dem Sender mit einem "Change Route" ICMP-Paket (Type=5) mitgeteilt. Der Code gibt hierbei an, ob die bessere Route für das ganze Zielnetz gilt (0) oder nur für den Zielhost des ursprünglichen Pakets (1).

Lebenszeit abgelaufen:
Der IP-Header enthält ja ein TTL-Feld (Time To Live), das mit jeder Zwischenstation auf dem Weg des Pakets durchs Netz um eins vermindert wird. Erreicht es den Wert Null, wird das Paket verworfen und der Sender durch ein "Time Exceeded" ICMP-Paket mit Type=11 und Code=0 informiert. Eine zweite Variante (Type=11 und Code=1) wird gesendet, wenn ein fragmentiertes Paket innerhalb eines Timeouts nicht komplett rekonstruiert werden kann, z.B. weil ein Fragment verloren gegangen ist.

Die erste Variante wird von einem weiteren Befehl zur Netzwerkdiagnose genutzt, nämlich Traceroute. (Auf Windows-Systemen meist "tracert" genannt). Dieser verschickt Datenpakete an einen Zielhost, und zwar zunächst eines mit einer TTL von 1. Dieses wird also bereits von der ersten Zwischenstation verworfen und ein "Time Exceeded" ICMP-Paket zurückgesendet. Die IP-Adresse dieser Station wird angezeigt und nun ein Paket mit einer TTL von 2 verschickt. Dieses wird von der zweiten Station verworfen und so weiter. Irgendwann ist die TTL groß genug und das Paket erreicht sein Ziel. Nun beendet sich der Traceroute-Befehl. Als Ergebnis ist eine Liste der Zwischenstationen vom Sender zum Empfänger zu sehen. Dabei ist zu beachten, dass man von Routern immer die IP-Adresse jenes Interfaces zurückgemeldet bekommt, über das das ICMP-Paket zum anfragenden Host geschickt wird.

Beispiel: Sie arbeiten an dem Rechner mit der IP-Adresse 10.1.1.50: