RFC-792 oder ICMP mit Ping

Einleitung

RFC 792 (hier zum nachlesen), veröffentlicht im September 1981, definiert das Internet Control Message Protocol (ICMP). ICMP ist ein integraler Bestandteil des Internet-Protokoll-Suites, der für das Internet Protocol (IP) verwendet wird. Es dient hauptsächlich der Übermittlung von Fehlermeldungen und Netzwerkdiagnoseinformationen. Anders als Transportprotokolle wie TCP oder UDP, die Daten zwischen Anwendungen übertragen, wird ICMP hauptsächlich von Netzwerkgeräten verwendet, um Kommunikationsprobleme zu signalisieren oder den Betriebsstatus des Netzwerks zu überprüfen.

Hauptfunktionen und -zwecke von ICMP


Fehlerberichterstattung

ICMP meldet Fehler in der IP-Schicht. Beispielsweise, wenn ein Router ein Paket nicht weiterleiten kann (z.B. wegen eines abgelaufenen TTL-Wertes oder wenn das Zielnetzwerk nicht erreichbar ist), wird eine ICMP-Nachricht an den Absender gesendet.

Diagnose und Testing

Tools wie ping und traceroute nutzen ICMP, um die Erreichbarkeit und Routen zu Netzwerkzielen zu überprüfen. ping verwendet beispielsweise Echo-Request- und Echo-Reply-Nachrichten, um die Verfügbarkeit eines anderen Hosts im Netzwerk zu testen.

Netzwerkmanagement

ICMP kann auch für andere Netzwerkmanagement-Aufgaben verwendet werden, wie zum Beispiel die Umleitung von Paketen über bessere Routen.

Struktur von ICMP-Nachrichten

Eine ICMP-Nachricht besteht aus einem Header und einem Datenbereich. Der Header enthält:

Typ

Ein Feld, das den Typ der Nachricht angibt (z.B. Echo-Request, Destination Unreachable).

Code

Ein Unterfeld, das weitere Details zum Typ der Nachricht liefert. Zum Beispiel definiert der Typ „Destination Unreachable“ mehrere Codes, um die spezifische Ursache (wie Netzwerk unerreichbar, Host unerreichbar, usw.) anzugeben.

Checksumme

Eine Prüfsumme, die zur Überprüfung der Integrität der ICMP-Nachricht verwendet wird.

Datenbereich

Der Datenbereich enthält zusätzliche Informationen, die vom Typ der ICMP-Nachricht abhängig sind. Bei Fehlermeldungen enthält dieser Bereich in der Regel den Kopf des IP-Pakets, das den Fehler verursacht hat, um dem Absender bei der Diagnose zu helfen.

Wichtige ICMP-Nachrichtentypen

Echo Request und Echo Reply (Typ 8 und 0)

Verwendet von ping.

Destination Unreachable (Typ 3)

Informiert den Sender, dass das Ziel aus verschiedenen Gründen nicht erreichbar ist.

Time Exceeded (Typ 11)

Wird gesendet, wenn das Time-to-Live-Feld (TTL) eines Pakets auf 0 fällt, bevor es sein Ziel erreicht.

Redirect (Typ 5)

Teilt einem Host mit, dass es eine bessere Route für den Zielverkehr gibt.

 

RFC 792 ist grundlegend für das Verständnis der Fehlerbehandlung und Diagnose im Internet. Obwohl das Protokoll selbst seit seiner Veröffentlichung unverändert geblieben ist, bleibt es ein kritischer Bestandteil der IP-Kommunikation und Netzwerkinfrastruktur.

Die TTL

Die Time-to-Live (TTL) ist ein wesentlicher Bestandteil von Internet Protocol (IP)-Paketen, einschließlich der für ICMP (Internet Control Message Protocol) Ping-Anfragen und -Antworten verwendeten. Die TTL hilft, Netzwerkschleifen zu verhindern, indem sie eine Obergrenze für die Anzahl der Hops (Übergänge durch Router) setzt, die ein Paket im Netzwerk machen kann, bevor es verworfen wird. Hier betrachten wir die Rolle der TTL sowohl für ICMP-Ping-Requests (Echo Requests) als auch für Responses (Echo Replies) ausführlich:

