Internet Control Message Protocol (ICMP)
Das Internet Control Message Protocol (ICMP) benutzt wie TCP und UDP das Internet Protocol IP, ist also ein Teil der Internet-Protokoll-Familie. Es dient in Netzwerken zum Austausch von Fehler- und Informationsmeldungen.
Obwohl ICMP eine Ebene über IP angeordnet ist, ist es in IP integriert. Es wird von jedem Router und PC erwartet, ICM-Protokoll zu sprechenn. Die meisten ICMP-Pakete enthalten Diagnosee-Informationen, sie werden vom Router zur Quelle (engl. source) zurückgeschickt, wenn der Router Pakete verwirft, z.B. weil das Ziel (engl. destination) nicht erreichbar ist, die TTL abgelaufen ist, usw. 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 bildet die Echo-Funktion. Echo-ICMP-Pakete werden z.B. durch das Programm Ping verschickt.
ICMP-Nachrichten werden beim Versand im Datenteil von IP-Datagrammen eingekapselt. Dabei sind im IP-Header der Servicetyp immer 0 und die Protokollnummer immer 1.
Die ICMP Pakettypen
-
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
Time-To-Live
Traceroute sendet UDP-Datagramme mit manipulierten IP-Time-to-live-(TTL)-Header-Feldern und sucht nach ICMP-Meldungen .Time to live exceeded in transit und Destination unreachable in den Antworten. Damit kann festgestellt werden, welchen Weg ein Paket zu einem bestimmten Host nimmt.
Aufbau
Der Aufbau einer ICMP-Nachricht lässt sich wie folgt darstellen:
Bit 0 – 77 |
Bit 8 – 15 |
Bit 16 – 23 |
Bit 24 – 31 |
---|---|---|---|
Typ |
Code |
Prüfsumme |
|
|
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:
Typp |
Typname |
Code |
Bedeutung |
---|---|---|---|
0 |
Echo Reply |
0 |
Echo Reply |
3 |
Destination Unreachable |
1 |
Host Unreachable |
|
|
3 |
Port Unreachable |
|
|
4 |
Fragmentation Needed, DF Set |
8 |
Echo Request |
0 |
Echo Request |
11 |
Time Exceeded |
0 |
TTL Exceeded |
|
|
1 |
Fragment Reassembly Timeout |
30 |
Traceroute |
|
Traceroute |
33 |
IPv6 Where-Are-You |
|
IPv6 Where-Are-You |
34 |
IPv6 I-Am-Here |
|
IPv6 I-Am-Here |
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 auslösenden Datagramms sowie die ersten 64 Byte des Pakets übermittelt.