Internet Control Message Protocol

ICMP (Internet Control Message Protocol)
Familie:Internetprotokollfamilie
Einsatzgebiet:Obligatorischer Zusatz zum Internet Protocol, Fehlermeldungen, Diagnose
ICMP im TCP/IP-Protokollstapel
InternetICMP
IPv4
NetzzugangEthernetToken
Bus
Token
Ring
FDDI
Standards:RFC 792 (1981),[1] RFC 950,[2] RFC 4884,[3] RFC 6633,[4] RFC 6918[5]

Das Internet Control Message Protocol (ICMP) dient in Rechnernetzwerken dem Austausch von Informations- und Fehlermeldungen über das Internet-Protokoll in der Version 4 (IPv4). Für IPv6 existiert ein ähnliches Protokoll mit dem Namen ICMPv6.

ICMP ist Bestandteil von IPv4, wird aber wie ein eigenständiges Protokoll behandelt. Es wird von jedem Router und jedem Rechner erwartet, dass sie ICMP „verstehen“. Die meisten ICMP-Pakete enthalten Diagnose-Informationen: Sie werden vom Router zur Quelle zurückgeschickt, wenn der Router Pakete verwirft, etwa weil beispielsweise das Ziel nicht erreichbar ist oder die TTL abgelaufen ist. Es gelten folgende Grundsätze:

  • ICMP benutzt IP als Kommunikationsbasis, indem es sich selbst als Protokoll einer höheren Schicht interpretiert, d. h. ICMP-Nachrichten werden in IP-Paketen gekapselt.
  • ICMP erkennt einige Fehlerzustände, macht aber IP zu keinem zuverlässigen Protokoll.
  • ICMP analysiert Fehler in jedem IP-Paket, mit Ausnahme solcher, die eine ICMP-Nachricht tragen.
  • ICMP-Nachrichten werden nicht als Antwort auf Pakete an Zieladressen versendet, bei denen es sich um Multicast- oder Broadcast-Adressen handelt.
  • ICMP-Nachrichten antworten nur einer eindeutigen Quell-IP-Adresse.

Die ICMP-Pakettypen

Der Typ des ICMP-Pakets und der zugehörige Code stehen als jeweils 8-Bit-Zahl am Anfang des ICMP-Headers. Die Zahlen haben dabei folgende Bedeutungen:[6]