TTL bei ICMP Ping Requests

Zweck der TTL: Jedes Mal, wenn ein IP-Paket, einschließlich eines ICMP-Ping-Requests, einen Router passiert, wird seine TTL um eins verringert. Startet ein Paket mit einer TTL von N, kann es maximal N Router passieren, bevor es verworfen wird. Ist die TTL auf 0 reduziert, wird das Paket vom aktuellen Router verworfen, und der Sender erhält eine ICMP-„Time Exceeded“-Nachricht.

Einstellung der TTL: Beim Senden eines ICMP-Ping-Requests kann der Sender die TTL explizit festlegen. Die Wahl der TTL kann die Reichweite des Ping-Requests im Netzwerk beeinflussen. Eine niedrige TTL wird verwendet, um die Anzahl der Hops bis zum Erreichen des Ziels zu ermitteln, während eine hohe TTL sicherstellt, dass der Ping das Ziel auch über lange Distanzen erreicht.

TTL und Netzwerkdiagnose: Die TTL eines Ping-Requests kann zur Diagnose von Netzwerkrouten verwendet werden. Beispielsweise kann durch schrittweises Erhöhen der TTL und Beobachten, wo „Time Exceeded“-Nachrichten generiert werden, die Route zu einem Ziel nachvollzogen werden.

TTL bei ICMP Ping Responses

Generierung des Echo Reply: Wenn ein Ping-Request sein Ziel erreicht, generiert das Ziel einen Ping-Response (Echo Reply). Die TTL des Echo Reply wird vom Zielgerät neu gesetzt und nicht vom ursprünglichen Ping-Request übernommen.

TTL des Echo Reply: Die TTL für den Echo Reply wird normalerweise vom Betriebssystem des antwortenden Hosts basierend auf dessen Standardkonfiguration für ausgehende IP-Pakete festgelegt. Häufige Standardwerte sind 64, 128 oder 255, abhängig vom Betriebssystem.

Interpretation des Echo Reply: Die TTL des Echo Reply, wie sie beim Sender ankommt, gibt Aufschluss darüber, wie viele Hops der Reply zurückgelegt hat. Da der Echo Reply mit einer neuen TTL startet, misst die beim Sender angekommene TTL die Anzahl der Hops vom Ziel zurück zum Sender, und nicht die Anzahl der Hops, die der Request zum Erreichen des Ziels benötigte.

Schlussfolgerungen

– Die TTL-Werte von Ping-Requests und -Responses dienen unterschiedlichen Zwecken. Während die TTL des Requests hilft, die Reichweite und Route zu kontrollieren und Netzwerkschleifen zu vermeiden, reflektiert die TTL des Responses die Route und Distanz zurück zum Sender, basierend auf der Standard-TTL-Konfiguration des Antwortenden.

– Durch die Untersuchung der TTL von Ping-Responses können Netzwerkadministratoren und Diagnosetools Einsichten in die Pfadlänge und möglicherweise die Netzwerkstruktur gewinnen, müssen jedoch beachten, dass die Start-TTL des Responses von der Konfiguration des antwortenden Systems abhängt.

Diese detaillierte Betrachtung der TTL bei ICMP-Ping-Operationen zeigt, wie TTL zur Steuerung von Netzwerkverkehr verwendet wird und wie sie für die Diagnose und das Verständnis von Netzwerkpfaden nützlich sein kann.

Nachfolgend eine grafische Darstellung des Request-Response-Verhalten im Idealfall (Request und Response über die selbe Route).

Schlussendlich ist der Begriff TTL und speziell das Wort Time irreführend. Da ja nicht eine Time To Live, sondern eher ein Count to Live angegeben wird.

Die TTL ist, wie man vielleicht beim lesen dieses Beitrags erraten konnte, essentiell für das Programm tracert / traceroute, da man sich hier die TTL zu nutze macht in dem man die TTL immer um eins dekrementiert, so dass der jeweilige Route seine IP preisgibt.

Traceroute ist also im Grunde genommen nichts weiter als eine Abfolge von Pings mit dekrementierter TTL.

Wieder was gelernt!