思科路由器實(shí)用程序Tracert命令
思科路由器實(shí)用程序Tracert命令
思科依靠自身的技術(shù)和對(duì)網(wǎng)絡(luò)經(jīng)濟(jì)模式的深刻理解,使其成為了網(wǎng)絡(luò)應(yīng)用的成功實(shí)踐者之一,其出產(chǎn)的路由器設(shè)備也是世界一流,那么你知道思科路由器實(shí)用程序Tracert命令嗎?下面是學(xué)習(xí)啦小編整理的一些關(guān)于思科路由器實(shí)用程序Tracert命令的相關(guān)資料,供你參考。
思科路由器實(shí)用程序Tracert命令相關(guān)知識(shí):
Tracert命令作為一個(gè)路由跟蹤、診斷實(shí)用程序,在DOS和Unix系統(tǒng)下都有此命令,它通過(guò)發(fā)送Internet控制消息協(xié)議 (ICMP) 回顯請(qǐng)求和回顯答復(fù)消息,產(chǎn)生關(guān)于經(jīng)過(guò)每個(gè)路由器的命令行報(bào)告輸出,從而跟蹤路徑。該程序是網(wǎng)管必備的TCP/IP工具之一,經(jīng)常被用于測(cè)試網(wǎng)絡(luò)的連通性,確定故障位置。因此,我們有必要通過(guò)對(duì)Tracert路由跟蹤數(shù)據(jù)包的精確解析,完整了解Tracert命令的運(yùn)行過(guò)程。
數(shù)據(jù)包的捕獲
1.網(wǎng)絡(luò)環(huán)境如圖1所示。
2.捕獲工具Sniffer pro過(guò)濾器設(shè)置步驟:
我們知道Tracert命令是ICMP協(xié)議實(shí)現(xiàn)原理的具體應(yīng)用,因此要捕獲Tracert運(yùn)行后產(chǎn)生的數(shù)據(jù)包,只須設(shè)置過(guò)濾器捕獲ICMP流量即可,過(guò)濾器如圖2所示。
(1) 選擇“Capture”—— “Define Filter”。
(2) 選擇“Profiles”,在Captuer Profiles窗口中選擇“New”
(3) 選擇ICMP作為文件的名字。因?yàn)镾niffer pro已經(jīng)有一個(gè)只過(guò)濾ICMP的文件,所以你可以選擇“Copy Sample Profile”, 選擇IP/ICMP,點(diǎn)擊OK。
(4) 當(dāng)然你還需要在Define Filter窗口中定義“address”,捕獲本機(jī)與任何主機(jī)的ICMP流量。
3.運(yùn)行Sniffer Pro,點(diǎn)擊F10鍵開(kāi)始捕獲過(guò)程,在本機(jī)打開(kāi)一個(gè)CMD窗口,發(fā)送TRACERT -d 10.4.153.165(使用帶有-d選項(xiàng)的 tracert命令時(shí),TRACERT將不會(huì)對(duì)每個(gè)IP地址執(zhí)行 DNS查找。如圖3所示),命令運(yùn)行結(jié)束后,按F9停止捕獲,選擇“Decode”,顯示捕獲的數(shù)據(jù)包,如圖4所示。
數(shù)據(jù)包解析
從捕獲的數(shù)據(jù)報(bào),我們可以看到Tracert命令是如何使用IP生存時(shí)間(TTL)字段和ICMP錯(cuò)誤消息,確定一個(gè)主機(jī)到網(wǎng)絡(luò)上其他主機(jī)的路由。IP包頭的TTL(Time to Live)字段,是由發(fā)送端初始設(shè)置的一個(gè)8bit字段,它指出數(shù)據(jù)包的有效時(shí)間,即生存周期。每個(gè)處理數(shù)據(jù)報(bào)的路由器都需要把TTL值減1或減去數(shù)據(jù)報(bào)在路由器中的停留秒數(shù)。由于大多數(shù)的路由器轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)的時(shí)延都小于1秒鐘,因此TTL最終成為一個(gè)跳站的計(jì)數(shù)器,按照ICMP協(xié)議的有關(guān)規(guī)定,當(dāng)路由器收到一份數(shù)據(jù)報(bào),如果其TTL字段是0或1,則路由器丟棄該數(shù)據(jù)報(bào),并給源主機(jī)發(fā)送一份ICMP“超時(shí)”信息。Tracert命令正是據(jù)此發(fā)現(xiàn)路由器、確定路由的。
下面我們來(lái)對(duì)數(shù)據(jù)包逐幀解析,體會(huì)Tracert命令的工作過(guò)程。
幀1:主機(jī)A(10.4.152.16)向主機(jī)B(10.4.153.165)發(fā)送一個(gè)信息類型為8,代碼為0的ECHO請(qǐng)求包。IP包頭的TTL值為1,如圖5所示。
幀2:由于目的主機(jī)在另一個(gè)網(wǎng)段,因此數(shù)據(jù)包被發(fā)往本地網(wǎng)關(guān)路由器A(10.4.152.254),路由器A收到主機(jī)A發(fā)來(lái)的的ECHO請(qǐng)求包后,返回了一個(gè)一個(gè)類型為11,代碼為0的ICMP包?;貜?fù)“超時(shí)”(Time to live exceeded in transit),如圖6所示。
從這兩幀我們可以看到, 主機(jī)A首先發(fā)送TTL為1的回顯數(shù)據(jù)包,路徑上第一個(gè)路由器A(10.4.152.254)在轉(zhuǎn)發(fā)數(shù)據(jù)包之前將數(shù)據(jù)包上的TTL遞減 1,當(dāng)數(shù)據(jù)包上的TTL減為0時(shí),路由器丟棄該數(shù)據(jù)包,并將“ICMP Time Exceeded”(超時(shí))的消息發(fā)回源主機(jī)A,由此,發(fā)現(xiàn)路徑上的第一個(gè)路由器。
主機(jī)A為了獲得往返延遲時(shí)間的信息,在這一跳發(fā)送了三個(gè)TTL都為1、長(zhǎng)度、目標(biāo)地址相同的報(bào)文(幀1、幀3、幀5),路由器A依次丟棄這三個(gè)報(bào)文,并向主機(jī)A發(fā)送“超時(shí)”消息(幀2、幀4、幀6)。
幀7:主機(jī)A(10.4.152.16)向目標(biāo)主機(jī)B(10.4.153.165)發(fā)送TTL值為2的回顯數(shù)據(jù)包。
幀8:路由器B(10.4.147.82)路由器B向源主機(jī)(主機(jī)A)發(fā)送一個(gè)“ICMP Time Exceeded(超時(shí))”數(shù)據(jù)包。
我們看到,Tracert命令將 TTL 遞增1,主機(jī)A發(fā)送TTL值為2的回顯數(shù)據(jù)包,數(shù)據(jù)報(bào)由路由器A轉(zhuǎn)發(fā)至路由器B,由于該數(shù)據(jù)報(bào)的TTL值在第一跳時(shí)被減去了1,因此在到達(dá)路由器B后,TTL值為0。路由器B丟棄該數(shù)據(jù)包,并向主機(jī)A返回“ICMP Time Exceeded(超時(shí))”的報(bào)文,從而獲得路徑上的第二個(gè)路由器信息。同樣主機(jī)A在這里也發(fā)送了相同TTL值的3個(gè)報(bào)文,以獲得平均往返的延遲時(shí)間信息。
幀13 、幀15、幀17:主機(jī)A(10.4.152.16) 發(fā)送TTL值為3的3個(gè)回顯數(shù)據(jù)包。
幀14 、幀16、幀18:主機(jī)B(10.4.153.165)回復(fù)類型為0,代碼為0的3個(gè)ECHO包。
至此,由于主機(jī)A發(fā)出的數(shù)據(jù)包TTL值為3,發(fā)出的數(shù)據(jù)包經(jīng)過(guò)兩次轉(zhuǎn)發(fā)后,到達(dá)目的主機(jī)B,主機(jī)B返回ECHO應(yīng)答包,至此實(shí)現(xiàn)主機(jī)A至主機(jī)B的路由跟蹤。
通過(guò)以上對(duì)數(shù)據(jù)報(bào)的解析,我們看到Tracert命令通過(guò)控制IP報(bào)文的生存期(TTL),實(shí)現(xiàn)路由跟蹤提供路由器到目的地址的每一跳的信息。TTL等于1的ICMP回顯請(qǐng)求報(bào)文被首先發(fā)送,路徑上的第一個(gè)路由器將會(huì)丟棄該報(bào)文并且發(fā)送回ICMP超時(shí)錯(cuò)誤消息的報(bào)文。隨后,Tracert命令的每次發(fā)送過(guò)程都將 TTL遞增1,通過(guò)檢查中間路由器發(fā)送回的“ICMP Time Exceeded”消息來(lái)確定路由。這個(gè)過(guò)程將持續(xù)到目標(biāo)響應(yīng)或TTL達(dá)到最大值,從而最終確定故障點(diǎn)或完整的路由路徑。