Die ICMP-Pakettypen[7][8]
Nachrichtentyp (Type)NachrichtenbezeichnungCodeStatusBeschreibung
0Echo Reply (Echo-Antwort)0Antwort auf Echo-Anfrage (Typ 8). Wird bei Ping verwendet.
1nicht vergebenreserviert
2nicht vergebenreserviert
3Destination Unreachable (Ziel nicht erreichbar)0Zielnetzwerk nicht erreichbar
1Ziel-Host ist nicht erreichbar
2Zielprotokoll ist nicht erreichbar
3Ziel-Port nicht erreichbar
4Fragmentierung erforderlich, jedoch ist das Don’t-Fragment-Flag gesetzt
5Route fehlgeschlagen
6Zielnetzwerk unbekannt
7Ziel-Host unbekannt
8Quell-Host isoliert
9Kommunikation mit Zielnetzwerk wurde administrativ verweigert
10Kommunikation mit Ziel-Host wurde administrativ verweigert
11Zielnetzwerk nicht erreichbar für Type of Service
12Ziel-Host nicht erreichbar für Type of Service
13Kommunikation wurde administrativ verweigert
14Host Prioritätsverletzung
15Prioritätsabschaltung aktiv
4Source Quench (Quelle drosseln)0veraltetÜberlastkontrolle (congestion control)
5Redirect (Umleitung)0Umleitungshinweis das Zielnetzwerk betreffend
1Umleitungshinweis den Ziel-Host betreffend
2Umleitungshinweis den Type of Service und das Zielnetzwerk betreffend
3Umleitungshinweis den Type of Service und den Ziel-Host betreffend
6Alternate Host AddressveraltetAlternative Host-Adresse
7nicht vergebenreserviert
8Echo Request (Echo-Anfrage)0Wird bei Ping gesendet.
9Router Advertisement0Normales Diensteangebot des Routers
16Router leitet keinen allgemeinen Datenverkehr weiter.
10Router Solicitation0Router Entdeckung/Auswahl/Anzeige
11Time Exceeded (Zeitablauf)0TTL während Transit abgelaufen
1Zeit bei der Wiederzusammensetzung bei Fragmentierung abgelaufen
12Parameter Problem: Bad IP Header (ungültiger IP-Header)0Der Fehler wird im Header-Feld Pointer der Nachricht genannt.
1Eine benötigte Option fehlt
2Falsche Länge
13Timestamp (Zeitstempel)0Zeitstempelnachricht
14Timestamp Reply0Antwort auf Zeitstempelnachricht (Type 13)
15Information Request0veraltetInformationsanfrage
16Information Reply0veraltetAntwort auf Informationsanfrage (Type 15)
17Address Mask Request0veraltetAnfrage der Adressierungsmaske
18Address Mask Request0veraltetAntwort auf Anfrage der Adressierungsmaske (Type 17)
19reserviertreserviert für Sicherheit
20 bis 29reserviertReserviert für Experimente
30Traceroute0veraltetInformationsanfrage
31veraltetDatagramm Conversion Error
32veraltetMobile Host Redirect
33veraltetWhere-Are-You (ursprünglich für IPv6)
34veraltetHere-I-Am (ursprünglich für IPv6)
35veraltetAnfrage für mobile Registrierung
36veraltetAntwort auf Anfrage für mobile Registrierung (Type 35)
37veraltetAnfrage für Domain-Name
38veraltetAntwort auf Anfrage für Domain-Name (Type 37)
39veraltetSKIP (Simple Key-Management for Internet Protocol) Algorithm Discovery Protocol
40Photuris (Session Key Management Protocol)0fehlerhafter SPI
1Authentifizierung fehlgeschlagen
2Dekomprimierung fehlgeschlagen
3Entschlüsselung fehlgeschlagen
4Authentifizierung erforderlich
5Autorisierung erforderlich
41experimentellICMP für experimentelle Mobilitäts-Protokolle wie z. B. [RFC4065]
42Extended Echo Request0Anfrage für erweitertes Echo (XPing)
43Extended Echo Reply (Antwort auf Extended Echo Request, Type 42)0Keine Fehler
1Fehlerhafte Anfrage
2Keine solche Schnittstelle
3Kein solcher Tabelleneintrag
4Mehrere Schnittstellen erfüllen die Anfrage
44 bis 252nicht vergebenreserviert
253RFC3692-style Experiment 1experimentell(RFC 4727)[9]
254RFC3692-style Experiment 2experimentell(RFC 4727)[9]
255reserviertreserviert

Time-To-Live

Um zu verhindern, dass Pakete endlos durch ein Netzwerk (z. B. im Kreis zwischen mehreren Routern) gesendet werden, reduziert ein Router beim Weiterleiten den TTL-Wert um 1. Erreicht der TTL-Wert den Wert 0, wird das Paket gelöscht und der Sender über eine ICMP-Nachricht über diesen Vorgang informiert. Diesen Mechanismus macht sich Traceroute zunutze.

Um die Route (die Hops) eines Pakets zu einem bestimmten Ziel-Host zu ermitteln, versendet das Analyseprogramm Traceroute Datenpakete mit inkrementierender Time-To-Live (TTL) (beginnend mit 1) und wartet auf „Time to live exceeded in transit“ oder „Destination unreachable“ Meldungen als Reaktion. Abhängig von der Implementierung oder einer gewählten Option von Traceroute können das ICMP- (z. B. unter Windows) oder UDP-Pakete (z. B. unter Linux) sein.

Aufbau

ICMP sendet und empfängt eine Vielzahl von Nachrichten. Im IP-Header wird die ICMP-Nachricht durch die Protokollnummer 1 angezeigt. ICMPv6 trägt dagegen die Protokollnummer 58. Das ICMP-Nachrichtenformat besteht aus nur wenigen Feldern:

