我知道,traceroute 使用 UDP,对于目标端口,它以 33434 开头。然后,随着每一跳,它将目标端口号增加 1。问题是:为什么 traceroute 需要增加目标端口?仅增加 TTL 值,同时保持端口号不变,例如 33434 或允许范围内的任何其他值,这难道还不够吗?
traceroute UDP 端口问题
网络工程
UDP
跟踪路由
2021-07-09 07:02:50
1个回答
为了理解这个机制,让我们通过一个例子来看看它:
- 我从我的 PC发出一个
traceroute
to44.12.44.1
- 我的PC机发送3个的UDP数据报,以
44.12.44.1
与TLL = 1和端口= 33434 - 使用TTL=2和端口=33435立即发送3 个UDP 数据报
44.12.44.1
- 使用TTL=3和端口=33436立即发送3 个UDP 数据报
44.12.44.1
它会一直这样做直到TTL=32和port=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 等使用。
其它你可能感兴趣的问题