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的功能。