我在traceroute联机帮助页上看到类似的输出,但我一直很好奇为什么ping时间在跳跃之间下降?即,我总是期望值从一跳到另一跳递增,如:
[yak 71]% traceroute nis.nsf.net.
traceroute to nis.nsf.net (35.1.1.48), 64 hops max, 38 byte packet
1 helios.ee.lbl.gov (128.3.112.1) 19 ms 19 ms 0 ms
2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms
3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms
4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 39 ms
5 ccn-nerif22.Berkeley.EDU (128.32.168.22) 39 ms 39 ms 39 ms
6 128.32.197.4 (128.32.197.4) 40 ms 59 ms 59 ms
7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 59 ms
8 129.140.70.13 (129.140.70.13) 99 ms 99 ms 80 ms
9 129.140.71.6 (129.140.71.6) 139 ms 239 ms 319 ms
10 129.140.81.7 (129.140.81.7) 220 ms 199 ms 199 ms
11 nic.merit.edu (35.1.1.48) 239 ms 239 ms 239 ms
但是原因是什么:
[yak 72]% traceroute allspice.lcs.mit.edu.
traceroute to allspice.lcs.mit.edu (18.26.0.115), 64 hops max
1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms
2 lilac-dmc.Berkeley.EDU (128.32.216.1) 19 ms 19 ms 19 ms
3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 19 ms
4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 19 ms 39 ms 39 ms
5 ccn-nerif22.Berkeley.EDU (128.32.168.22) 20 ms 39 ms 39 ms
6 128.32.197.4 (128.32.197.4) 59 ms 119 ms 39 ms
7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 39 ms
8 129.140.70.13 (129.140.70.13) 80 ms 79 ms 99 ms
9 129.140.71.6 (129.140.71.6) 139 ms 139 ms 159 ms
10 129.140.81.7 (129.140.81.7) 199 ms 180 ms 300 ms
11 129.140.72.17 (129.140.72.17) 300 ms 239 ms 239 ms
12 * * *
13 128.121.54.72 (128.121.54.72) 259 ms 499 ms 279 ms
14 * * *
15 * * *
16 * * *
17 * * *
18 ALLSPICE.LCS.MIT.EDU (18.26.0.115) 339 ms 279 ms 279 ms
为什么从跳3到4的时间从39ms到19ms?
答案 0 :(得分:6)
它们不仅仅是不同的"啤酒花"但确实完全不同的事件,在不同的时间,可能在不同的条件下。
traceroute
的工作方式是,它发送TTL为1的数据包,并查看答案到达所需的时间。程序重复这三次,以考虑可能和正常的一些变化(请注意,即使是#34中的三个数字,相同的跳"有时也是非常不同的,因为它们也是完全不同的东西)。 / p>
然后,traceroute
发送一个TTL为2(然后是3和4等)的数据包,并看到答案到达需要多长时间。同时,第一台路由器上的负载可能已降低,因此您的数据包实际上转发速度更快。或者,您的数据包发出的物理电缆可能不会很忙,因为您的室友刚刚下载了他的色情片(而在您的网卡必须等待电缆闲置之前)。这是一直发生的事情,你无法知道或控制它
没有办法及时返回,所以你无法改变这样一个事实:一秒钟之后,你的数据包需要更长的时间来完成它。你在两个不同的时间进行探索,所以你能得到的只是一个合理的猜测。是的,一般来说,从跳到跳的时间应该逐渐增加,但它不需要。
那并不意味着往返时间实际上是在跳3和4之间下降。这只意味着它在你同时独立试图获得估计3次跳跃和4次跳跃可能需要多长时间。
答案 1 :(得分:2)
最有可能是线之间的随机延迟。请注意,对于跳跃发送的第二个和第三个数据包,从19ms到39ms。无论如何,它们都在同一个网络上,因此大多数延迟都是由于处理/拥塞。
虽然您偶尔会看到的另一种情况是某些服务器为ICMP消息提供更高的QoS,但表面上看起来表现更好。
答案 2 :(得分:1)
在分组交换网络上,数据包延迟不是确定性的,特别是在网络拥塞的情况下。 traceroute
测试的每一跳都是一个单独的测试,因此不同的网络条件很容易导致以后的测试具有比更近的跳更好的延迟。
也就是说,traceroute
并不发送三个数据包,然后以某种方式计算每一跳的时间。它会在n
跳后发送故意设计为超时的数据包,并在n
增加时测量时间。