网上很多文章都混淆了tracert和traceroute的工作方式原理,有必要说明下
tracert和traceroute默认是有区别的:
首先win下的tracert是采用的icmp报文,发送的是 echo request请求报文,最终目的服务器回应的是 echo reply报文. 而traceroute(unix,linux或思科设备)默认采用的是发送 UDP报文,最终目的服务器回应的是端口不可达ICMP 3 Destination Unreachable.
二者都是少不了icmp协议支持,但是是不能混淆的。当经过路由器时,会把报文的TTL减1,然后回送一个 11 Time Exceeded for a Datagram,由此源知道了路由器的存在。
由于回送11 TTL-expired的信息需要CPU生成一个packet,必须打断 CPu为保证其它工作的正常进行,cisco router每隔一秒才处理traceroute,所以在source 上你可能看到中间一路 * * *,但却看得到最后的destination. 这时你应知道这是中间的router CPU太忙或者中间路由器不回送TTL-expired包的原因。
traceroute还支持 tcp进行侦测,默认采用目的服务器80.
traceroute [] ip -n 不进行主机的名称解析,直接用ip -U 使用udp的33434(目的)进行侦测,默认值 -I 使用ICMP -T 使用TCP侦测,默认侦测目的ip的80(不用特别指定端口) -w waittime 设置超时时间 -p 指定侦测的端口