還是用的ICMP協(xié)議,因為ICMP是IP的上層協(xié)議,而IP里有TTL字段,trace主要就是用來查路由信息的。原理大概是這樣:
你輸入tracert命令后,它會先發(fā)一個TTL為1的數據包出去,到了第一個路由器,TTL減1變成0,路由器就把這個包丟掉,并返回一個超時信息,這樣就知道第一個路由器的地址和延遲時間了;接著發(fā)TTL為2的包,就會卡在第二個路由器,同樣也能拿到時間和地址……以此類推,直到數據包到達目標主機。這時候主機會回一個端口不可達的信息,tracert就根據這個算出總耗時。整個過程走下來,中間經過的每個路由器都會被顯示出來。
你輸入tracert命令后,它會先發(fā)一個TTL為1的數據包出去,到了第一個路由器,TTL減1變成0,路由器就把這個包丟掉,并返回一個超時信息,這樣就知道第一個路由器的地址和延遲時間了;接著發(fā)TTL為2的包,就會卡在第二個路由器,同樣也能拿到時間和地址……以此類推,直到數據包到達目標主機。這時候主機會回一個端口不可達的信息,tracert就根據這個算出總耗時。整個過程走下來,中間經過的每個路由器都會被顯示出來。