tracert和traceroute都是用来探测数据包经过网络路径的工具。


原理:

共同点:
IP数据包头部TTL字段每经过一个路由设备都会减1,当IP数据包TTL为0且未达到数据包目的IP主机时,当前路由设备会返回一个ICMP time extend(表明TTL为0)包。IP包中的TTL字段从第一个包的1开始递增,直到收到目的主机返回的数据包。

不同点:
tracert:发送ICMP Echo Request(与ping相同)数据包。当数据包到达目的主机时,目的主机返回一个ICMP Echo Reply(ICMP报文类型0)数据包,就像ping一样。这时,tracert就可以结束了。
traceroute:发送UDP数据包,目的端口从33434开始,每一个报文会把目的端口增加1,直到33534。当数据包到达目的主机时,目的主机返回一个ICMP 类型3,代码也是3的报文,表示端口不可达,traceroute就可以结束了。

traceroute实际上更有优势,因为现代版的traceroute只要加-I选项就相当于tracert的功能。