traceroute显示星号,但是wireshark抓包显示返回了icmp type 11



 $ traceroute -q1 -m5 -n www.163.com                                         
traceroute to www.163.com (218.213.235.236), 5 hops max, 60 byte packets
 1  192.168.1.1  24.030 ms
 2  192.168.137.1  23.946 ms
 3  *
 4  *
 5  *

wireshark抓包

traceroute命令后三跳都显示为星号,但是wireshark抓包显示都返回了icmp type 11。
请教这种情况是什么原因,为什么没有显示10.18.107.1,10.16.0.1和10.16.0.10?
多谢!

计算机网络

古日月土也覺 12 years, 4 months ago

traceroute 的原理是通过发送几个 TTL 不同的 UDP 包,然后期待收到 ICMP type 11 的回应,借此来探测中间节点 IP。UDP/ICMP 包都没有“连接”的概念,traceroute 没法像 TCP 一样方便的判断收到的 ICMP 是谁的 ACK,只能靠 ICMP 里面的数据来猜,如果 ICMP 包含之前发出的 UDP 内容,那么就认为收到了 ACK。

后面三个为 * 的原因就是因为 ICMP 回应里面没有带上任何数据,所以 traceroute 就对应不上了,你从数据包的大小就能很清楚的看到这个差别。

森夜杀人鬼 answered 12 years, 4 months ago

Your Answer