網絡實用命令——traceroute/tracert


  或許大家都用過ping命令了,可以用它來測試兩個網絡之間是否連通,比如測試本機到百度:

 

   ok,沒問題,但今天我想給給大家講講網絡中常用的另一個命令:linux下的traceroute命令,對應於windows下的tracert命令,即路由追蹤;在了解其原理之前,先帶大家了解幾個網絡技術名稱:

    

  • IP協議

    IP協議是TCP/IP協議族中最核心的部分,它的作用是在兩台主機之間傳輸數據,所有上層協議的數據(HTTP、TCP、UDP等)都會被封裝在一個個的IP數據包中被發送到網絡上。

  • ICMP
    ICMP全稱為互聯網控制報文協議,它常用於傳遞錯誤信息,ICMP協議是IP層的一部分,它的報文也是通過IP數據包來傳輸的。

  • TTL
    TTL(time-to-live)是IP數據包中的一個字段,它指定了數據包最多能經過幾次路由器。從我們源主機發出去的數據包在到達目的主機的路上要經過許多個路由器的轉發,在發送數據包的時候源主機會設置一個TTL的值,每經過一個路由器TTL就會被減去一,當TTL為0的時候該數據包會被直接丟棄(不再繼續轉發),並發送一個超時ICMP報文給源主機

  首先在ubuntu下使用traceroute跟蹤百度:

 

   嗯,好嘛,只走了一跳后面都超時了,考慮到是使用虛擬機的原因,后面我們將在windows下使用tracert命令並結合非常好用的Wireshark抓包軟件測試分析,如下圖:

命令執行結果的說明:

1:tracert命令用於確定 IP數據包訪問目標所采取的路徑,顯示從本地到目標網站所在網絡服務器的一系列網絡節點的訪問速度,最多支持顯示30個網絡節點。

2:最左側的,1,2,3,4~8,表明在我使用的寬帶上,經過15(不算自己本地的)個路由節點,可以到達百度的服務;

3:中間的三列,單位是ms,表示我們連接到每個路由節點的速度,返回速度和多次鏈接反饋的平均值;

4:后面的IP,就是每個路由節點對應的IP;

5:如果返回消息是超時,則表示這個路由節點和當前我們使用的寬帶,是無法聯通的,至於原因,就有很多種了,比如:特意在路由上做了過濾限制,或者確實是路由的問題等,需要具體問題具體分析;

6:如果在測試的時候,大量的都是*和返回超時,則就說明這個IP,在各個路由節點都有問題

7:一般10個節點以內可以完成跟蹤的網站,訪問速度都是不錯的;10到15個節點之內才完成跟蹤的網站,訪問速度則比較差,如果超過30個節點都沒有完成跟蹤的網站,則可以認為目標網站是無法訪問的。

8:在Linux平台上,traceroute 命令就相當於windows平台上的 tracert 命令

 

使用wireshark抓包:

 

 

  可以結合tracert和wireshark截圖看到,默認情況下,tracert會追蹤最多30個躍點追蹤到目的地址,每次追蹤會發送三個icmp報文,第一次設置TTL為1,后面每次增加1,直到追蹤到目的地址;tracert命令是基於ICMP協議實現的,即直接發送一個ICMP回顯請求(echo request)數據包,服務器在收到回顯請求的時候會向客戶端發送一個ICMP回顯應答(echo reply)數據包,實現流程如下:

 

 基於ICMP實現的tracert

  tracert跟蹤路由時,每當TTL減為0時,路由就會往源主機發送一個ICMP超時報文,當到達目的主機時,目的主機回向源主機發送一個ICMP回顯應答(echo reply)數據包,並將TTL設為較大的默認值,防止包丟失;通過tracert命令我們可以知道ip分組到達目的主機經過了哪些路由器,以及經過每一跳的網絡延遲,是一個實用的網絡診斷命令。

  

  當然tracert還有其他的一些選項,如下圖:

  好了,tracert命令主要的作用就是這樣了,剩下的一些選項,有興趣的小伙伴可以自己在電腦上試試,或許收獲更多呢。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM