1.實驗環境
1.win10
2.tracert
2.tracert (Traceroute )原理
ICMP報文類型
Traceroute 是 ICMP 的一個應用,用來跟蹤一個分組從源主機到目標主機的路徑。 Traceroute 發送的 IP 數據報封裝的是無法交付的 UDP 用戶數據報,并由目的主機發送終點不可達差錯報告報文。
1. 源主機向目的主機發送一連串的 IP 數據報。
2. 第一個數據報 P1 的生存時間 TTL 設置為 1,當 P1 到達路徑上的第一個路由器 R1 時,R1 收下它并把 TTL 減 1,此時 TTL 等于 0,R1 就把 P1 丟棄,并向源主機發送一個 ICMP 時間超過差錯報告報文;
3. 源主機接著發送第二個數據報 P2,并把 TTL 設置為 2。P2 先到達 R1,R1 收下后把 TTL 減 1 再轉發給 R2,R2 收下后也把 TTL 減 1,由于此時 TTL 等于 0,R2 就丟棄 P2,并向源主機發送一個 ICMP 時間超過差錯報文。
4. 重復以上操作... ...
5. 直到最后一個數據報剛剛到達目的主機,主機不轉發數據報,也不把 TTL 值減 1。由于數據報封裝的是無法交付的 UDP,因此目的主機要向源主機發送 ICMP 終點不可達差錯報告報文。
6. 綜上所述,可以得到源主機到達目的主機所經過的路由器 IP 地址以及到達每個路由器的往返時間。
3.執行效果
打開終端>>執行命令
注意:想追蹤哪個,請隨意
tracert baidu.com
tracert用法
tracert也被稱為Windows路由跟蹤實用程序,在命令提示符(cmd)中使用tracert命令可以用于確定IP數據包訪問目標時所選擇的路徑。這個命令在網絡中使用的比較多,尤其是在排除網絡故障這塊,本文主要探討了tracert命令的各個功能。現在網絡四通八達,網線光纖基站衛星,只要運營商能收費的地方,就有網絡,覆蓋了全世界所有的區域。徹底改變了以前通訊基本靠吼的情況。那么寬廣的網絡世界,超過100米就得需要中繼放大信號的網線,即使現在的光纖線纜距離也是有限。全世界那么大,有沒有統計過,在有限的IPV4里,全球有多少的路由器,沒有答案。
一、tracert命令基礎詳解
1、進入Windows命令提示符程序。
Win7系統直接在開始菜單下方的輸入框中輸入"cmd"或"命令提示符"就可以進入了。XP系統需要在開始菜單中找到運行(或按下快捷鍵R),在運行對話框中輸入cmd,然后單擊"確定"按鈕。
2、在命令行中輸入"tracert "并在后面加入一個IP地址,可以查詢從本機到該IP地址所在的電腦要經過的路由器及其IP地址。下圖中后面的IP地址為同一個路由器下的局域網中的另一個電腦的IP地址。
3、從左到右的5條信息分別代表了"生存時間"(每途經一個路由器結點自增1)、"三次發送的ICMP包返回時間"(共計3個,單位為毫秒ms)和"途經路由器的IP地址"(如果有主機名,還會包含主機名)。
4、也可以輸入"tracert "后面接一個網址,DNS解析會自動將其轉換為IP地址并探查出途經的路由器信息。如這回在后面輸入了百度經驗的URL地址,可以發現共查詢到10條信息,其中帶有星號(*)的信息表示該次ICMP包返回時間超時。
5、如果在"tracert"命令后添加一個不存在的IP地址,tracert程序則會報錯。如下圖所示。
6、在"tracert"命令與IP地址或URL地址中間輸入"-d",可以不將IP地址解析到主機名稱。從下圖可以看出,添加了"-d"后將不顯示出"PC-helei"字樣,即不顯示主機名稱。
7、在"tracert"命令與IP地址或URL地址中間輸入"-h",并在之后添加一個數字,可以指定本次tracert程序搜索的最大跳數。如下圖中加入" -h 5 "后,搜索只在路由器間跳轉5次,就無條件結束了。
8、在"tracert"命令與IP地址或URL地址中間輸入"-w",并在之后添加一個數字,可以指定tracert為每次回復所指定的毫秒數。
9、另外,tracert中還有如"-j"、"-r"、"-s"、"-4"、"-6"等命令,其用法都可以在命令行中輸入命令"tracert"直接查到,這里就不一一贅述了。
二、Tracert命令使用案例
那我們訪問一個網站的時候,從手下的主機到底經過了多少個路由器?才能達到目的地服務器。
Windows有個網絡命令可以實現,它就是Tracert。
Tracert(跟蹤路由)是路由跟蹤實用程序,用于確定 IP 數據包訪問目標所采取的路徑。Tracert 命令用 IP 生存時間 (TTL) 字段和 ICMP 錯誤消息來確定從一個主機到網絡上其他主機的路由。
Tracert命令對于了解包括解決大型網絡非常使用,它能摸索所處大型局域網里網絡拓撲架構,除了一些禁止ping的路由器(一般出口路由器或者防火墻上)。
Tracert命令功能同Ping類似,但它所獲得的信息要比Ping命令詳細得多,它把數據包所走的全部路徑、節點的IP以及花費的時間都顯示出來。該命令比較適用于大型網絡。
Tracert 先發送 TTL 為 1 的回應數據包,當數據包上的 TTL在路由器收到后TTL自動減1 ,一旦某個服務器將TTL減1后,等于了0,路由器應該將"ICMP Time Exceeded"的消息發回源計算機,源計算機就根據收到的信息判斷達到的路由器和所用時間。下次再次發送數據包時,將TTL遞增 1,繼續上述測試,直到目標響應或 TTL 達到最大值,從而確定路由。通過檢查中間路由器發回的"ICMP 已超時"的消息確定路由。某些路由器不經詢問直接丟棄 TTL過期的數據包,這在 Tracert 實用程序中看不到,我們會顯示請求超時的請求信息。
使用ping命令測試www.qq.com服務器設置的TTL初始值為52,如下圖
下圖所示,我們測試到www.qq.com的路經過了16道路由,結合上圖ping命令結果,得知小編在ping www.qq.com時候得到TTL=52。又由下圖得知經過16道路由后到達我們客戶機,52+16=68,說明www.qq.com設置的TTL初始值為68。下圖中請求超時的反饋信息是因為路由器對ping命令做了處理,關閉了ping的響應,所以我們收不到發給他的反饋信息。
總結
Tracert命令適合大型網絡,能測算出當前主機到目的主機之間經過了多少個路由,并詳細記錄所經過所有路由的地址。