傳媒公司做網(wǎng)站編輯 如何西安做網(wǎng)站的公司
traceroute
是一個(gè)網(wǎng)絡(luò)診斷工具,用于跟蹤和顯示數(shù)據(jù)包從源主機(jī)到目標(biāo)主機(jī)所經(jīng)過的每一跳(路由器)的路徑。它能夠幫助用戶識(shí)別網(wǎng)絡(luò)路徑中的瓶頸和故障點(diǎn)。traceroute
的工作原理主要基于 ICMP(Internet Control Message Protocol)或 UDP(User Datagram Protocol)和 IP 包的生存時(shí)間(TTL,Time To Live)字段。以下是詳細(xì)的工作原理:
工作原理
-
初始化:
traceroute
工具在運(yùn)行時(shí),用戶指定目標(biāo)主機(jī)的IP地址或域名。- 工具初始化一些參數(shù),例如最大跳數(shù)、每個(gè)跳數(shù)的探測(cè)包數(shù)量等。
-
TTL 字段的作用:
- IP 包的 TTL 字段用于限制包在網(wǎng)絡(luò)中的生存時(shí)間。每經(jīng)過一個(gè)路由器,TTL 值減1。當(dāng) TTL 值減到0時(shí),路由器丟棄該包并發(fā)送一個(gè) ICMP “超時(shí)”(Time Exceeded)消息回源主機(jī)。
-
發(fā)送探測(cè)包:
traceroute
首先發(fā)送一個(gè)TTL值為1的探測(cè)包(ICMP或UDP包)到目標(biāo)主機(jī)。- 路由器R1收到TTL值為1的包,將TTL減為0,丟棄該包,并向源主機(jī)發(fā)送一個(gè)ICMP超時(shí)消息。
-
接收 ICMP 超時(shí)消息:
- 源主機(jī)收到來自R1的ICMP超時(shí)消息,可以知道R1是到目標(biāo)主機(jī)的第一跳。
traceroute
記錄R1的IP地址和往返時(shí)間(RTT)。
-
增加 TTL 并重復(fù):
traceroute
接著發(fā)送TTL值為2的探測(cè)包。R1將包轉(zhuǎn)發(fā)給下一跳路由器R2。- R2收到TTL值為1的包,將TTL減為0,丟棄該包,并向源主機(jī)發(fā)送ICMP超時(shí)消息。
- 源主機(jī)記錄R2的IP地址和往返時(shí)間。
-
逐步增加 TTL:
- 這個(gè)過程重復(fù)進(jìn)行,每次TTL值增加1,直到包達(dá)到目標(biāo)主機(jī)或達(dá)到預(yù)設(shè)的最大跳數(shù)。
- 當(dāng)探測(cè)包到達(dá)目標(biāo)主機(jī)時(shí),目標(biāo)主機(jī)通常會(huì)發(fā)送一個(gè)ICMP "目的不可達(dá)"消息,表示包已到達(dá)。
-
路徑追蹤完成:
traceroute
顯示從源主機(jī)到目標(biāo)主機(jī)路徑上的所有路由器的IP地址和各跳的RTT。
UDP 和 ICMP 的使用
-
Linux 中的 traceroute:
- 默認(rèn)情況下使用UDP包。目標(biāo)端口從高值(通常是33434)開始遞增。
- 當(dāng)目標(biāo)主機(jī)收到UDP包時(shí),如果端口不可達(dá),它將發(fā)送一個(gè)ICMP "端口不可達(dá)"消息。
-
Windows 中的 tracert:
- 使用ICMP回顯請(qǐng)求(ICMP Echo Request)。每個(gè)ICMP回顯請(qǐng)求的TTL值逐步增加。
- 目標(biāo)主機(jī)會(huì)回復(fù)一個(gè)ICMP回顯應(yīng)答(ICMP Echo Reply)消息。
示例
運(yùn)行 traceroute
的示例輸出:
traceroute to www.example.com (93.184.216.34), 30 hops max, 60 byte packets1 192.168.0.1 (192.168.0.1) 1.123 ms 1.089 ms 1.057 ms2 10.0.0.1 (10.0.0.1) 2.345 ms 2.300 ms 2.265 ms3 203.0.113.1 (203.0.113.1) 4.567 ms 4.523 ms 4.485 ms4 198.51.100.1 (198.51.100.1) 10.789 ms 10.754 ms 10.710 ms5 93.184.216.34 (93.184.216.34) 20.001 ms 19.967 ms 19.923 ms
- 第一跳:本地路由器,IP地址192.168.0.1,往返時(shí)間約1毫秒。
- 第二跳:第一個(gè)中間路由器,IP地址10.0.0.1,往返時(shí)間約2.3毫秒。
- 第三跳:第二個(gè)中間路由器,IP地址203.0.113.1,往返時(shí)間約4.5毫秒。
- 第四跳:第三個(gè)中間路由器,IP地址198.51.100.1,往返時(shí)間約10.7毫秒。
- 第五跳:目標(biāo)主機(jī),IP地址93.184.216.34,往返時(shí)間約20毫秒。
總結(jié)
traceroute
通過逐步增加探測(cè)包的TTL值來確定數(shù)據(jù)包從源主機(jī)到目標(biāo)主機(jī)路徑上的每個(gè)中間路由器。利用ICMP超時(shí)消息或ICMP端口不可達(dá)消息,它能夠顯示每一跳的IP地址和往返時(shí)間,幫助用戶識(shí)別網(wǎng)絡(luò)路徑中的問題和瓶頸。