048121620242831
TypCodePrüfsumme
Daten (optional)

Das Typ-Feld spezifiziert die Nachricht. Das Code-Feld interpretiert die Nachrichtenart genauer. Die Daten enthalten typischerweise einen Teil der ursprünglichen IP-Nachricht. Einige der häufiger vorkommenden Typ-Code-Kombinationen sind:

TypTypnameCodeBedeutung
0Echo-Antwort0Echo-Antwort
3Ziel nicht erreichbar0Netzwerk nicht erreichbar
1Host (Zielstation) nicht erreichbar
2Protokoll nicht erreichbar
3Port nicht erreichbar
4Fragmentierung nötig, Don’t Fragment aber gesetzt
5Route nicht möglich (die Richtung in IP-Header-Feld Option falsch angegeben)
13Communication administratively prohibited (Paket wird von der Firewall des Empfängers geblockt)
4Entlasten der Quelle0Datagramm verworfen, da Warteschlange voll
8Echo-Anfrage0Echo-Anfrage (besser bekannt als „Ping“)
11Zeitlimit überschritten0TTL (Time To Live, Lebensdauer) abgelaufen
1Zeitlimit während der Defragmentierung überschritten

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 32 Bit des Pakets übermittelt. Das „Daten“-Feld kann jedoch auch dazu missbraucht werden, um Nutzdaten zu übertragen (ICMP-Tunneling). Die notwendige Fehlerbehandlung beziehungsweise Fehlerkorrektur und Ähnliches muss dann jedoch auf der Anwendungsebene implementiert werden.

Sicherheitsrelevante Aspekte

Das Internet Control Message Protocol kann für einen Denial-of-Service- (DoS) oder Distributed-Denial-of-Service-Angriff (DDoS) auf ein Gerät verwendet werden. Außerdem kann ein Gerät von einem Angreifer als Teil eines DDoS-Angriffs für einen Angriff auf ein drittes Gerät missbraucht werden. Typische Angriffsmethoden sind der Smurf-Angriff, das Flooding oder der Ping of Death. Eine weitere Möglichkeit der Ausnutzung des ICMP-Protokolls ist dessen Nutzung zur unberechtigten Datenübertragung mittels ICMP-Tunnel-Verbindung.

Weblinks

  • ICMP Parameters. IANA – vollständige Liste der ICMP-Typen und Codes.
  • RFC1122 – Requirements for Internet Hosts – Communication Layers [Errata: RFC 1122]. Oktober 1989 (aktualisiert durch RFC 1349, auch für weitere ICMP-Erweiterungen, englisch).
  • RFC792 – Internet Control Message Protocol [Errata: RFC 792]. September 1989 (aktualisiert durch RFC 950, englisch).

Einzelnachweise

  1. RFC792 – Internet Control Message Protocol [Errata: RFC 792]. September 1989 (aktualisiert durch RFC 950, englisch).
  2. RFC950 – Internet Standard Subnetting Procedure. August 1985 (englisch).
  3. RFC4884 – Extended ICMP to Support Multi-Part Messages. April 2007 (englisch).
  4. RFC6633 – Deprecation of ICMP Source Quench Messages. Mai 2012 (englisch).
  5. RFC6918 – Formally Deprecating Some ICMPv4 Message Types. April 2013 (englisch).
  6. Internet Control Message Protocol (ICMP) Parameters. IANA, 15. Juni 2018, abgerufen am 9. Dezember 2018 (englisch).
  7. IANA ICMP Parameters. In: iana.org. 21. September 2012, abgerufen am 7. Januar 2013.
  8. J. F. Kurose, K. W. Ross: Computer Netzwerking: A Top-Down Approach. Hrsg.: Addison-Wesley (= World student series). 2006, ISBN 0-321-41849-2 (google.com).
  9. a b RFC4727 – Experimental Values in IPv4, IPv6, ICMPv4, ICMPv6, UDP, and TCP Headers. November 2006 (englisch).