我有一个位于第 12 跳的 IP 地址。当我向此 IP 发送 TTL 为 11 的 icmp 请求数据包时,第 11 跳的数据包丢失率为 0%。
但是,如果我 ping 第 11 跳的 IP 地址,或者使用 TTL 11 来构建我的 icmp 请求数据包以跟踪第 11 跳,则数据包丢失将超过 20%。
我不明白这个结果的原因。路由器对回复数据包和超时数据包的处理有什么不同吗?
或者我应该像pathping一样,获取目标IP路由路径后,用ping计算丢包延迟,但不保留traceroute?
抱歉,由于某种原因我无法粘贴我的输出,但我的输出看起来像这样。第 1 跳到第 10 跳的 IP 是相同的。
trace 123.123.123.124
IP TTL Loss
xxx.xxx.xxx.xxx 1 0%
xxx.xxx.xxx.xxx 2 0%
xxx.xxx.xxx.xxx 3 0%
xxx.xxx.xxx.xxx 4 0%
xxx.xxx.xxx.xxx 5 0%
xxx.xxx.xxx.xxx 6 0%
xxx.xxx.xxx.xxx 7 0%
xxx.xxx.xxx.xxx 8 0%
xxx.xxx.xxx.xxx 9 0%
xxx.xxx.xxx.xxx 10 0%
123.123.123.123 11 0%
123.123.123.124 12 20%
trace 123.123.123.123
IP TTL Loss
xxx.xxx.xxx.xxx 1 0%
xxx.xxx.xxx.xxx 2 0%
xxx.xxx.xxx.xxx 3 0%
xxx.xxx.xxx.xxx 4 0%
xxx.xxx.xxx.xxx 5 0%
xxx.xxx.xxx.xxx 6 0%
xxx.xxx.xxx.xxx 7 0%
xxx.xxx.xxx.xxx 8 0%
xxx.xxx.xxx.xxx 9 0%
xxx.xxx.xxx.xxx 10 0%
123.123.123.123 11 20%
ping 123.123.123.123 loss 20%
答案1
IP 流量不一定遵循相同的路径。因此,在发送 ICMP 数据包的 traceroute 的情况下,它们也不一定总是遵循相同的路径(ICMP 在 IP 之上运行)。这就是为什么你会得到不同的结果。