|
老师们好~!
在下最近碰到一个关于Traceroute程序的小疑问
在TCP/IP卷一中描述的Traceroute 在发出的数据包中携带一个大于30000的UDP端口号来用于判断返回的数据包是否到达目的主机,如果返回超时ICMP报文(type=11 code=0)则说明还没有到达目的主机,如果返回端口不可达ICMP(3,3)
在这里我做了一个实验~发现用CISCO的Packet Tracer来跟中数据包的时候,确实在IP包头发现协议号是0X11(17)UDP协议~也确实看到了跟在后面的UDP头~
问题在这里了~当我在GNS中用WireShark抓包的时候~情况却并非如此~在没有到达目的以前一切正常,超时ICMP(11,0)报文被返回,但是在到达目的之后返回的却不是端口不可达ICMP(3,3),而直接是ICMP的ping应答(type=0 code=0),这个时候我很纳闷~
我再返回去找源端发出的报文,发现源端发出的报文IP包头的协议字段是1,也就是说是一个ICMP请求(8,0)报文而不是UDP~
这个事情很奇怪~是否后来将Traceroute程序的判断和发送机制给改了?不用UDP来判断是否到达目的地了?
抑或是WireShark抓包工具的问题?
希望知道的老师们不吝赐教~!在下万分感谢~!
|
|