今天网络很慢。所以我tracert.exe
在附近的一台服务器上运行了程序(Windows XP 的德语版本):
>tracert inka.de
Routenverfolgung zu inka.de [193.197.184.1] über maximal 30 Abschnitte:
1 2 ms 2 ms 9 ms speedport.ip [192.168.0.17]
2 2685 ms 2508 ms 2375 ms 217.0.117.14
3 1435 ms 1680 ms 2103 ms 217.0.81.130
4 1302 ms 1729 ms 1856 ms f-ed5-i.F.DE.NET.DTAG.DE [217.5.95.22]
5 1759 ms 1688 ms 2153 ms ffm-b12-link.telia.net [62.115.12.45]
6 1542 ms 1072 ms 1172 ms ffm-bb1-link.telia.net [213.155.136.196]
7 978 ms 999 ms 967 ms ffm-b2-link.telia.net [213.155.132.205]
8 895 ms 836 ms 1072 ms belwue-ic-130164-ffm-b2.c.telia.net [213.248.88.26]
9 1136 ms 1191 ms 1366 ms Karlsruhe-RZ-1-10GE-0-3-0-2.belwue.net [129.143.57.177]
10 1448 ms 1842 ms 1577 ms fe0-553.cix.ka-ip.net [129.143.166.162]
11 1609 ms 1901 ms 1830 ms tapac.inka.de [193.197.184.1]
Ablaufverfolgung beendet.
第二行告诉我,我和 之间的 ICMP 数据包的 RTT217.0.117.14
平均超过两秒。然而,第七行告诉我,我和 之间的 RTTffm-b2-link.telia.net
不到一秒,尽管有五个以上的跳数。
我假设 RTT 会随着每次跳跃而增加,至少平均而言是这样。
这是一个错误的假设吗?如果不是,那么如何解释某些跳数的 RTT 大幅下降?
答案1
路径上的转发设备很可能使用某种路由缓存。当特定目的地的 PDU 首次到达节点时,设备必须发现从哪个接口转发 PDU。当下一个 traceroute PDU 到达时(具有更高的 TTL),节点无需重新发现将 PDU 转发到哪个接口,并且可以更快地转发 PDU。
地址解析协议 (ARP) 也可能发生类似的事情 - 节点第一次需要转发帧时,它必须通过 ARP 请求下一跳,该请求会被缓存,以便下次收到同一下一跳的帧时,可以更快地转发。