Warum dauert Traceroute viel länger als Ping?

16

Wie ist das zu erklären?

C:\Documents and Settings\Administrator>tracert google.com

Tracing route to google.com [64.233.189.104]
over a maximum of 30 hops:

  1    <1 ms    <1 ms    <1 ms  192.168.0.1
  2     7 ms    <1 ms    <1 ms  reserve.cableplus.com.cn [218.242.223.209]
  3   108 ms   135 ms   163 ms  211.154.70.10
  4     *        *        *     Request timed out.
  5     2 ms     *        1 ms  211.154.64.114
  6     1 ms     1 ms     1 ms  211.154.72.185
  7     1 ms     1 ms     1 ms  202.96.222.77
  8     2 ms     1 ms     2 ms  61.152.81.145
  9     1 ms     2 ms     1 ms  61.152.86.54
 10     1 ms     1 ms     1 ms  202.97.33.238
 11     2 ms     2 ms     2 ms  202.97.33.54
 12     2 ms     1 ms     2 ms  202.97.33.5
 13    33 ms    33 ms    33 ms  202.97.61.50
 14    34 ms    34 ms    34 ms  202.97.62.214
 15    34 ms   186 ms    37 ms  209.85.241.56
 16    35 ms    35 ms    44 ms  66.249.94.34
 17    34 ms    34 ms    34 ms  hkg01s01-in-f104.1e100.net [64.233.189.104]

Trace complete.

Die durchschnittliche Zeit sollte also sein: 1 + 7 + 108 + 2 + 1 + 1 + 2 + 1 + 1 + 2 + 2 + 33 + 34 + 34 + 34 + 34 + 35 + 34, was viel größer ist als ping

C:\Documents and Settings\Administrator>ping google.com

Pinging google.com [64.233.189.104] with 32 bytes of data:

Reply from 64.233.189.104: bytes=32 time=34ms TTL=241
Reply from 64.233.189.104: bytes=32 time=34ms TTL=241
Reply from 64.233.189.104: bytes=32 time=34ms TTL=241
Reply from 64.233.189.104: bytes=32 time=34ms TTL=241

Ping statistics for 64.233.189.104:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 34ms, Maximum = 34ms, Average = 34ms
splattne
quelle
3
So viele schlechte Antworten auf diese Frage. Sie alle erinnern mich in gewisser
Tom O'Connor

Antworten:

16

Sie können nicht einfach alle diese Zahlen addieren. Das ist die Ping-Zeit für jeden Hopfen auf dem Weg zu Google. So wird natürlich jeder Abschnitt des Pfades immer weiter entfernt und Sie sehen unterschiedliche Ping-Zeiten. Wenn Sie sich die letzte Ping-Zeit in tracert (34 ms) und die Zeit ansehen, die Sie bei der Ausgabe des Pings erhalten haben (34 ms), sind diese identisch. Das Tracert-Programm ist nicht langsamer als Ping.

Ich würde vorschlagen, nachzulesen, wie eine Traceroute funktioniert:
http://en.wikipedia.org/wiki/Traceroute

einstiien
quelle
Ist es nicht farther and farther away.
Ich verstehe nicht, was du meinst. Jede auf der Traceroute aufgeführte IP-Adresse ist die Adresse des nächsten Routers in der Zeile zwischen Ihnen und Google. In der "logischen" Netzwerktopologie werden diese mit fortschreitender Liste weiter entfernt. Außerdem entfernen sie sich größtenteils physisch von Ihrem geografischen Standort. Obwohl dies nicht immer zutrifft, scheinen Routen manchmal "unnötig" um die Karte zu springen. Mein Punkt ist jedoch, dass physische Distanz und mehrere Sprünge die Ping-Zeit verlängern.
einstiien
Versuchen Sie, jeden Knoten in der Route zu pingen. Sie sollten die gleiche Summe (ungefähr) finden.
Chris Nava
1
Vielleicht ist PHP auf der falschen Seite Stackoverflow, und Mittel , die weiter um physische Distanz bezeichnet , während weiterhin für Netzwerkabstand besser geeignet ist? english.stackexchange.com
dunxd
12

Sie können den Ping wie eine Fahrt von New York nach San Francisco sehen. Es dauert, sagen wir mal 200 Stunden (ich komme aus der Schweiz und kenne die Entfernungen in den USA nicht)

Aber der Fahrer muss nach New York zurückkehren, um Ihnen mitzuteilen, dass er in San Francisco war. Sie werfen einen Blick auf die Uhr und rechnen nun damit, dass er 400 Stunden für die Strecke gebraucht hat. Genau das macht Ping. Was Traceroute tut, ist: Sagen Sie Ihrem Fahrer, er soll von New York nach San Franciso fahren und jedes Mal, wenn er auf eine Kreuzung kommt, sollte er zurückkommen und Ihnen den Namen nennen. Er ist also auf dem Weg und die ersten Kreuzungen befinden sich in New York. Er fährt also ziemlich schnell zu Ihnen zurück und nennt Ihnen den Namen der Kreuzung. Aber wenn er weiter entfernt ist, wird er länger brauchen, um zu Ihnen zurückzukehren. und so weiter...

