这是一个新手问题,但我确信 serverfault 是提问的最佳场所。我了解 traceroute 及其功能,但我不了解响应时间。
例如,我在这里跟踪到 cnn.com,但第 5 跳需要 32 毫秒,而第 6 跳仅需 11 毫秒。数据包是否必须经过第 5 跳的路由器才能到达第 6 跳并返回?或者数据包下次会通过不同的路由到达第 6 跳?
4 gig-3-0-0-nycmnyrdc-rtr01.nyc.rr.com (24.29.157.197) 11.482 ms 9.982 ms 11.259 ms
5 tenge-0-0-0-nycsnyoo-rtr1.nyc.rr.com (24.29.119.102) 32.916 ms 13.796 ms 11.527 ms
6 66.109.6.76 (66.109.6.76) 11.558 ms 10.471 ms 11.295 ms
7 ae-0-0.pr0.nyc30.tbone.rr.com (66.109.6.159) 14.572 ms 11.505 ms 59.635 ms
8 xe-9-0-0.edge2.newark1.level3.net (4.59.20.29) 13.848 ms 13.372 ms 16.891 ms
9 ae-32-52.ebr2.newark1.level3.net (4.68.99.62) 22.635 ms 14.799 ms 16.064 ms
10 ae-4-4.ebr2.washington1.level3.net (4.69.132.101) 21.666 ms 15.879 ms 16.639 ms
11 ae-82-82.csw3.washington1.level3.net (4.69.134.154) 20.728 ms
ae-62-62.csw1.washington1.level3.net (4.69.134.146) 21.352 ms 29.861 ms
答案1
您忽略了这样一个事实:ICMP 数据包所指向的跃点必须响应这些 ICMP 数据包。当您开始跟踪时,第一跃点必须响应指向它的数据包,然后第二跃点响应指向它的数据包,而第一跃点只是将这些数据包传递到第二跃点。您看到的差异是每个跃点响应指向它的数据包的时间差异。第 5 跃点响应 ICMP 数据包所花的时间比第 6 跃点更长。
一般来说,跟踪路由是确定到达目的地的路径的良好工具,但不是确定该路径质量的良好工具。
答案2
确实如此,但到达目的地的时间可能会有所不同。每次输出中出现另一行时,都会发送一个新数据包/一组数据包,每个数据包的 TTL 值都会增加。
例如:
1st run: 1st hop -> report back
2nd run: 1st hop -> 2nd hop -> report back
3rd run: 1st hop -> 2nd hop -> 3rd hop -> report back
...
等等。
因此,如果第一跳在第一次运行中花费 10 毫秒,但下一次运行中仅花费 2 毫秒,则可以得到变化。