网上很多文章都混淆了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 指定侦测的端口