Wenn Sie also alle Fahrstunden zählen, die er unterwegs war, würde es viel länger dauern, bis er alle Kreuzungen gemeldet hat, als wenn er nur nach San Francisco fahren müsste. Hoffe das klärt einiges für dich auf ...

Bona
quelle
2
Eine bessere Analogie wäre, wenn Sie 30 Fahrer aussenden und jedem sagen, er solle nach New York fahren, aber jeder muss umkehren und an der ersten Kreuzung, der zweiten Kreuzung, der dritten Kreuzung usw. zurückkehren der Weg bis zu dreißig Kreuzungen (in der Hoffnung, dass es weniger als 30 zwischen SF und NY gibt).
Jed Daniels
0

Tatsächlich ist dies im Wesentlichen auf die Tatsache zurückzuführen, dass PING eine ICMP-Anfrage über das Netzwerk an das DNS und die Appliance des anderen Netzwerks gesendet hat.

Traceroute verschickt jedoch sehr viele Pakete mit einer sehr kurzen TTL.

Wenn Sie beispielsweise von Ihrem Sitz aus versuchen, sich bei www.google.com anzumelden, hat traceroute ein Parkett mit einer TTL von 1 an www.google.com gesendet und eine Antwort von der Appliance des ersten Begegnungsnetzwerks abgewartet.

Anschließend zeigt Traceroute die IP-Adresse der ersten Netzwerk-Appliance auf Ihrem Bildschirm an. Danach wird dasselbe ausgeführt, diesmal jedoch mit einer TTL-Einstellung von 2 usw.

Am Ende hat Traceroute etwa die Hälfte länger gewartet, da bei jedem Sendevorgang auf die Antwort einer Netzwerk-Appliance gewartet wird.

Dr.
quelle
0

Traceroute teilt Ihnen immer den Durchschnitt zum Ziel mit, nicht eine Anhäufung von Zeiten, das heißt, in Ihrem Fall sind es 34 ms mit pingund traceroute.

Wenn traceroute das tun würde, was Sie vorschlagen, wäre die Ausgabe ziemlich unlesbar.

Wenn Sie nur an der Antwortzeit des Ziels interessiert sind, reicht pinges völlig aus, traceroutewenn Sie auf der Route zum Ziel etwas debuggen müssen. Darüber hinaus sind alle Hops zwischen Ihnen und dem Ziel Router. In den meisten Fällen haben Router Vorrang bei der Weiterleitung von Paketen und der Beantwortung von Ping- oder Traceroute-Anfragen (dh im ersten Fall Antworten auf icmp echo replyund im zweiten Fall auf icmp time exceededund antworten oft langsamer (wenn sie überhaupt antworten)

Matte
quelle
0

Für die Nachwelt, da keine der richtigen Antworten sehr klar ist ...

-

Jedes Mal, wenn in der Traceroute angezeigt wird, ist die GESAMTZEIT von IHRER MASCHINE (oder der Maschine, die die Traceroute durchführt ...) zu DIESEM BESTIMMTEN NODE.

Mit anderen Worten, die auf dem zweiten Knoten angezeigte Zeit ist nicht die Zeit zwischen den Knoten 1 und 2, sondern die Gesamtzeit, die zwischen der Quelle, dem ersten Knoten und dem zweiten Knoten insgesamt benötigt wird.

Im Durchschnitt sollten die Zeiten, die auf jedem Knoten angezeigt werden, ungefähr mit den Zeiten übereinstimmen, die Sie erhalten würden, wenn Sie diesen bestimmten Knoten "direkt" anpingen würden (es ist in Wirklichkeit nicht direkter als eine Traceroute). Normalerweise folgt er demselben Pfad im Internet).

Denken Sie daran, dass es so etwas wie einen "Lag-Spike" gibt. Die genaueste Methode zum Ermitteln der Ursache einer Verzögerung besteht darin, eine Traceroute bei Wiederholung mithilfe einer Batchdatei auszuführen (unter Windows) und den nächstgelegenen Knoten (mit der niedrigsten Nummer) zu finden, der zu einem bestimmten Zeitpunkt hohe Nummern aufweist.

-

Öffnen Sie für die Batchdatei den Editor und geben Sie diese 3 Zeilen ein:

:start
tracert -d www.google.com
goto start

Speichern Sie dann als "Trace.bat", aber stellen Sie sicher, dass Sie den Dateityp im Dialogfeld "Speichern" in "Alle Dateien" ändern, bevor Sie speichern. Andernfalls wird die Datei weiterhin als Textdatei gespeichert.

Beim Öffnen werden ständig Traceroutes (zu Google) ausgeführt. Sie können es stoppen, indem Sie Strg + C drücken, während Sie das Fenster ausgewählt haben.

-

Sie können natürlich ändern, wo die Traceroute ausgeführt wird, indem Sie "www.google.com" auf eine beliebige Adresse ändern.

