为什么 traceroute 比 ping 花费的时间长得多?

19 networking ping

这怎么解释?

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.
Run Code Online (Sandbox Code Playgroud)

所以平均时间应该是:1+7+108+2+1+1+2+1+1+2+2+33+34+34+35+34+34+35+34,比 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
Run Code Online (Sandbox Code Playgroud)

ein*_*ien 18

你不能把所有这些数字加在一起。这是到 google 路径上每个跃点的 ping 时间。所以自然地,路径的每一段都会越来越远,你会看到不同的 ping 时间。如果您查看 tracert 中的最后一次 ping 时间(34 毫秒)和您发出 ping 时收到的时间(34 毫秒),它们是相同的。tracert 程序并不比 ping 慢。

我建议阅读 traceroute 的工作原理:http :
//en.wikipedia.org/wiki/Traceroute

  • 也许 PHP 位于错误的 stackoverflow 站点上,并且意味着 *farther* 指的是物理距离,而 *further* 更适合网络距离?http://english.stackexchange.com/ (2认同)

小智 13

您可以像从纽约开车到旧金山一样看到 ping。这需要,比如说 200 小时(我来自瑞士,不熟悉美国的距离)

但是司机必须回到纽约告诉你他在旧金山。你看看手表,现在你计算出他花了 400 小时的距离。现在这就是 Ping 所做的。Traceroute 的作用是:告诉你的司机他应该从纽约开车到旧金山,每次他来到十字路口时,他都应该回来告诉你它的名字。所以他正在路上,前几个十字路口在纽约。所以他很快就会开车回到你身边,告诉你十字路口的名字。但是当他走得更远时,他会花更长的时间回到你身边。等等...

所以如果你计算他在路上的所有驾驶时间,他报告所有十字路口的时间要比他开车去旧金山的时间长得多。希望这可以为您解决一些问题...

  • 一个更好的比喻是,你派出 30 个司机,告诉他们每个人都去纽约,但他们每个人都必须掉头回到第一个十字路口,第二个十字路口,第三个十字路口,依此类推。一路走到三十个十字路口(希望SF和NY之间的十字路口不到30个)。 (3认同)

Dom*_*Dom -1

因为tracert使用UDP数据包,就像ping使用ICMP数据包一样。在 Linux 下,可以选择traceroute -I执行 ICMP 跟踪路由。

在您的测试中,traceroute 和 ping 中连接到 google 的时间是相同的:34ms。中间的所有路由器都有自己的应答时间,但不影响最终的传输时间。

http://en.wikipedia.org/wiki/Traceroute解释有关 Traceroute 的所有内容

  • 实际上,在 Windows 上,“tracert”默认使用 ICMP,这与 Linux 的“traceroute”不同。 (3认同)