UDP实现Traceroute为什么收不到ICMP数据?
[实现Traceroute思路]
1. 用 UDP 发送数据,TTL从1开始,每次发送增加1,这样在中间路由器超时,会向源主机发送 ICMP 超时消息;
2. 用协议类型为IPPROTO_ICMP的原始socket接收返回的ICMP数据,但在 Windows Vista创建的ICMP原始sokcet却收不到数据,总是超时。
是否有人遇到过同样的问题?欢迎交流!
代码来自《WinSock网络编程经络》Trace程序,下载地址:http://download.csdn.net/detail/geoff08zhang/4571358