簡(jiǎn)介:
Tracert(traceroute) 命令用 IP 生存時(shí)間 (TTL) 字段和 ICMP 錯(cuò)誤消息來確定從一個(gè)主機(jī)到網(wǎng)絡(luò)上其他主機(jī)的路由。用來跟蹤到目的IP所經(jīng)過路徑
原理簡(jiǎn)介
首先,tracert送出一個(gè)TTL是1的IP 數(shù)據(jù)包到目的地,當(dāng)路徑上的第一個(gè)路由器收到這個(gè)數(shù)據(jù)包時(shí),它將TTL減1。此時(shí),TTL變?yōu)?,所以該路由器會(huì)將此數(shù)據(jù)包丟掉,并送回一個(gè)「ICMP time exceeded」消息(包括發(fā)IP包的源地址,IP包的所有內(nèi)容及路由器的IP地址),tracert 收到這個(gè)消息后,便知道這個(gè)路由器存在于這個(gè)路徑上,接著tracert 再送出另一個(gè)TTL是2 的數(shù)據(jù)包,發(fā)現(xiàn)第2 個(gè)路由器…… tracert 每次將送出的數(shù)據(jù)包的TTL 加1來發(fā)現(xiàn)另一個(gè)路由器,這個(gè)重復(fù)的動(dòng)作一直持續(xù)到某個(gè)數(shù)據(jù)包 抵達(dá)目的地。
LINUX下的目的地到達(dá)判斷方法:
當(dāng)數(shù)據(jù)包到達(dá)目的地后,該主機(jī)則不會(huì)送回ICMP time exceeded消息,一旦到達(dá)目的地,由于tracert通過UDP數(shù)據(jù)包向不常見端口(30000以上)發(fā)送數(shù)據(jù)包給目的主機(jī),因此會(huì)收到「ICMP port unreachable」消息,故可判斷到達(dá)目的地。
WINDOWS下的目的地到達(dá)判斷方法
發(fā)送的報(bào)文如果到達(dá)終點(diǎn),會(huì)向目的地地址發(fā)送ICMP請(qǐng)求回顯數(shù)據(jù)包
注意:
tracert 有一個(gè)固定的時(shí)間等待響應(yīng)(ICMP TTL到期消息)。如果這個(gè)時(shí)間過了,它將打印出一系列的*號(hào),表明在這個(gè)路徑上,這個(gè)設(shè)備不能在給定的時(shí)間內(nèi)發(fā)出ICMP TTL到期消息的響應(yīng)。然后,Tracert給TTL記數(shù)器加1,繼續(xù)進(jìn)行。
示例如下:
在windows cmd命令窗口執(zhí)行命令tracert www.baidu.com,結(jié)果如下:

過程分析如下:
1)解析域名,主機(jī)發(fā)起查詢DNS記錄,并將請(qǐng)求轉(zhuǎn)到網(wǎng)關(guān)處理(網(wǎng)關(guān)代理),網(wǎng)關(guān)返回域名的對(duì)應(yīng)的IP

2)主機(jī)發(fā)送TTL=1, 等待第一個(gè)路徑節(jié)點(diǎn)(一般是網(wǎng)關(guān))返回ICMP time exceeded消息到主機(jī)后,再次發(fā)送TTL=2的請(qǐng)求

3)第二個(gè)路徑節(jié)點(diǎn)返回ICMP time exceeded消息到主機(jī)后,再次發(fā)送TTL=3的請(qǐng)求

4)路徑不可達(dá),則會(huì)在cmd窗口打印* * *,然后將TTL+1,如下所示:

5)tracert發(fā)送的報(bào)文如果到達(dá)終點(diǎn),會(huì)向目的地地址發(fā)送ICMP請(qǐng)求回顯數(shù)據(jù)包,如下圖所示:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至2705686032@qq.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。原文轉(zhuǎn)載: 原文出處: