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用法
作為IT從業者,Ping測試這個命令想必是非常非常熟悉了!它是用于診斷網絡連通性最好用的工具,沒有之一!
Ping不通的情況時有發生,那么Ping不通時會結果回顯是什么呢?常見的有4種結果:
一、請求超時。
二、來自X.X.X.X的回復: 無法訪問目標主機。
三、PING:傳輸失敗。常見故障。
四、來自X.X.X.X的回復: TTL 傳輸中過期。
Ping失敗則回顯不同的結果,Windows不是隨便給一個結果的,而這些信息表示連通性異常均存在不同的故障原因!那么其背后的邏輯是什么呢?在特定的場景下,我們來一個一個的分析:
回顯1:請求超時。
此結果和ICMP回包有關,一定是PC封裝了ICMP request發出去了得不到結果才有這個提示,換句話說已經完成了網關設備或者目標設備的arp學習。
【局域網場景】
如圖,PC1 Ping測試目標是同一局域網、同網段的PC2設備不通出現該提示,表示:“已經學到了該PC2的ARP條目,但PC1的ICMP包沒有得到響應”,所以能明確知道對端是正常存在于網絡當中的,就不用再去管物理鏈路問題了!而PC1得不到響應ICMP的常見原因有:
【三層VLAN場景】
如圖,在規模較大的三層網絡架構下,若VLAN10的PC1 Ping的是VLAN20網段的PC2不通,表示:“PC1已經學習到了VLAN10網關的ARP條目,且網關(核心交換設備等)VLAN20也學到了PC2的ARP條目,但PC1沒收到響應ICMP包”,同理可以判斷該PC2也正常存在于網絡當中,物理網絡鏈路正常。但PC1得不到響應的ICMP包常見原因如下:
【訪問internet】
如圖,PC ping的是出口路由WAN側的internet站點(百度、QQ)等不通,則基本表示該internet站點禁ping。
回顯2:來自X.X.X.X的回復: 無法訪問目標主機。
此結果一定是和arp學習有關,要么是PC自身沒學到同網段設備的arp條目,要么是跨三層訪問時網關沒有學到另一VLAN中的目標設備arp條目返回給PC的錯誤報告。
【局域網場景】
如圖,PC1 Ping測試目標是同一局域網、同網段的PC2設備不通出現該提示,表示“PC1的網絡連接正常,但根本學不到PC2的ARP條目”,這就沒辦法去確認PC2的物理網絡是否正常了,可能故障原因有:
【跨VLAN場景】
如圖,在規模較大的三層網絡架構下,若VLAN10的PC1 Ping的是VLAN20網段的PC2不通,表示“要么是VLAN10的PC1沒有學到其網關的ARP條目,要么是網關VLAN20接口沒有學到PC2的ARP條目”,此時沒法確認PC2是否物理網絡正常,且也不能判斷其是否在VLAN20中,故障可能原因如下:
回顯3:PING:傳輸失敗。常見故障。
出現這個報錯是指網卡連ARP包都發不出去,百分百就是源電腦的網卡和網線問題!交換機、路由器等不用去排查了!原因如下:
回顯4:來自X.X.X.X的回復: TTL 傳輸中過期。
有些論壇分析此原因是經過了太多的路由(每經過一臺路由TTL減1)導致此問題。我覺得不對,Win10 ICMP包初始TTL=64,經測試即便是我訪問美國站點1.1.1.1,TTL也只減了10而已(鏈路一共經過了10臺路由),而要說從A—>B經過≥64臺路由我是完全不信的。
而出現這個“TTL傳輸中過期”的報錯呢,大概率是網絡中出現了“路由環路”導致,簡單來看個圖:
單播的三層報文,在網絡內來回路由轉發,循環往復,就形成了三層路由環路。用tracert命令跟蹤表現是這樣的:
直到TTL減到0單播環路才停止,基本就是交換網絡、路由網絡的配置相關問題了,此問題會造成網絡中“單播包泛洪”影響路由交換的性能。像上述而常見的“路由環路”問題可以通過三層交換機的“黑洞路由”配置解決,具體方法本期不做詳解。
最后總結一下: