traceroute UDP 端口问题

网络工程 UDP 跟踪路由
2021-07-09 07:02:50

我知道,traceroute 使用 UDP,对于目标端口,它以 33434 开头。然后,随着每一跳,它将目标端口号增加 1。问题是:为什么 traceroute 需要增加目标端口?仅增加 TTL 值,同时保持端口号不变,例如 33434 或允许范围内的任何其他值,这难道还不够吗?

1个回答

为了理解这个机制,让我们通过一个例子来看看它:

  1. 从我的 PC发出一个tracerouteto44.12.44.1
  2. 我的PC机发送3个的UDP数据报,以44.12.44.1TLL = 1端口= 33434
  3. 使用TTL=2端口=33435立即发送3 个UDP 数据报44.12.44.1
  4. 使用TTL=3端口=33436立即发送3 个UDP 数据报44.12.44.1

它会一直这样做直到TTL=32port=33465

当这些 UDP 数据报中的每一个通过路由器时,TTL值都会递减,如果它达到,则路由器返回ICMP 超时消息,也称为ICMP 类型 11

我的 PC 收到了很多 ICMP Time Exceeded Messages。

检查ICMP 消息IP 地址,我的 PC 了解了它自己和44.12.44.1.

但它不知道顺序要知道它,请检查 ICMP 消息内部,因为它包含原始 UDP 数据报标头UDP port minus 33434给出了设备中路由的位置44.12.44.1

请记住,Windows 的实现traceroute使用 ICMP 而不是 UDP,它被 Unix、Linux、BSD 等使用。