为什么 ICMP Time Exceeded 数据包需要更长的 ICMP Echo 回复

网络工程 icmp 跟踪路由
2022-02-24 14:29:01

我注意到,当我使用 tracert 时,某个路由器(跃点)总是需要大约 200 毫秒才能回复,其余的回复在 50 毫秒内,在使用 Wireshark 深入研究之后,我注意到 Tracert 使用带有 TTL 的普通 ICMP 回显请求将触发来自路由器(跃点)的 ICMP Time Exceeded,ping 同一个路由器,该路由器需要 200 毫秒才能发送回一个 Time Exceeded ICMP 发送的回显回复,总是 11 毫秒!这背后的原因是什么?是否有可能某些路由器甚至可以过滤要延迟的 ICMP 类型?

2个回答

创建 ICMP 消息远远低于路由器的优先级列表。路由器的主要功能是尽可能快地路由数据包。当路由器有时间时,生成 ICMP 消息就完成了。

回复慢的路由器可能很忙,它会在有时间的时候发送回复。

回复实际上可能会通过不同的网络路径到达您的手中。这是一个带有相关讨论的 ServerFault 线程:https ://serverfault.com/questions/705115/icmp-replies-ingress-or-egress-interface-eg-from-a-traceroute

要确定,您可以比较到达回复的 TTL(这与 traceroute 打印的 TTL 不同)或检查相关路由器的实际行为。