ICMP (Ping und Traceroute)
Willemers Informatik-Ecke

ICMP (Internet Control Message Protocol) ist ein Diagnose-Protokoll, das feststellt, ob ein Host "lebt". Ein ICMP-Paket wird durch das Programm ping gesendet. Anschließend prüft das Programm, ob das Paket zurückkommt und wie groß die Verzögerung ist.

Im folgenden Beispiel wird ein Ping auf die URL www.willemer.de ausgeführt. Unter Linux läuft der Ping so lange, bis er mit der Tastenkombination [Strg]+[C] beendet wird. Dann liefert der Befehl eine Statistik.

$ ping www.willemer.de
PING www.willemer.de (217.160.231.176) 56(84) bytes of data.
64 bytes from clienthosting.eu (217.160.231.176): icmp_seq=1 ttl=56 time=26.2 ms
64 bytes from clienthosting.eu (217.160.231.176): icmp_seq=2 ttl=56 time=27.1 ms
64 bytes from clienthosting.eu (217.160.231.176): icmp_seq=3 ttl=56 time=33.8 ms
64 bytes from clienthosting.eu (217.160.231.176): icmp_seq=4 ttl=56 time=26.6 ms
64 bytes from clienthosting.eu (217.160.231.176): icmp_seq=5 ttl=56 time=26.2 ms
^C
--- www.willemer.de ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 26.225/28.032/33.831/2.924 ms

Mit ping können folgende Erkenntnisse gewonnen werden:

Der TTL (time to live) ist ein Zähler, der bei jedem Router dekrementiert wird. Wird der Zähler 0, wird das Paket nicht mehr weitertransportiert. TTL ist erforderlich, um endlose Schleifen zu verhindern.

Traceroute sendet UDP-Paket, wartet aber auf ein ICMP-Paket.

ICMP zur Ermittlung, ob Pakete fragmentiert werden müssen.

Da ICMP im Extremfall für einen Denial of Service verwendet werden kann, gibt es einige Hosts, die Ping-Pakete nicht beantworten.

Traceroute

Der Befehl traceroute sendet ICMP-Pakete an den Zielrechner, deren TTL-Wert bei 1 beginnt und langsam steigt.

Jeder Router, bei dem eine TTL endet, sendet eine ICMP-Nachricht an den Absender des Pakets zurück.

Auf diese Weise kann traceroute ermitteln, auf welchem Weg ein Paket seinen Weg zum Ziel erreich hat.