Sie können auch die Option "-d" entfernen, wenn Sie die aufgelösten Hostnamen anzeigen möchten. Dadurch wird die Traceroute jedoch länger, da die Hostnamen von einem DNS-Server für jeden Knoten abgerufen werden (dies ändert jedoch NICHT die tatsächlichen Ergebnisse selbst) ).

Wenn Sie einen Knoten mit hohen Zeiten finden und nur Traceroutes zu diesem bestimmten Knoten ausführen möchten, falls ein anderer Knoten Probleme hat, können Sie entweder "www.google.com" in die IP-Adresse oder den Hostnamen dieses Knotens ändern, ODER Mit der Option -h können Sie festlegen, wie viele Knoten durchsucht werden sollen, dh ...

:start
tracert -d -h 5 www.google.com
goto start
Laike Endaril
quelle
Ein wichtiger Hinweis ist, dass ein Knoten mit ICMP antwortet, der Hauptzweck eines Routers jedoch darin besteht, Pakete weiterzuleiten, und die Erstellung von ICMP-Antworten steht ganz unten auf der Liste der Aufgaben. Ein Router wird routen und ICMP-Nachrichten senden, wenn es Zeit wird. Aus diesem Grund kann die Zwischenzeit länger sein als der gesamte Weg. Der Zwischenrouter ist möglicherweise viel beschäftigter als der Endknoten.
Ron Maupin
Ja, die QOS-Priorität von ICMP ist normalerweise niedriger. Wenn Sie jedoch eine Traceroute ausführen, liegt dies häufig daran, dass bereits ein Problem vorliegt (Verzögerungsspitzen oder fehlerhafter Ping in einem Spiel) und an dem von Ihnen genannten Knoten ( der beschäftigte ist der Engpass, den Sie suchen.
Laike Endaril
Ich meine nicht die QoS-Priorität, sondern das Gerät selbst, das eine ICMP-Antwort erstellt. Der Knoten ist möglicherweise zu beschäftigt, um Pakete weiterzuleiten, damit keine ICMP-Nachricht gesendet werden kann, bevor der ursprüngliche Knoten das Zeitlimit überschreitet. Ein Router leitet Pakete weiter, bevor er entscheidet, eine ICMP-Nachricht zu senden. Das hat nichts mit QoS zu tun.
Ron Maupin
QoS ist ein sehr lose definierter Begriff, und ich betrachte ihn als alle Aktivitäten, die denselben Satz von Ressourcen verwenden, anstatt Aktivitäten, die zusätzliche Aufmerksamkeit erfordern (Erstellen eines Antwortpakets), auszuschließen. Dies ändert jedoch nichts an der Tatsache, dass der Router zu stark ausgelastet ist und Probleme verursachen kann. Daher sind die hohen Zeiten einer Traceroute immer noch ein guter Indikator dafür, wo Ihre Probleme liegen Eine mögliche Ausnahme ist eine große Verkehrsmenge, die eine höhere Priorität als Ihr ICMP hat, aber eine niedrigere Priorität als Ihr normaler Verkehr.
Laike Endaril
-1

Da Tracert UDP-Pakete verwendet, werden wie bei Ping ICMP-Pakete verwendet. Unter Linux können Sie traceroute -IICMP-Traceroute ausführen .

In Ihrem Test ist die Zeit für die Verbindung zu Google in Traceroute und Ping gleich: 34 ms. Alle Router in der Mitte haben ihre eigene Zeit, um zu antworten, haben jedoch keinen Einfluss auf die endgültige Übertragungszeit.

http://en.wikipedia.org/wiki/Traceroute erkläre alles auf Traceroute

Dom
quelle
3
Tatsächlich verwendet Windows im tracertGegensatz zu Linux standardmäßig ICMP traceroute.
Phoebus
tracert verwendet den ICMP-Zeitraum. ICMP ist IP-Protokoll 1, UDP ist 17.
dbasnett
@dbasnett Ursprünglich sendete Traceroute ausgehende Pakete als UDP, und die zurückgegebenen Pakete sind natürlich ICMP-TTL-Nachrichten. Windows und jetzt andere Traceroute-Programme verwenden ICMP-Echoanforderungspakete für ausgehende Nachrichten. Wenn Leute auf UDP-Traceroute oder ICMP-Traceroute verweisen, beziehen sie sich normalerweise auf diese ausgehenden Pakete, da BEIDE Mechanismen darauf beruhen, dass ICMP-TTL die Nachrichten überschritten, die von Hops entlang der Route an den Absender zurückkommen.
Jed Daniels
-1

Sie können Ihre Traceroute verbessern, indem Sie die häufig fehlgeschlagene DNS-Rückwärtssuche deaktivieren: tracert -d www.google.com

Schloss Mathieu
quelle
Dadurch werden die Umlaufzeiten nicht schneller. Es macht es jedoch schneller, Ergebnisse auf Ihrem Bildschirm zurückzugeben, da die DNS-Suche nicht ausgeführt wird.
Jed Daniels