Internet Control Message Protocol
ICMP (Internet Control Message Protocol) | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Familie: | Internetprotokollfamilie | |||||||||||||||||
Einsatzgebiet: | Obligatorischer Zusatz zum Internet Protocol, | |||||||||||||||||
| ||||||||||||||||||
Standards: | RFC 792 (1981) |
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 steht als 8-Bit-Zahl am Anfang des ICMP-Headers. Die Zahlen haben dabei folgende Bedeutungen:[1]
Typ | Code | Status | Beschreibung |
---|---|---|---|
0 – Echo Antwort[4]:14 | 0 | Echo Antwort (used to Ping (Datenübertragung) | |
1 und 2 | nicht vergeben | Reserviert | |
3 – Ziel nicht Erreichbar[4]:4 | 0 | Ziel Netzwerk nicht Erreichbar | |
1 | Ziel host ist nicht erreichbar | ||
2 | Ziel Protokoll ist nicht erreichbar | ||
3 | Ziel Port nicht Erreichbar | ||
4 | Aufteilung benötigt | ||
5 | Quellenweg fehlgeschlagen | ||
6 | Kein Ziel Netzwerk | ||
7 | Kein Ziel host | ||
8 | Quelle host isoliert | ||
9 | Netzwerk wurde administrativverweigert | ||
10 | Host wurde administrativverweigert | ||
11 | Netzwerk nicht Erreichbar für Type of Service | ||
12 | Host nicht Erreichbar für Type of Service | ||
13 | Kommunikation wurde administrativ verweigert | ||
14 | Host Vorrang verstoss | ||
15 | Vorrang c wird durchgeführt | ||
4 – Quelle Quench | 0 | veraltet | Quelle quench (congestion control) |
5 – Redirect Nachichten | 0 | Datagramm Weiterleitung für das Netzwerk | |
1 | Datagramm Weiterleitung für den Host | ||
2 | Datagramm Weiterleitung für das Type of Service & Netzwerk | ||
3 | Datagramm Weiterleitung für das Type of Service & host | ||
6 | veraltet | Alternativ Host Adresse | |
7 | nicht vergeben | Reserviert | |
8 – Echo Anfrage | 0 | Echo Anfrage (für ping benötigt) | |
9 – ICMP Router Discovery Protokoll Router Advertisement | 0 | Router Anzeige | |
10 – Router Solicitation | 0 | Router Entdeckung/Auswahl/Anzeige | |
11 – Time Exceeded[4]| | 0 | TTL ablaufen im Transit | |
1 | Fragment Zusammenstellungseit exceeded | ||
12 – Parameter Problem: Schlechter IP header | 0 | Pointer zeigt eine error an | |
1 | Eine benötigte Option fehlt | ||
2 | Schlechte länge | ||
13 – Timestamp | 0 | Timestamp | |
14 – Timestamp Antwort | 0 | Timestamp Antwort | |
15 – Informationsanfrage | 0 | veraltet | Information Anfrage |
16 – Informationsantwort | 0 | veraltet | Information Antwort |
17 – Andressen Masken Anfrage | 0 | veraltet | Andressen Masken Anfrage |
18 – Adressen Masken Antwort | 0 | veraltet | Adressen Masken Antwort |
19 | Reserviert | Reserviert für die Sicherheit | |
20 through 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 | Mobile Registration Anfrage | |
36 | veraltet | Mobile Registration Antwort | |
37 | veraltet | Domain Name Anfrage | |
38 | veraltet | Domain Name Antwort | |
39 | veraltet | SKIP Algorithm Discovery Protokoll, Simple Key-Management für Internet Protokoll | |
40 | Sicherheits Fehler | ||
41 | experimentell | ICMP für experimentelle Mobilitäts-Protokolle wie z.b. [RFC4065] | |
42 – Extended Echo Anfrage[5] | 0 | Anfrage verlängert Echo (XPing - see Extended Ping (Xping)) | |
43 –verlängerte Echo Antwort[5] | 0 | Keine Errors | |
1 | Misslungener Anfrage | ||
2 | Keine Such Interface | ||
3 | Keinen Table Eintrag | ||
44 through 252 | nicht vergeben | Reserviert | |
253 | experimentell | RFC3692-style Experiment 1 (RFC 4727) | |
254 | experimentell | RFC3692-style Experiment 2 (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.
Weblinks
- RFC: – Internet Control Message Protocol [Errata: RFC 792]. September 1989 (aktualisiert durch , englisch).
- RFC: – Requirements for Internet Hosts – Communication Layers [Errata: RFC 1122]. Oktober 1989 (aktualisiert durch , auch für weitere ICMP-Erweiterungen, englisch).
- IANA ICMP Parameters – vollständige Liste der ICMP-Typen und Codes
Einzelnachweise
- ↑ Internet Control Message Protocol (ICMP) Parameters. IANA, 15. Juni 2018, abgerufen am 9. Dezember 2018 (englisch).
- ↑ ?
- ↑ ? (= World student series). ISBN 978-0-321-41849-4 (google.com).
- ↑ a b c Vorlage:Cite rfc
- ↑ a b Vorlage:Cite IETF