# Traceroute

Traceroute ist ein Computerprogramm, das ermittelt, über welche Router und Internet-Knoten IP-Datenpakete bis zum abgefragten Rechner gelangen.

## Funktionsweise

Traceroute sendet mehrfach IP-Datenpakete vom Typ ICMP Echo Request an den Ziel-Host, beginnend mit einer Time to Live (TTL) von 1. Der erste Router, der das Datenpaket weiterleiten soll, zählt den Wert der TTL um eins herunter auf 0, woraufhin er es nicht weiterleitet, sondern verwirft. Dabei sendet er die ICMP-Antwort Typ 11: Time exceeded mit Code 0: Time to live exceeded in transit an den Absender. Dieses Datenpaket enthält als Source Address die IP-Adresse des betreffenden Routers. Diese Information wird vom Traceroute-Programm zusammen mit der gesamten Übertragungsdauer aufgezeichnet. Anschließend wiederholt das Programm diesen Schritt mit einer um 1 erhöhten TTL, um auf dieselbe Weise den nächsten Router auf dem Weg durch das Netzwerk zu ermitteln. Dies wird solange wiederholt, bis der Ziel-Host oder das vom jeweiligen Traceroute-Programm verwendete Maximum an Hops erreicht wurde. Wird der Ziel-Host erreicht, sendet er bei ICMP-basiertem Traceroute die ICMP-Antwort Typ 0 ICMP Echo Reply bzw. bei UDP-basiertem Traceroute Destination Unreachable Code 3 Port Unreachable.
Die Sequenz der so gesammelten Adressen kennzeichnet den Weg zum Ziel durch das Netz. Der Rückweg ist bei asymmetrischem Routing anders. Zur Feststellung des Rückwegs muss die Messung von der anderen Seite wiederholt werden. In der Regel werden an jeden Host drei Pakete gesendet. Die drei angezeigten Werte in Millisekunden geben die Antwortzeit dieser drei Versuche wieder.
Das Ergebnis von Traceroute zeigt nicht immer den tatsächlichen Weg. Es wird beeinflusst durch Transportmechanismen wie MPLS, Firewalls, fehlerhaften Implementierungen des IP-Stacks, Network Address Translation, IP-Tunneln oder der Wahl eines anderen Pfades bei Netzwerküberlastung und anderen Faktoren.
Unter Unix existiert auf IPv6-fähigen Systemen oft ein multiprotokollfähiges traceroute oder auch traceroute6. Unter Windows ist Traceroute als tracert.exe aufrufbar. Daneben gibt es seit Windows 2000 noch pathping, das eigentlich zur Überprüfung eines kompletten Netzwerkpfades gedacht ist, sich aber auch als schnelleres Traceroute benutzen lässt. Der Vorteil von pathping ist, dass es die Pakete nicht nacheinander, sondern gleichzeitig verschickt und dadurch kürzere Wartezeiten entstehen. Der Nachteil ist, dass es mit manchen fehlerhaften Netzen nicht zurechtkommt. Alternativ gibt es unter Linux mtr, Windows WinMTR, eine ähnliche Funktionalität.
Windows-Traceroute sendet standardmäßig ICMP-Pakete, Unix-Traceroute arbeitet mit UDP-Segmenten. Mit TCP-Segmenten arbeiten nur spezielle Programme z. B. Tcptraceroute oder LFT (Layer Four Traceroute). Alle diese Traceroute-Implementierungen sind jedoch auf die zurückkommenden ICMP-Pakete angewiesen. Verschiedene Protokolle und Ports auszuprobieren ist dann sinnvoll, wenn ein Paketfilter Traceroute blockiert. Insbesondere die Verwendung von UDP ist oft problematisch. Manche Unix-Traceroutes lassen sich mit dem Parameter „-I“ auf ICMP bzw. mit „-T“ auf TCP umstellen.

## Beispiele

Traceroute unter Unix und Linux (IPv4):
Traceroute unter Linux (IPv6)
Tracert.exe unter Windows (Referenzanbindung Universität Augsburg – T-Online Frankfurt am Main):
Pathping unter Windows XP: