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), RFC 950, RFC 4884, RFC 6633, RFC 6918
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 IPv4 nicht zu einem 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:
+ Die ICMP-Pakettypen Nachrichtentyp (Type) Nachrichtenbezeichnung Code Status Beschreibung 0 Echo Reply (Echo-Antwort) 0 Antwort auf Echo-Anfrage (Type 8). Wird bei Ping verwendet. 1 nicht vergeben reserviert 2 nicht vergeben reserviert 3 Destination Unreachable (Ziel nicht erreichbar) 0 Zielnetzwerk nicht erreichbar 1 Ziel-Host ist nicht erreichbar 2 Zielprotokoll ist nicht erreichbar 3 Ziel-Port nicht erreichbar 4 Fragmentierung erforderlich, jedoch ist das Don’t-Fragment-Flag gesetzt 5 Route fehlgeschlagen 6 Zielnetzwerk unbekannt 7 Ziel-Host unbekannt 8 Quell-Host isoliert 9 Kommunikation mit Zielnetzwerk wurde administrativ verweigert 10 Kommunikation mit Ziel-Host wurde administrativ verweigert 11 Zielnetzwerk nicht erreichbar für Type of Service 12 Ziel-Host nicht erreichbar für Type of Service 13 Kommunikation wurde administrativ verweigert 14 Host Prioritätsverletzung 15 Prioritätsabschaltung aktiv 4 Source Quench (Quelle drosseln) 0 veraltet Überlastkontrolle (congestion control) 5 Redirect (Umleitung) 0 Umleitungshinweis das Zielnetzwerk betreffend 1 Umleitungshinweis den Ziel-Host betreffend 2 Umleitungshinweis den Type of Service und das Zielnetzwerk betreffend 3 Umleitungshinweis den Type of Service und den Ziel-Host betreffend 6 Alternate Host Address veraltet Alternative Host-Adresse 7 nicht vergeben reserviert 8 Echo Request (Echo-Anfrage) 0 Wird bei Ping gesendet. 9 Router Advertisement 0 Normales Diensteangebot des Routers 16 Router leitet keinen allgemeinen Datenverkehr weiter. 10 Router Solicitation 0 Router Entdeckung/Auswahl/Anzeige 11 Time Exceeded (Zeitablauf) 0 TTL während Transit abgelaufen 1 Zeit bei der Wiederzusammensetzung bei Fragmentierung abgelaufen 12 Parameter Problem: Bad IP Header (ungültiger IP-Header) 0 Der Fehler wird im Header-Feld Pointer der Nachricht genannt. 1 Eine benötigte Option fehlt 2 Falsche Länge 13 Timestamp (Zeitstempel) 0 Zeitstempelnachricht 14 Timestamp Reply 0 Antwort auf Zeitstempelnachricht (Type 13) 15 Information Request 0 veraltet Informationsanfrage 16 Information Reply 0 veraltet Antwort auf Informationsanfrage (Type 15) 17 Address Mask Request 0 veraltet Anfrage der Adressierungsmaske 18 Address Mask Request 0 veraltet Antwort auf Anfrage der Adressierungsmaske (Type 17) 19 reserviert Reserviert für Sicherheit 20 bis 29 reserviert Reserviert für Experimente 30 Traceroute 0 veraltet Informationsanfrage 31 veraltet Datagramm Conversion Error 32 veraltet Mobile Host Redirect 33 veraltet Where-Are-You (ursprünglich für IPv6) 34 veraltet Here-I-Am (ursprünglich für IPv6) 35 veraltet Anfrage für mobile Registrierung 36 veraltet Antwort auf Anfrage für mobile Registrierung (Type 35) 37 veraltet Anfrage für Domain-Name 38 veraltet Antwort auf Anfrage für Domain-Name (Type 37) 39 veraltet SKIP (Simple Key-Management for Internet Protocol) Algorithm Discovery Protocol 40 Photuris (Session Key Management Protocol) 0 fehlerhafter SPI 1 Authentifizierung fehlgeschlagen 2 Dekomprimierung fehlgeschlagen 3 Entschlüsselung fehlgeschlagen 4 Authentifizierung erforderlich 5 Autorisierung erforderlich 41 experimentell ICMP für experimentelle Mobilitäts-Protokolle wie z. B. RFC 4065 42 Extended Echo Request 0 Anfrage für erweitertes Echo (XPing) 43 Extended Echo Reply (Antwort auf Extended Echo Request, Type 42) 0 Keine Fehler 1 Fehlerhafte Anfrage 2 Keine solche Schnittstelle 3 Kein solcher Tabelleneintrag 4 Mehrere Schnittstellen erfüllen die Anfrage 44 bis 252 nicht vergeben reserviert 253 Experiment 1 im Stil von RFC 3692 experimentell (RFC 4727) 254 Experiment 2 im Stil von RFC 3692 experimentell (RFC 4727) 255 reserviert reserviert
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 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:
Typ Typname Code Bedeutung 0 Echo-Antwort 0 Echo-Antwort 3 Ziel nicht erreichbar 0 Netzwerk nicht erreichbar 1 Host (Zielstation) nicht erreichbar 2 Protokoll nicht erreichbar 3 Port nicht erreichbar 4 Fragmentierung nötig, Don’t Fragment aber gesetzt 5 Route nicht möglich (die Richtung in IP-Header-Feld Option falsch angegeben) 13 Communication administratively prohibited (Paket wird von der Firewall des Empfängers geblockt) 4 Entlasten der Quelle 0 Datagramm verworfen, da Warteschlange voll 8 Echo-Anfrage 0 Echo-Anfrage (besser bekannt als „Ping“) 11 Zeitlimit überschritten 0 TTL (Time To Live, Lebensdauer) abgelaufen 1 Zeitlimit 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.
Literatur
Normen und Standards Standardisiert ist ICMP für IPv4 mit RFC 792. Auf Serverseite ist auch das Kapitel ICMP in RFC 1122 hilfreich.
Einzelnachweise
Kategorie:Netzwerkprotokoll (Vermittlungsschicht) Kategorie:Internet Protocol