ICMP
Fakten
ICMP, das Internet Control Message Protocol, ist ein Kontrollprotokoll zur Meldung von Fehlerfällen und zur Durchführung von Tests im Netzwerk. Da IP einen unzuverlässigen Dienst bietet, wird der Verlust eines einzelnen Datagramms nicht gemeldet. Ist jedoch die Zieladresse nicht erreichbar (destination unreachable), oder der TTL-Wert eines Paketes abgelaufen (time exceeded) oder wurde ein falscher Parameter im IP-Paket detektiert (parameter problem), dann schickt ICMP eine Fehlermeldung an den Sender des IP-Paketes. Alle ICMP-Nachrichten werden zum Transport in IP-Datagramme gepackt, wobei das Feld Protocol im IP-Paketkopf auf den Wert 1 (Transport von ICMP Daten) gesetzt wird.
In dem dargestellten Beispiel ist der Empfänger nicht mehr erreichbar, da die Leitung unterbrochen wurde. Dies wird vom Router direkt vor der Fehlerquelle erkannt und er schickt die ICMP-Nachricht destination unreachable an den Sender. Wenn der Router den Grund des Fehlers genauer beschreiben kann, so gibt er dies im reason code an. Gründe für einen unerreichbaren Empfänger können beispielsweise sein: Empfangsnetz oder Empfangsrechner
sind nicht erreichbar, das Protokoll existiert beim Empfänger nicht oder es darf nicht segmentiert werden.
Neben der Meldung von schwerwiegenden Fehlern kann ICMP für Testzwecke genutzt werden. Das bekannteste Beispiel ist hier das Netzwerkkommando ping, das die Erreichbarkeit von Systemen über den Austausch von ICMP-Echo-Request und ICMP-Echo-Reply Paketen testet. Dabei schickt der Sender ein ICMP Echo-Request-Paket an die Zieladresse und kann dabei auch noch Daten einer bestimmten Größe mitschicken oder den TTL-Wert setzen. Der Empfänger sendet als Antwort ein ICMP Echo-Reply. Von ping wird die Zeit gemessen, bis die Antwort eintrifft. Die Zeitangabe sagt aus, wie lange ein Datenpaket zum Zielrechner und wieder zurück braucht. Über die ICMP-Zeitstempel Nachricht kann die RTT (Round Trip Time), die Zeitspanne zwischen dem Senden eines Paketes und dem Empfang der Quittung gemessen werden. Dazu sendet der Sender seine Systemzeit beim Senden zum Zielrechner und dieser schickt diese Zeit plus die Empfangszeit der ICMP-Anfrage und die Absendezeit der Antwort zurück. Damit kann der Initiator die Verzögerung der Verbindung und Belastung des Zielhosts bestimmen.

Beispiel destination unreachable
1/2
