ping和tracert命令
Ping簡介
Ping是基於ICMP協議實現的。通過從源端向目的端傳送ICMP回顯請求(Echo Request)報文後,根據是否收到目的端的ICMP回顯應答(Echo Reply)報文來判斷目的端是否可達。即源端在一個有效時間內(等待回顯應答報文超時時間之前)收到目的端返回的ICMP回顯應答報文,則說明目的端可達。如果在有效時間內,沒有收到應答報文,則說明目的端不可達。對於可達的目的端,根據傳送報文個數、接收到響應報文個數來判斷鏈路的質量,根據Ping報文的往返時間來判斷鏈路的質量。
ping命令格式
這裡只列舉了常用的引數,並對引數進行解釋說明。詳細的命令引數解釋和使用方法請參見相應版本“命令參考” 網路管理與監控命令-Ping和Tracert配置命令中的ping
ping [ ip ] [ -a source-ip-address | -c count | -f | -s packetsize | -t timeout ] *host
- -a:設定傳送ECHO-Request報文的源IP地址,如果不指定源IP地址,將採用出介面的IP地址作為ICMP ECHO-Request報文傳送的源地址。
- -c:設定傳送ECHO-Request報文的次數,預設為5。當網路質量不高時,可以增加發送報文數目,通過丟包率來檢測網路質量。
- -f:設定傳送的報文不分片,如果MTU值小於報文大小會丟棄該報文。
- -s:設定傳送ECHO-Request報文大小(不含IP和ICMP頭),預設報文長度是56位元組。
- -t:設定傳送完ECHO-Request後,等待ECHO-REPLY的超時時間。在網路狀況不好的情況下,可以適當改大該引數。預設為2s,即2s內沒有收到回覆報文即認為目的不可達。
- host:可以是IP地址或域名,如果是域名會首先進行DNS解析,並顯示解析後的IP地址。
可以配合-s和-f引數來探測中間鏈路最大的MTU(鏈路PMTU),如設定-s為1472可以通而1473不通,則該鏈路最大MTU為1500(1472+20IP頭+8ICMP頭)。
PC上的Ping功能與作業系統相關,這裡以Windows作業系統為例說明:
ping [ -n number ] [ -t ] [ -l number
- -n:Ping報文的個數,預設值為5。
- -t:持續地Ping直到人為中斷,Ctrl+Break暫時中止Ping命令並檢視當前的統計結果,而Ctrl+C則中斷命令的執行。
- -l:設定Ping報文所攜帶的資料部分的位元組數,設定範圍從0至65500。
- -f:設定傳送的報文不分片,如果MTU值小於報文大小會丟棄該報文。
- -a:反向解析IP地址為主機名。
- ip-address:設定Ping命令的目的IP地址。
ping資訊說明
<HUAWEI> ping 10.135.18.118 PING 10.135.18.118: 56 data bytes, press CTRL_C to break Reply from 10.135.18.118: bytes=56 Sequence=1 ttl=255 time=1 ms Reply from 10.135.18.118: bytes=56 Sequence=2 ttl=255 time=1 ms Reply from 10.135.18.118: bytes=56 Sequence=3 ttl=255 time=2 ms Reply from 10.135.18.118: bytes=56 Sequence=4 ttl=255 time=1 ms Reply from 10.135.18.118: bytes=56 Sequence=5 ttl=255 time=2 ms --- 10.135.18.118 ping statistics --- 5 packet(s) transmitted 5 packet(s) received 0.00% packet loss round-trip min/avg/max = 1/1/2 ms
ping命令的顯示資訊說明:
- 裝置發出了5個ping包,均收到了迴應。
- 發出的ping包的大小為預設的56位元組。
- ttl=255說明ping的目的裝置與發出ping報文的裝置直接相連。
- time=1ms說明報文迴應時間為1ms,該引數通常可以作為網路是否擁塞的參考。
預設情況下,ping命令傳送5個ping報文,建議使用-c引數進行多次ping,可以更準確反應當前網路的狀況。根據返回的ping報文個數,可以對網路狀況進行判斷。
故障現象 |
可能原因 |
---|---|
全部可達,但時間較長 |
|
全部不可達 |
|
部分可達 |
|
Tracert簡介
Ping可以告訴使用者目標是否可達,而Tracert命令用於測試資料報文從傳送主機到目的地所經過的閘道器,它主要檢查網路連線是否可達,以及分析網路什麼地方發生了故障。
圖1 Tracert工作流程圖Tracert也是基於ICMP協議來實現的,如圖1所示,Tracert的工作流程為:
- 源端(SwitchA)向目的端(日誌主機)傳送一個UDP報文,TTL值為1,目的UDP埠號是大於30000的一個數,因為在大多數情況下,大於30000的UDP埠號是任何一個應用程式都不可能使用的埠號。
- 第一跳(SwitchB)收到源端發出的UDP報文後,判斷出報文的目的IP地址不是本機IP地址,將TTL值減1後,判斷出TTL值等於0,則丟棄報文並向源端傳送一個ICMP超時(Time Exceeded)報文(該報文中含有第一跳的IP地址10.1.1.2),這樣源端就得到了SwitchB的地址。
- 源端收到SwitchB的ICMP超時報文後,再次向目的端傳送一個UDP報文,TTL值為2。
- 第二跳(SwitchC)收到源端發出的UDP報文後,迴應一個ICMP超時報文,這樣源端就得到了SwitchC的地址(10.1.2.2)。
- 以上過程不斷進行,直到目的端收到源端傳送的UDP報文後,判斷出目的IP地址是本機IP地址,則處理此報文。根據報文中的目的UDP埠號尋找佔用此埠號的上層協議,因目的端沒有應用程式使用該UDP埠號,則向源端返回一個ICMP埠不可達(Destination Unreachable)報文(該報文含有目的端的IP地址10.1.3.2)。
- 源端收到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 | -q nqueries | -w timeout ] *host
- -a:指明本次Tracert命令配置的報文源地址。如果不指定源地址,將採用出介面的IP地址作為Tracert報文傳送的源地址。
- -f:指定初始TTL。設定first-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地址。
PC上的Tracert功能與作業系統相關,這裡以Windows作業系統為例說明:
tracert [ -d ] [ -h maximum_hops ] [ -j host-list ] [ -w timeout ] host
- -d:不解析主機名。
- -h:指定最大TTL的數值。
- -j:設定鬆散源地址路由列表。
- -w:用於設定UDP報文的超時時間,單位為毫秒。
- host:指定目的主機的域名或IP地址。
tracert資訊說明
<HUAWEI> tracert 10.135.18.118 traceroute to 10.135.18.118(10.135.18.118), max hops: 30 ,packet length: 40,press CTRL_C to break 1 192.168.200.100 10 ms 2 ms 2 ms 2 * * * 3 10.135.18.118 10 ms 1 ms 2 ms
顯示資訊每行包含編號、到達的裝置IP地址、3次報文的響應時間。中間部分顯示為“* * *”,說明該節點裝置配置不允許Ping和Tracert。
當網路上出現路由環路時,使用ping命令只能知道接收端出現超時錯誤,而tracert命令能夠很容易發現路由環路等潛在問題。在Tracert某地址時,多次出現相同的地址,即可認為出現了路由環路。
備註:以上內容摘自華為文件