TTl !=1 ICMP Port Unreachable 消息中的值 (traceroute)

网络工程 路由
2022-02-19 14:07:32

我认为当一个跃点(包括目标跃点)回复一个 UDP 请求(通过 traceroute)时,总是有 ttl=1 如此链接

但我在来自目标跃点的 ICMP Port Unreachable 消息响应中看到 ttl 不等于 1。像这样

8.8.8.8 > 192.168.1.6: ICMP 8.8.8.8 udp port 33466 unreachable, length 36
    IP (tos 0x80, ttl 2, id 10956, offset 0, flags [none], proto UDP (17), length 60, bad cksum 8d66 (->bba7)!)
    192.168.1.6.33995 > 8.8.8.8.33466: UDP, length 32
19:03:42.346002 IP (tos 0x0, ttl 46, id 0, offset 0, flags [none], proto ICMP (1), length 56)
    8.8.8.8 > 192.168.1.6: ICMP 8.8.8.8 udp port 33467 unreachable, length 36
    IP (tos 0x80, ttl 3, id 10957, offset 0, flags [none], proto UDP (17), length 60, bad cksum 8c65 (->baa6)!)
    192.168.1.6.49358 > 8.8.8.8.33467: UDP, length 32
19:03:42.348871 IP (tos 0x0, ttl 46, id 0, offset 0, flags [none], proto ICMP (1), length 56)
    8.8.8.8 > 192.168.1.6: ICMP 8.8.8.8 udp port 33468 unreachable, length 36
    IP (tos 0x80, ttl 2, id 10959, offset 0, flags [none], proto UDP (17), length 60, bad cksum 8d63 (->bba4)!)
    192.168.1.6.44693 > 8.8.8.8.33468: UDP, length 32
19:03:42.362155 IP (tos 0x0, ttl 46, id 0, offset 0, flags [none], proto ICMP (1), length 56)
    8.8.8.8 > 192.168.1.6: ICMP 8.8.8.8 udp port 33469 unreachable, length 36
    IP (tos 0x80, ttl 2, id 10962, offset 0, flags [none], proto UDP (17), length 60, bad cksum 8d60 (->bba1)!)
    192.168.1.6.43577 > 8.8.8.8.33469: UDP, length 32
19:03:42.362185 IP (tos 0x20, ttl 47, id 0, offset 0, flags [none], proto ICMP (1), length 56)
    8.8.8.8 > 192.168.1.6: ICMP 8.8.8.8 udp port 33470 unreachable, length 36
    IP (tos 0x80, ttl 3, id 10963, offset 0, flags [none], proto UDP (17), length 60, bad cksum 8c5f (->baa0)!)
    192.168.1.6.60249 > 8.8.8.8.33470: UDP, length 32
19:03:42.382381 IP (tos 0x0, ttl 46, id 0, offset 0, flags [none], proto ICMP (1), length 56)
    8.8.8.8 > 192.168.1.6: ICMP 8.8.8.8 udp port 33471 unreachable, length 36
    IP (tos 0x80, ttl 3, id 10965, offset 0, flags [none], proto UDP (17), length 60, bad cksum 8c5d (->ba9e)!)
    192.168.1.6.33430 > 8.8.8.8.33471: UDP, length 32

你能解释一下为什么会这样吗?

谢谢阅读 !

1个回答

ICMP 响应是从路由器到跟踪路由中使用的原始源的完全独立的单播消息。ICMP 错误数据包的形成与触发错误的原始跟踪路由数据包标头无关,除非确定将错误消息发送到何处。

如果尝试返回到您的 traceroute 客户端的每条 ICMP 消息的 TTL=1,则只有来自第一跳的消息会返回。