IPv4: ICMP
RFC-792 definiert das Internet Control Message Protocol. Es informiert über Fehler und hilft bei der Fehlersuche. Der Aufbau der ICMP-Nachricht:

Die Bedeutung der Felder:
Type (8 Bits) - Der Nachrichtentyp:
- 0 - Echo Reply
- 3 - Destination Unreachable
- 4 - Source Quench
- 5 - Redirect
- 8 - Echo Request
- 11 - Time Exceeded
- 12 - Parameter Problem
- 13 - Timestamp
- 14 - Timestamp Reply
- 15 - Information Request
- 16 - Information Reply
Code (8 Bits) - Der Code gibt die Unterart der Nachricht an. Er hat je nach Nachrichtentyp eine unterschiedliche Bedeutung.
Checksum (16 Bits) - Prüfsumme über die ICMP-Nachricht. Bei der Berechnung fließt das Checksum-Feld mit "0" ein.
Unused/based on type (32 Bits) - Je nach Nachrichtentyp enthält dieses Feld bestimmte Daten oder ist einfach leer.
IP-Header + 64 Bits of Original Datagram (variable, 32-Bit-Worte) - Je nach Nachrichtentyp besitzt das Feld einen speziellen zweck. Normalerweise enthält es den Header und die ersten 64 Daten-Bits des IP-Pakets, auf welches sich die ICMP-Nachricht bezieht. Bei Echo transportiert es Testdaten und bei Timestamp bzw. Timestamp Reply sind es Zeitstempel. Bei Information Request oder Information Reply Message entfällt das Feld komplett.
Erkärung der wichtigsten Typen:
Echo Request / Echo Reply
Bei beiden Typen ist der Code jeweils 0. Das "unused"-Feld wird in zwei 16-Bit-Felder aufgeteilt:
- Identifier - Session ID
- Sequence Number - Laufnummer
Im Datenbereich befinden sich Testdaten, meist ein vorgegebenes, fortlaufendes Muster. Der Sender schickt ein Echo Request und der Empfänger beantwortet es. Das bekannte Tool "ping" nutzt dieses Verfahren.
Destination Unreachable
Ist das Ziel wegen eines offensichtlichen Grundes (Routingtabelle) nicht erreichbar, sendet ein System diese Nachricht. Der Code spezifiziert die Ursache:
- 0 = Netz nicht erreichbar
- 1 = Host nicht erreichbar
- 2 = Protokoll nicht erreichbar
- 3 = Port nicht erreichbar
- 4 = Fragmentation notwendig aber nicht erlaubt
- 5 = Source-Routing fehlgeschlagen
Die Codes 2 & 3 werden meist von Hosts gesendet. Die anderen primär von Routern.
Time Exceeded
Diese Fehlermeldung hat zwei Codes:
- 0 = TTL ist Null
- 1 = Zeit zum Zusammenfügen der Fragmente überschritten
Das Tool "traceroute" baut auf die Code-0-Fehlermeldung auf. Es sendet ein Paket mit einer TTL von 1 und wartet auf die Fehlermeldung des ersten Routers. Aus der Fehlermeldung ergibt sich die IP-Adresse des Routers. Danach sendet traceroute ein Paket mit einer TTL von 2 und wartet wieder auf eine Fehlermeldung - auf die des zweiten Routers. Bei jedem Schritt erhöht traceroute die TTL um eins bis das Zielsystem erreicht ist. So läßt sich der Hinweg zum Ziel erkunden.

