本產品的文件集力求使用無偏見用語。針對本文件集的目的,無偏見係定義為未根據年齡、身心障礙、性別、種族身分、民族身分、性別傾向、社會經濟地位及交織性表示歧視的用語。由於本產品軟體使用者介面中硬式編碼的語言、根據 RFP 文件使用的語言,或引用第三方產品的語言,因此本文件中可能會出現例外狀況。深入瞭解思科如何使用包容性用語。
思科已使用電腦和人工技術翻譯本文件,讓全世界的使用者能夠以自己的語言理解支援內容。請注意,即使是最佳機器翻譯,也不如專業譯者翻譯的內容準確。Cisco Systems, Inc. 對這些翻譯的準確度概不負責,並建議一律查看原始英文文件(提供連結)。
本檔案將說明命令 traceroute
在不同系統上的運作方式。
本文檔的讀者必須具備以下作業系統之一的基本知識:
Cisco IOS® 軟體
Linux
Microsoft Windows
本檔案中的資訊適用於以下軟體和硬體版本:
執行Cisco IOS軟體版本12的Cisco路由器
運行Red Hat Linux的PC
運行MS Windows的PC
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
如需文件慣例的詳細資訊,請參閱思科技術提示慣例。
traceroute
命令可讓您通過返回封包已遍歷的躍點序列,判斷封包從指定來源到達目的地所行經的路徑。該實用程式隨主機作業系統(例如,Linux或Microsoft(MS)Windows)以及Cisco IOS軟體一起提供。
如果在來源裝置(例如主機或充當主機的路由器)上執行 traceroute ip-address
,則會使用生存時間(TTL)值向目的地傳送IP封包,此值的增量不超過指定的最大躍點數。預設情況下為30。通常,通往目的地的路徑中的每個路由器在轉發這些資料包時都會將TTL欄位減少一個單位。當路徑中間的路由器找到TTL = 1的資料包時,它會以網際網路控制訊息通訊協定(ICMP)「超過時間」訊息回應來源。此訊息讓來源知道封包作為一個躍點會經過該特定路由器
在本檔案討論的各種操作系統 traceroute
中,執行命令的方式有一些不同。
初始使用者資料包通訊協定(UDP)資料包探針的TTL設定為1(或最小TTL),由使用者在延伸命令中 traceroute
指定。初始資料包探測的目標UDP埠設定為33434(或者按照擴展命令輸出中 traceroute
的指定)。 extended traceroute
命令是普通 traceroute
traceroute
命令的一個變體,它允許修改操作所使用的引數(如TTL和目標埠號)的預設值。有關如何使用擴展命令的 traceroute
詳細資訊,請參閱瞭解擴展ping和擴展traceroute命令。初始資料包探頭的源UDP埠是隨機的,具有邏輯運算子OR(使用0x8000)(確保最小源埠為0x8000)。 以下步驟說明啟動UDP資料包時發生的情況:
附註:引數是可配置的。此示例從n = 1開始,然後以n = 3結束。
使用TTL = 1、目標UDP埠= 33434和源埠隨機傳送UDP資料包。
UDP目標埠遞增,源UDP埠隨機化,然後傳送第二個資料包。
最多對三個探測器重複步驟2(或者在擴展命令輸出中請求的 traceroute
次數)。 對於傳送的每個探測器,您都會收到「TTL超出」消息,該消息用於構建通往目標主機的逐步路徑。
如果收到ICMP超出時間訊息,TTL會遞增,且該週期會以遞增目的地連線埠號碼重複。您還可以收到以下其中一條消息:
ICMP型別3,代碼3(目的地無法連線,連線埠無法連線)訊息,表示已到達主機。
主機無法連線、網路無法連線、超過最大TTL或訊息的超時型別,這表示已重新傳送探測。
Cisco路由器使用隨機源埠和增量目標埠傳送UDP探測資料包(以區分不同的探測)。 Cisco路由器將ICMP訊息超出時間傳回收到該UDP/ICMP封包的來源。
Linux命令 traceroute
與Cisco路由器實施類似。但是,它使用固定的源埠。命令 -n
中的選 traceroute
項用於避免對名稱伺服器的請求。
MS Windows命令使tracert
用ICMP回應請求資料包而不是UDP資料包作為探測。ICMP回應請求通過遞增TTL啟動,並且執行與Cisco IOS和Linux中所述的相同操作。使用ICMP回應請求資料包的意義在於,最終躍點不依賴於來自目的地主機的ICMP無法到達訊息的回應。而是依靠ICMP回應回複訊息。
指令語法為:
tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name
下表說明命令引數:
參數 | 說明 |
---|---|
-d | 指定不將地址解析為電腦名。 |
-h maximum_hops | 指定要搜尋目標的最大跳數。 |
-j computer-list | 指定沿電腦清單的鬆散源路由。 |
-w超時 | 等待超時為每個回覆指定的毫秒數。 |
target_name | 目標電腦的名稱。 |
在Cisco路由器中,ICMP不可達專案限製為每500毫秒一個封包(作為拒絕服務(DoS)攻擊的防護)。自Cisco IOS軟體版本12.1和更新版本起,此速率值可設定。引入的命令如下:
Router(config)#ip icmp rate-limit unreachable ? <1-4294967295> Once per milliseconds DF code 4, fragmentation needed and DF set
此限制適用於所有ICMP無法到達的聚合速率,如以下輸出所示。如需詳細資訊,請參閱RFC 792。
type = 3, code 0 = net unreachable; 1 = host unreachable; 2 = protocol unreachable; 3 = port unreachable; 4 = fragmentation needed and DF set; 5 = source route failed.
此限制不會影響其他資料包,如ICMP回應請求或ICMP超出時間消息。
以下為網路拓撲的範例:
在三個示例的每個示例中,使用不同的裝置A。從裝置A traceroute 10.1.4.2
,該命令被執行到裝置7C。
在每個示例中,該命令 debug ip packet detail
在Device 11A上運行。
此延伸命 traceroute
令範例顯示從Cisco路由器執行命令時 traceroute
,您可以變更的選項。在此範例中,所有內容均保留為預設值:
rp-10c-2611#traceroute Protocol [ip]: Target IP address: 10.1.4.2 Source address: 10.1.1.1 Numeric display [n]: Timeout in seconds [3]: Probe count [3]: Minimum Time to Live [1]: Maximum Time to Live [30]: Port Number [33434]: Loose, Strict, Record, Timestamp, Verbose[none]: Type escape sequence to abort. Tracing the route to 10.1.4.2 1 10.1.1.2 4 msec 0 msec 4 msec 2 10.1.2.2 4 msec 4 msec 0 msec 3 10.1.3.2 0 msec 0 msec 4 msec 4 10.1.4.2 4 msec * 0 msec rp-11a-7204# *Dec 29 13:13:57.060: IP: s=10.1.1.2 (local), d=10.1.1.1 (Ethernet4/0), len 56, sending *Dec 29 13:13:57.060: ICMP type=11, code=0 *Dec 29 13:13:57.064: IP: s=10.1.1.2 (local), d=10.1.1.1 (Ethernet4/0), len 56, sending *Dec 29 13:13:57.064: ICMP type=11, code=0 *Dec 29 13:13:57.064: IP: s=10.1.1.2 (local), d=10.1.1.1 (Ethernet4/0), len 56, sending *Dec 29 13:13:57.068: ICMP type=11, code=0
在此調試輸出中,裝置11A將ICMP超出時間消息傳送到探測的源(10.1.1.1)。 這些ICMP消息用於響應TTL = 1的初始探測。裝置11A將TTL降低為零,並以超過時間消息進行響應。
附註:在以下調試輸出中看不到UDP探測器有兩個原因:
裝置11A不是UDP探測的目的裝置。
TTL會減至零,且封包永遠不會路由。因此,偵錯從不會識別封包。
*Dec 29 13:13:57.068: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 28, forward *Dec 29 13:13:57.068: UDP src=40309, dst=33437 *Dec 29 13:13:57.068: IP: s=10.1.2.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 13:13:57.068: ICMP type=11, code=0 *Dec 29 13:13:57.072: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 28, forward *Dec 29 13:13:57.072: UDP src=37277, dst=33438 *Dec 29 13:13:57.072: IP: s=10.1.2.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 13:13:57.072: ICMP type=11, code=0 *Dec 29 13:13:57.076: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 28, forward *Dec 29 13:13:57.076: UDP src=36884, dst=33439 *Dec 29 13:13:57.076: IP: s=10.1.2.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 13:13:57.076: ICMP type=11, code=0
此調試輸出顯示從源10.1.1.1到10.1.4.2的UDP探測。
附註:在這些探測中,TTL = 2(調試中無法看到這種情況)。 裝置11A將TTL減為1,並將UDP資料包轉發到裝置7A。裝置7A將TTL遞減為零,並使用ICMP超出時間消息進行響應。
*Dec 29 13:13:57.080: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 28, forward *Dec 29 13:13:57.080: UDP src=37479, dst=33440 *Dec 29 13:13:57.080: IP: s=10.1.3.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 13:13:57.080: ICMP type=11, code=0 *Dec 29 13:13:57.084: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 28, forward *Dec 29 13:13:57.084: UDP src=40631, dst=33441 *Dec 29 13:13:57.084: IP: s=10.1.3.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 13:13:57.084: ICMP type=11, code=0 *Dec 29 13:13:57.084: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 28, forward *Dec 29 13:13:57.088: UDP src=39881, dst=33442 *Dec 29 13:13:57.088: IP: s=10.1.3.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 13:13:57.088: ICMP type=11, code=0
在此調試輸出中,您將看到接下來的三個UDP探測。這些探測器的TTL為3。裝置11A將TTL遞減為2並將它們轉發到裝置7A。裝置7A將TTL遞減為1並將資料包轉發到裝置7B,裝置7B將TTL遞減為零,並使用ICMP超時消息進行響應。
*Dec 29 13:13:57.088: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 28, forward *Dec 29 13:13:57.088: UDP src=39217, dst=33443 *Dec 29 13:13:57.092: IP: s=10.1.4.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 13:13:57.092: ICMP type=3, code=3 *Dec 29 13:13:57.092: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 28, forward *Dec 29 13:13:57.096: UDP src=34357, dst=33444 *Dec 29 13:14:00.092: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 28, forward *Dec 29 13:14:00.092: UDP src=39587, dst=33445 *Dec 29 13:14:00.092: IP: s=10.1.4.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 13:14:00.092: ICMP type=3, code=3
您可以在此調試輸出中看到最後三個UDP探測器。這些探針的原始TTL為4。裝置11A將TTL遞減為3,裝置7A將之遞減為2,裝置7B將之遞減為1。裝置7C會以ICMP埠無法到達消息做出響應,因為它是探測的目的地。
附註:由於速率限制,裝置7C僅傳送兩個ICMP埠無法到達消息。
[root#linux-pc]#traceroute -n 10.1.4.2 traceroute to 10.1.4.2 (10.1.4.2), 30 hops max, 40 byte packets 1. 10.1.1.2 1.140 ms 0.793 ms 0.778 ms 2. 10.1.2.2 2.213 ms 2.105 ms 3.491 ms 1. 10.1.3.2 3.146 ms 2.314 ms 2.347 ms 1. 10.1.4.2 3.579 ms * 2.954 ms rp-11a-7204# *Jan 2 07:17:27.894: IP: s=10.1.1.2 (local), d=10.1.1.1 (Ethernet4/0), len 56, sending *Jan 2 07:17:27.894: ICMP type=11, code=0 *Jan 2 07:17:27.894: IP: s=10.1.1.2 (local), d=10.1.1.1 (Ethernet4/0), len 56, sending *Jan 2 07:17:27.894: ICMP type=11, code=0 *Jan 2 07:17:27.894: IP: s=10.1.1.2 (local), d=10.1.1.1 (Ethernet4/0), len 56, sending *Jan 2 07:17:27.894: ICMP type=11, code=0
在此調試輸出中,裝置11A將ICMP超出時間消息傳送到探測的源(10.1.1.1)。 這些ICMP消息用於響應TTL = 1的初始探測。裝置11A將TTL降低為零,並以超過時間消息進行響應。
在以下調試輸出中看不到UDP探測器有兩個原因:
裝置11A不是UDP探測的目的裝置。
TTL會減至零,且封包永遠不會路由。因此,偵錯從不會識別封包。
*Jan 2 07:17:27.894: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2(FastEthernet0/0), g=10.1.2.2, len 40, forward *Jan 2 07:17:27.894: UDP src=33302, dst=33438 *Jan 2 07:17:27.898: IP: s=10.1.2.2 (FastEthernet0/0), d=10.1.1.1(Ethernet4/0), g=10.1.1.1, len 56, forward *Jan 2 07:17:27.898: ICMP type=11, code=0 *Jan 2 07:17:27.898: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2(FastEthernet0/0), g=10.1.2.2, len 40, forward *Jan 2 07:17:27.898: UDP src=33302, dst=33439 *Jan 2 07:17:27.898: IP: s=10.1.2.2 (FastEthernet0/0), d=10.1.1.1(Ethernet4/0), g=10.1.1.1, len 56, forward *Jan 2 07:17:27.898: ICMP type=11, code=0 *Jan 2 07:17:27.898: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2(FastEthernet0/0), g=10.1.2.2, len 40, forward *Jan 2 07:17:27.898: UDP src=33302, dst=33440 *Jan 2 07:17:27.902: IP: s=10.1.2.2 (FastEthernet0/0), d=10.1.1.1(Ethernet4/0), g=10.1.1.1, len 56, forward *Jan 2 07:17:27.902: ICMP type=11, code=0
附註:在此偵錯輸出中,現在會看到來自來源10.1.1.1且目的地為10.1.4.2的UDP探測。
附註:在這些探測中,TTL = 2(調試中無法看到這種情況)。 裝置11A將TTL減為1,並將UDP資料包轉發到裝置7A。裝置7A將TTL遞減為零,並使用ICMP超出時間消息進行響應。
*Jan 2 07:17:27.902: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2(FastEthernet0/0), g=10.1.2.2, len 40, forward *Jan 2 07:17:27.902: UDP src=33302, dst=33441 *Jan 2 07:17:27.906: IP: s=10.1.3.2 (FastEthernet0/0), d=10.1.1.1(Ethernet4/0), g=10.1.1.1, len 56, forward *Jan 2 07:17:27.906: ICMP type=11, code=0 *Jan 2 07:17:27.906: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2(FastEthernet0/0), g=10.1.2.2, len 40, forward *Jan 2 07:17:27.906: UDP src=33302, dst=33442 *Jan 2 07:17:27.910: IP: s=10.1.3.2 (FastEthernet0/0), d=10.1.1.1(Ethernet4/0), g=10.1.1.1, len 56, forward *Jan 2 07:17:27.910: ICMP type=11, code=0 *Jan 2 07:17:27.910: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2(FastEthernet0/0), g=10.1.2.2, len 40, forward *Jan 2 07:17:27.910: UDP src=33302, dst=33443 *Jan 2 07:17:27.910: IP: s=10.1.3.2 (FastEthernet0/0), d=10.1.1.1(Ethernet4/0), g=10.1.1.1, len 56, forward *Jan 2 07:17:27.910: ICMP type=11, code=0
現在可以在此調試輸出中看到接下來的三個UDP探測器。這些探測器的TTL為3。裝置11A將TTL遞減為2並將它們轉發到裝置7A。裝置7A將TTL遞減為1並將資料包轉發到裝置7B,裝置7B將TTL遞減為零,並使用ICMP超時消息進行響應。
*Jan 2 07:17:27.910: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2(FastEthernet0/0), g=10.1.2.2, len 40, forward *Jan 2 07:17:27.910: UDP src=33302, dst=33444 *Jan 2 07:17:27.914: IP: s=10.1.4.2 (FastEthernet0/0), d=10.1.1.1(Ethernet4/0), g=10.1.1.1, len 56, forward *Jan 2 07:17:27.914: ICMP type=3, code=3 *Jan 2 07:17:27.914: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2(FastEthernet0/0), g=10.1.2.2, len 40, forward *Jan 2 07:17:27.914: UDP src=33302, dst=33445 *Jan 2 07:17:32.910: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2(FastEthernet0/0), g=10.1.2.2, len 40, forward *Jan 2 07:17:32.910: UDP src=33302, dst=33446 *Jan 2 07:17:32.914: IP: s=10.1.4.2 (FastEthernet0/0), d=10.1.1.1(Ethernet4/0), g=10.1.1.1, len 56, forward *Jan 2 07:17:32.914: ICMP type=3, code=3
此調試輸出顯示最後三個UDP探測。這些探針的原始TTL為4。裝置11A將TTL遞減為3,裝置7A將之遞減為2,裝置7B將之遞減為1。
然後,裝置7C會使用ICMP埠無法到達消息進行響應,因為它是探測的目的地。
附註:由於速率限制,裝置7C僅傳送兩個ICMP埠無法到達消息。
C:\>tracert 10.1.4.2 1 <10 ms <10 ms <10 ms 10.1.1.2 1 <10 ms <10 ms <10 ms 10.1.2.2 1 <10 ms <10 ms <10 ms 10.1.3.2 1 <10 ms 10 ms 10 ms 10.1.4.2 Trace complete rp-11a-7204# *Dec 29 14:02:22.236: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 78, forward *Dec 29 14:02:22.236: UDP src=137, dst=137 *Dec 29 14:02:22.240: IP: s=10.1.4.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 14:02:22.240: ICMP type=3, code=3 *Dec 29 14:02:23.732: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 78, forward *Dec 29 14:02:23.732: UDP src=137, dst=137 *Dec 29 14:02:23.736: IP: s=10.1.4.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 14:02:23.736: ICMP type=3, code=3 *Dec 29 14:02:25.236: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 78, forward *Dec 29 14:02:25.236: UDP src=137, dst=137 *Dec 29 14:02:25.236: IP: s=10.1.4.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 14:02:25.240: ICMP type=3, code=3 *Dec 29 14:02:26.748: IP: s=10.1.1.2 (local), d=10.1.1.1 (Ethernet4/0), len 56, sending *Dec 29 14:02:26.748: ICMP type=11, code=0 *Dec 29 14:02:26.752: IP: s=10.1.1.2 (local), d=10.1.1.1 (Ethernet4/0), len 56, sending *Dec 29 14:02:26.752: ICMP type=11, code=0 *Dec 29 14:02:26.752: IP: s=10.1.1.2 (local), d=10.1.1.1 (Ethernet4/0), len 56, sending *Dec 29 14:02:26.752: ICMP type=11, code=0
在此調試輸出中,裝置11A將ICMP超出時間消息傳送到探測的源(10.1.1.1)。 這些ICMP消息響應初始探測,即具有TTL = 1的ICMP回應請求資料包。裝置11A將TTL降低為零,並使用ICMP消息進行響應。
附註:在頂部您會看到NETBIOS名稱請求。這些請求被視為源埠和目標埠為137的UDP資料包。為清楚起見,將從調試輸出的其餘部分刪除NETBIOS資料包。您可以使用命 -d
令中的選 tracert
項來禁用NETBIOS行為。
在以下調試輸出中看不到ICMP探測,原因有二:
裝置11A不是ICMP探測的目的裝置。
TTL會減至零,且封包永遠不會路由。因此,偵錯從不會識別封包。
*Dec 29 14:02:32.256: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 92, forward *Dec 29 14:02:32.256: ICMP type=8, code=0 *Dec 29 14:02:32.260: IP: s=10.1.2.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 14:02:32.260: ICMP type=11, code=0 *Dec 29 14:02:32.260: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 92, forward *Dec 29 14:02:32.260: ICMP type=8, code=0 *Dec 29 14:02:32.260: IP: s=10.1.2.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 14:02:32.260: ICMP type=11, code=0 *Dec 29 14:02:32.264: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 92, forward *Dec 29 14:02:32.264: ICMP type=8, code=0 *Dec 29 14:02:32.264: IP: s=10.1.2.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 14:02:32.264: ICMP type=11, code=0
在此偵錯輸出中,現在會看到來自來源10.1.1.1且目的地為10.1.4.2的ICMP探測。
附註:在這些探測中,TTL = 2(使用debug無法看到這種情況)。 裝置11A將TTL減為1,並將UDP資料包轉發到裝置7A。裝置7A將TTL遞減為零,並使用ICMP超出時間消息進行響應。
*Dec 29 14:02:37.776: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 92, forward *Dec 29 14:02:37.776: ICMP type=8, code=0 *Dec 29 14:02:37.776: IP: s=10.1.3.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 14:02:37.776: ICMP type=11, code=0 *Dec 29 14:02:37.780: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 92, forward *Dec 29 14:02:37.780: ICMP type=8, code=0 *Dec 29 14:02:37.780: IP: s=10.1.3.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 14:02:37.780: ICMP type=11, code=0 *Dec 29 14:02:37.780: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 92, forward *Dec 29 14:02:37.780: ICMP type=8, code=0 *Dec 29 14:02:37.784: IP: s=10.1.3.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 14:02:37.784: ICMP type=11, code=0
在此調試輸出中,您將看到接下來的三個ICMP探測。這些探測器的TTL為3。裝置11A將TTL遞減為2並將它們轉發到裝置7A。裝置7A將TTL遞減為1並將資料包轉發到裝置7B,裝置7B將TTL遞減為零,並使用ICMP超時消息進行響應。
*Dec 29 14:02:43.292: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 92, forward *Dec 29 14:02:43.292: ICMP type=8, code=0 *Dec 29 14:02:43.296: IP: s=10.1.4.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 92, forward *Dec 29 14:02:43.296: ICMP type=0, code=0 *Dec 29 14:02:43.296: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 92, forward *Dec 29 14:02:43.296: ICMP type=8, code=0 *Dec 29 14:02:43.300: IP: s=10.1.4.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 92, forward *Dec 29 14:02:43.300: ICMP type=0, code=0 *Dec 29 14:02:43.300: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 92, forward *Dec 29 14:02:43.300: ICMP type=8, code=0 *Dec 29 14:02:43.304: IP: s=10.1.4.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 92, forward *Dec 29 14:02:43.304: ICMP type=0, code=0
此調試輸出顯示最後三個ICMP探測。這些探針的原始TTL為4。裝置11A將TTL遞減為3,裝置7A將之遞減為2,裝置7B將之遞減為1。然後,裝置7C會使用ICMP回應應答消息(型別=0,代碼=0)進行響應,因為它是探測的目的地。
附註:ICMP回應回覆消息不受速率限制,因為ICMP埠無法到達消息是。在這種情況下,您會看到所有三條ICMP回應回覆消息都已傳送。
在Cisco路由器中,命令應答 traceroute
的代碼為:
! -- success * -- time out N -- network unreachable H -- host unreachable P -- protocol unreachable A -- admin denied Q -- source quench received (congestion) ? -- unknown (any other ICMP message)
如果從UNIX運行 traceroute
,請注意以下事項:
您可以接收消息 traceroute: icmp socket: Permission denied
。
此程 traceroute
序依賴網路介面分流器(NIT)進行網路窺探。此裝置只能由root使用者訪問。您必須以root使用者身份運行該程式,或者為root使用者設定使用者ID。
本檔案已示範了命令如何使用UDP和ICMP封包判斷封包從指定來源到指定目的地所行經的路徑 traceroute
。輸出中可能的ICMP消息型別包括:
如果在傳輸過程中超出TTL(型別=11,代碼=0),則在探測資料包的TTL在資料包到達目的地之前過期的所有情況下,傳輸路由器都會將資料包傳送回。
如果連線埠無法連線(type=3, code=3),則當封包到達目的地時,會傳回封包以回應UDP探測封包(未定義UDP應用程式)。 這些資料包限製為每500毫秒一個資料包。這解釋了為什麼來自目標的響應(請參閱Cisco路由器和Linux的輸出)在even響應中失敗。裝置7C不生成ICMP消息,並且每台裝置中的命令輸出等待超過一秒 traceroute
。在MS Windows命令輸出的情況下 tracert
,會產生ICMP訊息,因為Cisco路由器中不存在UDP連線埠137。
如果有回應,type=8,code=0,則回應探測資料包由MS Windows PC傳送。
如果有回應應答,type=0,code=0,則到達目的地時會傳送對上一個資料包的應答。這僅適用於MS Windows命令 tracert
。
修訂 | 發佈日期 | 意見 |
---|---|---|
2.0 |
16-Oct-2023 |
重新認證 |
1.0 |
11-Apr-2002 |
初始版本 |