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