Tracert簡介
Tracert是測試封包從發送端到目的地所經過的路由的方法。它能夠直覺展現封包在轉發的時候所經過的路徑。
Tracert基于ICMP協定來實作的。當網絡出現故障時,使用者可以使用Tracert确定出現故障的網絡節點。
Tracert實作 過程
Tracert的實作如上圖1所示,Tracert的工作流程為:
(1)源端(SwitchA)向目的端(日志主機)發送一個UDP封包,TTL值為1,目的UDP端口号是大于30000的一個數,因為在大多數情況下,大于30000的UDP端口号是任何一個應用程式都不可能使用的端口号。
(2)第一跳(SwitchB)收到源端發出的UDP封包後,判斷出封包的目的IP位址不是本機IP位址,将TTL值減1後,判斷出TTL值等于0,則丢棄封包并向源端發送一個ICMP逾時(TimeExceeded)封包(該封包中含有第一跳的IP位址10.1.1.2),這樣源端就得到了SwitchB的位址。
(3)源端收到SwitchB的ICMP逾時封包後,再次向目的端發送一個UDP封包,TTL值為2。
(4)第二跳(SwitchC)收到源端發出的UDP封包後,回應一個ICMP逾時封包,這樣源端就得到了SwitchC的位址(10.1.2.2)。
(5)以上過程不斷進行,直到目的端收到源端發送的UDP封包後,判斷出目的IP位址是本機IP位址,則處理此封包。根據封包中的目的UDP端口号尋找占用此端口号的上層協定,因目的端沒有應用程式使用該UDP端口号,則向源端傳回一個ICMP端口不可達(DestinationUnreachable)封包(該封包含有目的端的IP位址10.1.3.2)。
(6)源端收到ICMP端口不可達封包後,判斷出UDP封包已經到達目的端,則停止Tracert程式,進而得到資料封包從源端到目的端所經曆的路徑(10.1.1.2;10.1.2.2;10.1.3.2)。
華為裝置支援的Tracert指令
華為裝置《指令參考》手冊提供了詳細的指令參數和使用方法。這裡隻列舉了常用的參數,并對參數進行解釋說明。
tracert[ -a source-ip-address | -f first-ttl | -m max-ttl | -p port | -qnqueries | -vpn-instance vpn-instance-name | -w timeout ] *host
-a:指定封包的源位址。如果不指定源位址,将采用出接口的IP位址作為Tracert封包發送的源位址。
-f:指定初始TTL。當經過的跳數小于此參數值,由于TTL字段的值大于0,經過的這幾個節點不會傳回ICMP逾時封包給源主機。如果已經設定了max-ttl參數值,first-ttl的取值必須小于max-ttl。
-m:指定最大TTL。通常情況下,max-ttl的值被設定為經過站點的跳數。如果已經設定了first-ttl參數值,max-ttl的取值必須大于first-ttl。預設情況下,最大TTL為30。
-p:指定目的主機的UDP端口号。如果不指定目的主機的UDP端口号,Tracert指令使用大于32768的随機的端口作為目标裝置的接收封包端口。如果指定目的UDP端口号,需要避免采用對端已經開啟的端口号,否則會導緻Tracert失敗。
-q:指定每次發送的UDP探測資料封包的個數。當網絡品質不高時,可以增加發送探測資料封包的數目,保證探測封包能夠到達目的節點。預設情況下,每次發送三個UDP探測資料封包。
-w:等待響應封包的逾時時間。當發送資料封包到達某網關逾時,則輸出“* ”。如果網絡品質不高且速度很慢,建議增加發送資料封包的逾時時間。預設逾時時間為5000毫秒。
host:可以是IP位址或域名,如果是域名會首先進行DNS解析,并顯示解析後的IP位址。
電腦支援的Tracert指令
電腦上的Tracert功能與作業系統相關,這裡以Windows作業系統為例。這裡隻列舉了常用的參數,并對參數進行解釋說明。
tracert[ -d | -h maximum_hops | -j host-list | -w timeout ] *host
-d:不解析主機名。
-h:指定最大TTL的數值。
-j:設定松散源位址路由清單。
-w:用于設定UDP封包的逾時時間,機關為毫秒。
host:指定目的主機的域名或IP位址。
Tracert示例
<SwitchA>tracert 10.26.0.115
traceroute to10.26.0.115(10.26.0.115), max hops: 30 ,packet length: 40,pressCTRL_C to break
1 10.3.112.1 10 ms 10 ms 10 ms
2 10.32.216.1 19 ms 19 ms 19 ms
4 10.32.136.2319 ms 39 ms 39 ms
5 * * *
6 * * *
7 * * *
8 10.26.0.115 69 ms 79 ms 79 ms