Internet Control Message Protocol

Beim Routen können eine Menge Fehler auftauchen Pakete können falsch geroutet werden, Daten können fragmentiert und nicht richtig wieder zusammengesetzt werden, usw. Man braucht eine Möglichkeit, um den Sender über auftauchende Probleme zu informieren.

Zu diesem Zweck wurde das Internet Control Message Protocol entwickelt. ICMP-Pakete werden als Fracht in normalen IP-Paketen als Reaktion auf aufgetretene Fehler verschickt, und zwar an den Sender des fehlerhaften Pakets (der Empfänger könnte sowieso nichts damit anfangen).

Alle ICMP-Header fangen mit den gleichen 3 Feldern an:

Das Feld Type ist 8 Bit lang und kann folgende Werte haben:

Wert Beschreibung
0 Echo Reply - wird als Antwort auf einen Echo-Request gesendet, also z.B. als Antwort auf ein ping, also ein pong
3 Destination Not Reachable - wird gesendet, wenn die Zielmaschine aus irgendwelchen Gründen nicht antworten mag.
4 Source Quench - ist eine Bitte an den Sender doch etwas langsamer zu senden, weil gerade der Puffer überläuft.
5 Redirection Required - wird gesendet, wenn der Router der das Datagrammm erhält glaubt eine bessere Route zu kennen, als über sich. Es bringt also dem Absender etwas über Geographie bei.
8 Echo Request - ist das was das Programm ping sendet und wird dazu benutzt, festzustellen, ob die Zielmaschine noch lebt.
11 Time to Live Exceeded - wird gesendet wenn die TTL eines Paketes unterwegs abläuft und ist meistens ein Hinweis auf fehlerhaftes Routing
12 Parameter Problem - Optionen sind mit falschen Parametern aufgerufen worden.
13 Timestamp Request - Absendezeit. Gut um Engpässe festzustellen.
14 Timestamp Reply - Absendezeit des Paketes
15 Information Request - überflüssig
16 Information Reply - genauso überflüssig
17 Address Mask Request - gib mal deine Netmask
18 Address Mask Reply - da hast du sie

Das Feld Code erweitert das Type-Feld um einige Zusatzinformationen.

Die Checksum wird analog der IP-Header-Checksum berechnet.

Der Rest des Headers differiert je Art der Nachricht. Einige Header sind im folgenden aufgeführt.

ICMP-Header