ICMP – Internet Control Message Protocol
Das ICMP benutzt das Internet Protokoll (IP), es ist also ein Teil der Internet-Protokoll-Familie. Hauptaufgabe ist der Austausch von Fehler- und Informationsmeldungen in Netzwerken.
IP benutzt ICMP zum Senden von Fehlermeldungen, während ICMP zur Übertragung der Meldungen IP benötigt. Obwohl ICMP eine Ebene über IP angeordnet ist – siehe hierzu das OSI- Referenzmodell (interner Link) – ist es in IP integriert. ICMP wurde definiert, da IP selber keine Funktion zur Status- oder Fehlerübermittlung besitzt, d.h., ein Sender, der ein Datenpaket per IP überträgt hat weder ein Anspruch, dass das Paket ankommt bzw. korrekt übertragen wurde. Hier setzt ICMP ein.
Historie:
ICMP wurde im September 1981 im Request For Comments (RFC) Nummer 792 von der Network Working Group auf Basis des IPv4 beschrieben. Für ICMPv4 wurden nachträglich noch diverse Erweiterungen definiert, die sich jedoch in den seltensten Fällen durchgesetzt haben.
Ping und Pong:
Heutzutage wird vom jedem Router und jedem PC erwartet, ICMP zu „sprechen“. Aber kein Rechner ist verpflichtet, ICMP-Nachrichten zu versenden, mit einer Ausnahme: jeder Rechner muss auf ein ECHO-REQUEST immer ein ECHO-REPLY senden; das sprichwörtliche Ping und Pong.
Ping:
Der wichtigste Typ der ICMP-Pakete ist der Type=8, Code=0 (Echo Request) der verschickt wird. Der Empfänger sendet mittels ICMP-Paket Type=0, Code=0 (Echo Reply) zurück. Dieser Mechanismus ermöglicht es, die Erreichbarkeit einer Adresse zu prüfen. Dazu wird der Befehl „ping“ in fast jedem Betriebssystem benutzt:
ping <Adresse> [Optionen]
ICMP Nachrichten werden in verschiedenen Situationen gesendet, z.B.
- wenn der Gateway (meistens ein Router) dem Host sagen kann, dass es einen kürzeren Weg zum Ziel gibt,
- wenn ein Gateway keine Pufferkapazität mehr hat (Auslastung des Routers),
- wenn ein Datagramm sein Ziel nicht erreicht hat,
- Fehler beim Weiterleiten eines Paketes,
- Fehler bei der Verarbeitung,
- etc.
Aufbau:
Der Aufbau einer ICMP-Nachricht :

