快速排除故障命令除了 ping 還有 tracert
公眾號(hào)關(guān)注“杰哥的IT之旅”,
選擇“星標(biāo)”,重磅干貨,第一時(shí)間送達(dá)!

來源:網(wǎng)絡(luò)技術(shù)平臺(tái)
Tracert簡介
Tracert是測試報(bào)文從發(fā)送端到目的地所經(jīng)過的路由的方法。它能夠直觀展現(xiàn)報(bào)文在轉(zhuǎn)發(fā)的時(shí)候所經(jīng)過的路徑。
Tracert基于ICMP協(xié)議來實(shí)現(xiàn)的。當(dāng)網(wǎng)絡(luò)出現(xiàn)故障時(shí),用戶可以使用Tracert確定出現(xiàn)故障的網(wǎng)絡(luò)節(jié)點(diǎn)。
Tracert實(shí)現(xiàn)過程

Tracert的實(shí)現(xiàn)如上圖1所示,Tracert的工作流程為:
(1)源端(SwitchA)向目的端(日志主機(jī))發(fā)送一個(gè)UDP報(bào)文,TTL值為1,目的UDP端口號(hào)是大于30000的一個(gè)數(shù),因?yàn)樵诖蠖鄶?shù)情況下,大于30000的UDP端口號(hào)是任何一個(gè)應(yīng)用程序都不可能使用的端口號(hào)。
(2)第一跳(SwitchB)收到源端發(fā)出的UDP報(bào)文后,判斷出報(bào)文的目的IP地址不是本機(jī)IP地址,將TTL值減1后,判斷出TTL值等于0,則丟棄報(bào)文并向源端發(fā)送一個(gè)ICMP超時(shí)(TimeExceeded)報(bào)文(該報(bào)文中含有第一跳的IP地址10.1.1.2),這樣源端就得到了SwitchB的地址。
(3)源端收到SwitchB的ICMP超時(shí)報(bào)文后,再次向目的端發(fā)送一個(gè)UDP報(bào)文,TTL值為2。
(4)第二跳(SwitchC)收到源端發(fā)出的UDP報(bào)文后,回應(yīng)一個(gè)ICMP超時(shí)報(bào)文,這樣源端就得到了SwitchC的地址(10.1.2.2)。
(5)以上過程不斷進(jìn)行,直到目的端收到源端發(fā)送的UDP報(bào)文后,判斷出目的IP地址是本機(jī)IP地址,則處理此報(bào)文。根據(jù)報(bào)文中的目的UDP端口號(hào)尋找占用此端口號(hào)的上層協(xié)議,因目的端沒有應(yīng)用程序使用該UDP端口號(hào),則向源端返回一個(gè)ICMP端口不可達(dá)(DestinationUnreachable)報(bào)文(該報(bào)文含有目的端的IP地址10.1.3.2)。
(6)源端收到ICMP端口不可達(dá)報(bào)文后,判斷出UDP報(bào)文已經(jīng)到達(dá)目的端,則停止Tracert程序,從而得到數(shù)據(jù)報(bào)文從源端到目的端所經(jīng)歷的路徑(10.1.1.2;10.1.2.2;10.1.3.2)。
華為設(shè)備支持的Tracert命令
華為設(shè)備《命令參考》手冊(cè)提供了詳細(xì)的命令參數(shù)和使用方法。這里只列舉了常用的參數(shù),并對(duì)參數(shù)進(jìn)行解釋說明。
tracert[ -a source-ip-address | -f first-ttl | -m max-ttl | -p port | -qnqueries | -vpn-instance vpn-instance-name | -w timeout ] *host
-a:指定報(bào)文的源地址。如果不指定源地址,將采用出接口的IP地址作為Tracert報(bào)文發(fā)送的源地址。
-f:指定初始TTL。當(dāng)經(jīng)過的跳數(shù)小于此參數(shù)值,由于TTL字段的值大于0,經(jīng)過的這幾個(gè)節(jié)點(diǎn)不會(huì)返回ICMP超時(shí)報(bào)文給源主機(jī)。如果已經(jīng)設(shè)置了max-ttl參數(shù)值,first-ttl的取值必須小于max-ttl。
-m:指定最大TTL。通常情況下,max-ttl的值被設(shè)置為經(jīng)過站點(diǎn)的跳數(shù)。如果已經(jīng)設(shè)置了first-ttl參數(shù)值,max-ttl的取值必須大于first-ttl。缺省情況下,最大TTL為30。
-p:指定目的主機(jī)的UDP端口號(hào)。如果不指定目的主機(jī)的UDP端口號(hào),Tracert命令使用大于32768的隨機(jī)的端口作為目標(biāo)設(shè)備的接收?qǐng)?bào)文端口。如果指定目的UDP端口號(hào),需要避免采用對(duì)端已經(jīng)開啟的端口號(hào),否則會(huì)導(dǎo)致Tracert失敗。
-q:指定每次發(fā)送的UDP探測數(shù)據(jù)報(bào)文的個(gè)數(shù)。當(dāng)網(wǎng)絡(luò)質(zhì)量不高時(shí),可以增加發(fā)送探測數(shù)據(jù)報(bào)文的數(shù)目,保證探測報(bào)文能夠到達(dá)目的節(jié)點(diǎn)。缺省情況下,每次發(fā)送三個(gè)UDP探測數(shù)據(jù)報(bào)文。
-w:等待響應(yīng)報(bào)文的超時(shí)時(shí)間。當(dāng)發(fā)送數(shù)據(jù)報(bào)文到達(dá)某網(wǎng)關(guān)超時(shí),則輸出“* ”。如果網(wǎng)絡(luò)質(zhì)量不高且速度很慢,建議增加發(fā)送數(shù)據(jù)報(bào)文的超時(shí)時(shí)間。缺省超時(shí)時(shí)間為5000毫秒。
host:可以是IP地址或域名,如果是域名會(huì)首先進(jìn)行DNS解析,并顯示解析后的IP地址。
電腦支持的Tracert命令
電腦上的Tracert功能與操作系統(tǒng)相關(guān),這里以Windows操作系統(tǒng)為例。這里只列舉了常用的參數(shù),并對(duì)參數(shù)進(jìn)行解釋說明。
tracert[ -d | -h maximum_hops | -j host-list | -w timeout ] *host
-d:不解析主機(jī)名。
-h:指定最大TTL的數(shù)值。
-j:設(shè)定松散源地址路由列表。
-w:用于設(shè)置UDP報(bào)文的超時(shí)時(shí)間,單位為毫秒。
host:指定目的主機(jī)的域名或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
推薦閱讀
網(wǎng)絡(luò)故障排除工具 | 快速定位網(wǎng)絡(luò)故障

