Internet Control Message Protocol

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 (Internet Control Message Protocol)
Familie: Internetprotokollfamilie
Einsatzgebiet: Obligatorischer Zusatz

zum Internet Protocol,
Fehlermeldungen, Diagnose

ICMP im TCP/IP-Protokollstapel
Internet ICMP
IPv4
Netzzugang Ethernet Token
Bus
Token
Ring
FDDI
Standards: RFC 792 (1981)

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 steht als 8-Bit-Zahl am Anfang des ICMP-Headers. Die Zahlen haben dabei folgende Bedeutungen:[1]

  • 0 = Echo (Antwort)
  • 1–2 = nicht zugewiesen
  • 3 = Ziel des Datagramms nicht erreichbar
  • 4 = Aufforderung, die Paketsendung zu drosseln
  • 5 = Umleitungsempfehlung zu anderem Gateway desselben Netzwerks mit schnellerer Verbindung zum Ziel
  • 6 = alternative Host-Adresse
  • 7 = nicht zugewiesen
  • 8 = Anfrage eines Echos
  • 9 = Angebot eines Routers
  • 10 = Router-Anwerbung
  • 11 = Zeitüberschreitung
  • 12 = Problem mit Parameter des Datagramms
  • 13 = Zeitstempel (erleichtert die Zeitsynchronisation)
  • 14 = Zeitstempel (Antwort)
  • 15 = „Informationsanfrage“ (zur Ermittlung der Netzwerknummer,[2] ersetzt durch DHCP[3])
  • 16 = „Informationsantwort“
  • 17 = Anfrage Netzmaske
  • 18 = Antwort Netzmaske
  • 19 = reserviert (für Sicherheit)
  • 20–29 = reserviert (für Robustheitsexperimente)
  • 30 = Traceroute
  • 31 = Fehler bei Umwandlung des Datagramms
  • 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 = verwendet von experimentellen Mobilitätsprotokollen wie Seamoby
  • 42 = erweitertes Echo *[4]
  • 43 = erweitertes Echo (Antwort) *
  • 44–252 = nicht zugewiesen
  • 253 = Experiment 1 nach RFC 3692
  • 254 = Experiment 2 nach RFC 3692

[†] abgeschafft

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:

0 4 8 12 16 20 24 28 31
Typ Code Prüfsumme
Daten (optional)

Das Typfeld spezifiziert die Nachricht. Das Codefeld 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.

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

Einzelnachweise

  1. Internet Control Message Protocol (ICMP) Parameters. IANA, 15. Juni 2018, abgerufen am 9. Dezember 2018 (englisch).
  2. J. Postel: RFC 792 Internet Control Message Protocol. September 1989. S. 18. (DARPA Internet Program Protocol Specification. bis S. 19  englisch).
  3. F. Gont: RFC 6918. Formally Deprecating Some ICMPv4 Message Types. April 2013. (Löst RFC 1788 ab  englisch).
  4. R. Bonica, R. Thomas, J. Linkova, C. Lenart, M. Boucadair: RFC 8335. PROBE: A Utility for Probing Interfaces. Februar 2018. (Proposed Standard  englisch).
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. The authors of the article are listed here. Additional terms may apply for the media files, click on images to show image meta data.