Das Feld Typ gibt dabei die Klasse der ICMP-Nachricht an und das Feld Code spezifiziert die Art der Nachricht genauer. Das Feld Daten trägt bei vielen ICMP-Nachrichten im ersten 32-Bit-Wort genauere Informationen zur Zuordnung der ICMP-Nachrichten.
| Typ: | Typname: | Code: | Bedeutung: |
| 0 | Echo Reply |
0 |
Echo Reply |
| 3 | Destination unreachable | 0 | net unreachable |
| 1 | host unreachable | ||
| 2 | protocol unreachable | ||
| 3 | port unreachable | ||
| 4 | fragmentation needed, DF Set | ||
| 5 | source route failed | ||
| 4 | Source Quench | 0 | Source Quench |
| 5 | Redirect Message | 0 | Redirect datagrams for the Network |
| 1 | Redirect datagrams for the Host | ||
| 2 | Redirect datagrams for the Type of Service and Network | ||
| 3 | Redirect datagrams for the Type of Service and Host | ||
| 8 | Echo Request | 0 | Echo Request |
| 9 | Router Advertisment | ||
| 10 | Router Solicitation | ||
| 11 | Time Exceeded | 0 | time to live exceeded in transit |
| 1 | fragment reassembly time exceeded | ||
| 12 | Parameter Problem | 0 | pointer indicates the error |
| 2 | bad length | ||
| 13 | Timestamp Request | ||
| 14 | Timestamp Reply | ||
| 15 | Information Request | ||
| 16 | Information Reply | ||
| 17 | Adress Mask Request | ||
| 18 | Adress 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 message utilized by experimental | mobility | protocols such as Seamoby |
| 42-255 | Reserved |
Bedeutung der ICMP-Nachrichtentypen:
Echo Request / Reply Message:
- siehe oben Ping und Pong
Destination Unreachable Message (Ziel nicht erreichbar):
Dieser Typ wird verwendet, wenn ein Netzwerk oder Host nicht erreichbar ist, das Paket nicht zugestellt werden konnte, der Empfänger nicht das passende Protokoll geladen hat, das Routing nicht geklappt hat, ein Datagramm fragmentiert werden musste, aber das „don`t fragment“ Flag (DF) gesetzt ist u.s.w.
Source Quench Message:
Falls ein Router oder ein Endgerät die Datenpakete nicht mehr verarbeiten kann (z.B. durch Senden von ICMP in schneller Folge), sendet es ein ICMP-Paket mit Type=4, Code=0 an den Sender. Daraufhin sollte der Sender die Pakete mit größeren Pausen versenden, ansonsten werden die Pakete vom Empfänger verworfen.
Redirect Message (Route ändern):
Stellt ein Gateway fest, dass ein Sender ein Datenpaket sendet welches von einem anderen Gateway im Netzwerk besser weitergeleitet werden kann, erhält der Sender ein „change route“ ICMP-Paket Typ=5. Wobei der Code aussagt, ob die bessere Route für das ganze Zielnetz (0) oder für den Zielhost (1) gilt.
Packet Too Big (Paket zu lang):
Diese Message wird versandt, wenn ein Paket nicht weitergeleitet werden konnte, weil es zu lang war und nicht fragmentiert werden durfte. Diese Nachricht ist Grundlage für PMTU-Discovery, ein Verfahren um automatisch die ideale MTU-Größe (Maximum Transfer Unit = Größe der einzelnen Paketfragmente) zu ermitteln.
Time Exceeded Message (Lebenszeit abgelaufen):
Befindet sich eine Nachricht so lange im Netz, dass die „Time To Live (TTL)“ abgelaufen ist, so wird eine „Time Exceeded“-Nachricht Type=11, Code=0 versendet. Das Feld TTL wird um eins vermindert, bei jedem durchlaufen einer Zwischenstation, bis der Wert=0 ist. Danach wird das Paket verworfen. Mit Type=11, Code=1 wird ein fragmentiertes Paket innerhalb eines Timeouts (welches nicht mehr rekonstruiert werden konnte) gegenzeichnet.
Hinweis:
Der Befehl „traceroute“ nutzt die erste Variante. Dieser verschickt Datenpakete an einen Zielhost, und zwar zunächst mit einer TTL von 1. Da dadurch von der ersten Zwischenstation eine Meldung kommt und die IP-Adresse angezeigt wird, erfolgt nun eine schrittweise Erhöhung der TTL. Somit kann der Weg im Netz aufgezeigt werden.
Parameter Problem Message:
Stellt ein Gateway oder Host bei der Verarbeitung eines Datagramms fest, dass im Kopf (Header) fehlerhafte Informationen sind und deswegen die Verarbeitung nicht durchgeführt werden kann, so muss dieses Paket verworfen werden. Über diesen Vorgang informiert die ICMP Nachricht des Typs=12.
Timestamp Request / Reply Message:
Diese Nachrichten ermöglichen die Zeitsynchronisation zweier Rechner. Wird aber in der Praxis kaum eingesetzt, da die Protokolle NTP und SNTP eingeführt worden sind.
Information Request / Reply Message:
Dieser Nachrichtentyp ermöglicht es einem Host, seine Netzadresse zu erfahren.
Hacking mittels ICMP-Paketen:
Ein Angreifer kann mit bestimmten ICMP-Paketen TCP/IP-Verbindungen unterbrechen oder zurücksetzen. Nicht nur der Home-Anwender auch große Firmen sind und waren betroffen (z.B. Cisco, Microsoft, WatchGuard etc.). Als erfolgreiche Verteidigung gegen diese Angriffe sollten die ICMP-Typen und deren Verarbeitung eingeschränkt werden.
Quellen:
* RFC 792 – Internet Control Message Protocol
* RFC 1885 - Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6)
* IANA ICMP Parameters – vollständige Liste der ICMP Typen und Codes
Suche nach Literatur / Bücher zum Thema!
Unsere Seiten nach weiteren Informationen durchsuchen!
Letzte Bearbeitung: 01 / 2006 - Bitte beachten Sie das Copyright und die Hinweise im Inhalt unter www.datahelp.de
Copyright © www.datahelp.de
Modifizierung oder Weitergabe an Dritte nur mit Einverständnis des Autors gestattet !