Das Internet Control Message Protocol (ICMP) ist Bestandteil des Internet Protokoll Version 4 (IPv4). Es wird aber dennoch als eigenständiges Protokoll behandelt. Die Kernaufgabe des ICMP ist der Austausch von Informationen und Fehlermeldungen. Die meisten ICMP-Pakete enthalten nützliche Diagnose Informationen. Z.B ob das Ziel nicht erreichbar ist, die TTL abgelaufen ist, uvm.
Dazu nutzt das ICMP das IPv4 als Kommunikationsbasis, indem es sich selber als ein Protokoll einer höheren Schicht interpretiert. Daraus resultiert, dass das ICMP seine Nachrichten in IPv4-Paketen gekapselt verschickt.
0–3 | 4–7 | 8–11 | 12–15 | 16–18 | 19–23 | 24–27 | 28–31 Bit |
Version | IHL | Type of Service | Gesamtlänge | ||||
Identifikation | Flags | Fragment Offset | |||||
TTL | Protokoll | Header-Prüfsumme | |||||
Quell-IP-Adresse | |||||||
Ziel-IP-Adresse | |||||||
evtl. Optionen … | |||||||
DATEN … |
0–3 | 4–7 | 8–11 | 12–15 | 16–18 | 19–23 | 24–27 | 28–31 Bit | |
Version | IHL | 0000 | Gesamtlänge | |||||
Identifikation | Flags | Fragment Offset | ||||||
TTL | 0001 | Header-Prüfsumme | ||||||
Quell-IP-Adresse | ||||||||
Ziel-IP-Adresse | ||||||||
evtl. Optionen … | ||||||||
ICMP-Type | ICMP-Code | ICMP-Checksumme | ||||||
DATEN … |
Das ICMP hat keinen eigenen Header, es wird der Standard Header von IPv4 verwendet. Jedoch werden zwei Felder des IP Headers angepasst, der Type-of-Service Wert entspricht „0000“ und das Feld Protokoll ist auf den Wert „0001“ gesetzt (dieser Wert entspricht dem ICMP).
Der Bereich für Daten wird von dem ICMP spezieller genutzt. Es soll folgende Informationen vermitteln:
-ICMP-Type, Meldungstyp (siehe Tabelle unten)
-ICMP-Code, diverse Zusatzinformationen
-ICMP-Checksumme
-ICMP-Daten
Die ICMP-Daten enthalten den IP-Header und die ersten 64 Bit IPv4-Daten des IPv4-Pakets, welches die ICMP-Meldung ausgelöst hat.
0 = Echo Reply
1-2 = reserviert
3 = Destination Unreachable
4 = Source Quench
5 = Redirect
6-7 = reserviert
8 = Echo Request
9 = Router Advertisement
10 = Router Solicitation
11 = Time Exceeded
12 = Parameter Problem
13 = Timestamp (erleichtert die Zeitsynchronisation)
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 = Ursprünglich IPv6 Where-Are-You (ersetzt durch ICMPv6)
34 = Ursprünglich IPv6 I-Am-Here (ersetzt durch ICMPv6)
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 = reserviert
Typ | Typname | Code | Bedeutung |
---|---|---|---|
0 | Echo-Antwort | 0 | Echo-Antwort |
3 | Ziel nicht erreichbar | 0 | Netzwerk nicht erreichbar |
1 | Host (Ziel) nicht erreichbar | ||
2 | Protokoll nicht erreichbar | ||
3 | Port nicht erreichbar | ||
4 | Fragmentierung nötig, Flag "don't fragment" jedoch gesetzt | ||
5 | Route nicht möglich | ||
13 | Communication administratively prohibited (Paket wird von der Firewall des Empfängers blockiert) | ||
4 | Entlasten der Quelle | 0 | Datagramm verworfen, da Warteschlange voll |
8 | Echo-Anfrage | 0 | Echo-Anfrage (bekannt als „Ping“) |
11 | Zeitlimit überschritten | 0 | TTL (Lebensdauer) abgelaufen |
1 | Zeitlimit während der Defragmentierung überschritten |