ICMP - Internet Control Message Protocol

1. Allgemein

  • ICMP dient, der Kontrolle des IP-basierten Datenverkehrs, bzw. der Fehleranalyse, der Informationsbeschaffung
  • Es wird für für Diagnose- und Fehlermeldungen aber auch für das Auskundschaften von Rechner (-netzen) eingesetzt.
  • ICMP wurde 1981 in RFC777 festgelegt .
  • Typischer Einsatz für ICMP ist wenn das Ziel eines IP-Pakets unerreichbar ist, weil die Time to Live (TTL - Router reduziert beim Weiterleiten den TTL-Wert um 1) abgelaufen ist.
  • Der ICMP-Typ beschreibt die gewünschte Hauptfunktion des ICMP-Pakets, die durch den ICMP-Code genauer spezifiziert wird.
  • ICMP ist für IPv4 und IPv6 definiert
  • Protokollnummer von ICMP ist 1

2. Ping

Bekannteste ICMP-Typen sind Type 0 (Echo Reply) und Type 8 (Echo Request). Diese beiden ICMP-Typen werden in der Regel zur Feststellung der Erreichbarkeit eines Hosts verwendet. Eine ICMP-Echo-Nachricht besteht aus einem 16-Bit-Identifer sowie einer 16-Bit-Sequenznummer zur Identifikation der Datagramme. Optional können noch Daten an das Paket angehängt werden, um die Netzlast zu erhöhen (z.B. für Performance-Tests).

Beispiel: Host A sendet einen Echo Request an Host B, Host B antwortet darauf mit einem Echo Reply.

3. ICMP-Type 3

Der ICMP-Type 3 (Destination Unreachable) wird versendet, wenn ein Datagramm nicht zugestellt werden konnte. Genauere Information zum Grund der Fehlzustellung gibt der ICMP-Code an.

Es gibt z.B. folgende Möglichkeiten: • Code 0: Zielnetzwerk ist nicht erreichbar (z.B. fehlende Routing) • Code 1 Netzwerk, nicht aber der Host erreichbar. (z.B. falsche Adresse) • Code 2 Protokoll nicht erreichbar. • Code 3 Datagramm nicht an Port weitergereichbar • Code 4 Datagramm wurde mit dem gesetzten Bit "Don’t Fragment" (DF) versandt. Zu groß für die MTU des Netzes • Code 6 Netzwerk nicht vorhanden • Code 7 Host nicht vorhanden • Codes 9 und 10 Kommunikation zum Netzwerk vom Admin untersagt • Codes 11 und 12 Zielnetzwerk nicht für Type-of-Service erreichbar • Code 13 Firewall blockt den Traffic

4. ICMP-Type 4

Wird von einem Empfänger versandt, wenn zu viele Pakete bei ihm eintreffen. Hauptaufgabe ist, überlastete Prozessoren und Netzwerkschnittstellen mit Hilfe der Flusskontrolle zu verhindern.

5. ICMP-Type 5

ICMP-Type 5 (Redirect) wird zur Umlenkung von Routen verwendet. Wird ein Router verwendet, um ein Paket zuzustellen, und kennt dieser Router zusätzlich einen besseren Pfad zum Ziel als den, der über ihn selbst führt, so kann der Router zum Absender des betreffenden Pakets eine ICMP-Redirect-Nachricht senden. Der Absender wird daraufhin die eigene Routingtabelle so abändern, dass er seine Pakete über den vom Router empfohlenen „besseren“ Router sendet. Redirect Message Beispiel

6. ICMP-Type 9 und 10

ICMP-Type 9 (Router Advertisement) wird zur Bekanntgabe von Routern verwendet,während Type 10 (Router Solicitation) diese Meldung anfordert. Ein Host kann sich über die im Netzwerk befindlichen Router informieren und Routingtabelle selbst konfigurieren.

7. ICMP-Type 11

Eine Nachricht vom Type 11 wird versandt, wenn die TTL eines IP-Datagramms abgelaufen ist. Der Host, bei dem die TTL den Wert 0 erreicht, versendet diese Nachricht an den ursprünglichen Absender des Datagramms (ICMP-Code=0). Kommt mind. eins von mehreren Fragmenten nicht an, so wird der ICMP-Code auf den Wert 1 gesetzt.

8. ICMP-Type 12

Ein Parameter Problem liegt vor, wenn im Optionsbereich des IP-Headers ein dem Host unbekannter Parameter gefunden wurde. Der Host verwirft dieses Datagramm und sendet ICMP-Type 12 zum Sender zurück.

9. Beispiele für Ping

  • Syntax

ping [option] hostname or IP address


  • Standardnutzung: IP oder Name

ping google.com

oder

ping 172.217.19.78


  • IPv4 mit -4

ping -4 google.com


  • Interval anpassen mit -i

ping –i 0.5 google.com


  • Packetgröße anpassen mit -s

ping –s 1000 google.com


  • Ping Flood mit -f (nur als root)

root@computer: ping -f 192.168.179.20


  • Anzahl der Pings begrenzen mit -c

ping –c 2 google.com


  • Ping Quiet Mode mit -q (nur eine Zeile und beim Beenden Statistik)

ping -q google.com


  • Zeitstempel mit -D hinzufügen

ping –D google.com


  • Ping-Version anzeigen mit -V

ping –V


10. Beispiel traceroute

Das Programm traceroute ermittelt, über welche Router Datenpakete bis zum Ziel vermittelt werden. Der Sender schickt ein IP-Paket an den Empfänger mit Time-to-live (TTL)=1. Router A empfängt das IP-Paket, setzt TTL=0, verwirft das IP-Paket und sendet einn ICMP-Typ 11 mit Code 0 an den Sender. Das IP-Paket wird wird vom Router weitergeleitet und dabei wird der Wert von TTL dekrementiert. Router B empfängt das IP-Paket, setzt TTL=0, verwirft das IP-Paket und sendet die ICMP-Nachricht von Typ 11 Code 0 an Sender. Wenn jedoch der TTL groß genug ist, dass der Empfänger erreicht wird, sendet dieser eine ICMP-Nachricht vom Typ 3 Code 3 an den Sender. Dadurch kann via ICMP der Weg vom Sender zum Empfänger nachvollzogen werden.[1]


Quellen:

Braun, Christian - Computernetze kompakt, Berlin/Heidelberg 2012

Larisch, Dirk, Lienemann, Gerhard - TCP/IP, Grundlagen und Praxis, Hamburg, 2014

Wendzel, Steffen - IT-Sicherheit für TCP/IP und IoT-Netzwerke, Wiesbaden, 2018

  1. Braun, Christian - Computernetze kompakt, Berlin/Heidelberg 2012 (S. 144/145)