1. 程式人生 > 其它 >路由相關指令和概念理解

路由相關指令和概念理解

目錄

route命令引數詳解,linux新增刪除路由命令

linux系統的route命令用於顯示和操作IP路由表(show / manipulate the IP routing table)。要實現兩個不同的子網之間的通訊,需要一臺連線兩個網路的路由器,或者同時位於兩個網路的閘道器來實現。在linux系統中,設定路由通常是為了解決以下問題:該linux系統在區域網中,區域網中有一個閘道器,能夠讓機器訪問Internet,那麼就需要將這臺機器的ip地址設定為linux機器的預設路由。要注意的是,直接在命令列下執行route命令新增路由,不會永久儲存,當網絡卡重啟或機器重啟之後,該路由就失效了;可以在/etc/rc.local(開機啟動檔案)中新增route命令來保證該路由設定永久有效。

1.命令格式:

route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric] [if Interface]]

2.命令功能:
route命令是用於操作基於核心ip路由表,它的主要作用是建立一個靜態路由讓指定一個主機或者一個網路通過一個網路介面,如eth0。當使用“add”或“del”引數時,路由表被修改,如果沒有引數,則顯示路由表當前的內容。

3.命令引數:

-n 不解析名字
-v 顯示詳細的處理資訊
-F 顯示傳送資訊
-C 顯示路由快取
-f 清除所有閘道器入口的路由表
-p 與add命令一起使用時使路由具有永久性

add:新增一條新路由。
del:刪除一條路由。
-net:目標地址是一個網路。
-host:目標地址是一個主機。
netmask:當新增一個網路路由時,需要使用網路掩碼。
gw:路由資料包通過閘道器。注意,你指定的閘道器必須能夠達到。
metric:設定路由跳數。
Command 指定您想執行的命令 (Add/Change/Delete/Print)。 
Destination 指定該路由的網路目標。 
mask Netmask 指定與網路目標相關的網路掩碼(也被稱作子網掩碼)。 
Gateway 指定網路目標定義的地址集和子網掩碼可以到達的前進或下一躍點 IP 地址。 
metric Metric 為路由指定一個整數成本值標(從 1 至 9999),當在路由表(與轉發的資料包目標地址最匹配)的多個路由中進行選擇時可以使用。 
if Interface 為可以訪問目標的介面指定介面索引。若要獲得一個介面列表和它們相應的介面索引,使用 route print 命令的顯示功能。可以使用十進位制或十六進位制值進行介面索引。

4.使用例項:
例項1:顯示當前路由
命令:

route 
route -n

輸出:

[root@prometheus01 ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    0      0        0 ens33
link-local      0.0.0.0         255.255.0.0     U     1002   0        0 ens33
192.168.172.0   0.0.0.0         255.255.255.0   U     0      0        0 ens33

[root@prometheus01 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.172.2   0.0.0.0         UG    0      0        0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 ens33
192.168.172.0   0.0.0.0         255.255.255.0   U     0      0        0 ens33

說明:

第3行表示主機所在網路的地址為192.168.172.0,若資料傳送目標是在本區域網內通訊,則可直接通過ens33轉發資料包
第1行表示資料傳送目的是訪問Internet,則由介面ens33,將資料包傳送到閘道器192.168.172.2
其中Flags為路由標誌,標記當前網路節點的狀態
Flags標誌說明:
U  Up,表示此路由當前為啟動狀態
H  Host,表示此閘道器為一主機
G  Gateway,表示此閘道器為一路由器
R  Reinstate Route,使用動態路由重新初始化的路由
D  Dynamically,此路由是動態性地寫入
M  Modified,此路由是由路由守護程式或導向器動態修改
!  表示此路由當前為關閉狀態

備註:
route -n(-n表示不解析名字,列出速度會比route快)

例項2:新增閘道器
命令:

route add -net 224.0.0.0 netmask 240.0.0.0 dev ens33

輸出:

[root@prometheus01 ~]# route add -net 224.0.0.0 netmask 240.0.0.0 dev ens33
[root@prometheus01 ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    0      0        0 ens33
link-local      0.0.0.0         255.255.0.0     U     1002   0        0 ens33
192.168.172.0   0.0.0.0         255.255.255.0   U     0      0        0 ens33
224.0.0.0       0.0.0.0         240.0.0.0       U     0      0        0 ens33

說明:
增加一條到達224.0.0.0的路由

例項3:遮蔽一條路由
命令:

route add -net 224.0.0.0 netmask 240.0.0.0 reject

輸出:

[root@prometheus01 ~]# route add -net 224.0.0.0 netmask 240.0.0.0 reject
[root@prometheus01 ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    0      0        0 ens33
link-local      0.0.0.0         255.255.0.0     U     1002   0        0 ens33
192.168.172.0   0.0.0.0         255.255.255.0   U     0      0        0 ens33
224.0.0.0       -               240.0.0.0       !     0      -        0 -
224.0.0.0       0.0.0.0         240.0.0.0       U     0      0        0 ens33

說明:
增加一條遮蔽的路由,目標地址為224.x.x.x將被拒絕

例項4:刪除路由記錄
命令:

route del -net 224.0.0.0 netmask 240.0.0.0
route del -net 224.0.0.0 netmask 240.0.0.0 reject

輸出:

[root@prometheus01 ~]# route del -net 224.0.0.0 netmask 240.0.0.0
[root@prometheus01 ~]# route del -net 224.0.0.0 netmask 240.0.0.0 reject
[root@prometheus01 ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    0      0        0 ens33
link-local      0.0.0.0         255.255.0.0     U     1002   0        0 ens33
192.168.172.0   0.0.0.0         255.255.255.0   U     0      0        0 ens33

例項5:刪除和新增設定預設閘道器
命令:

route add default gw 192.168.172.100   
route del default gw 192.168.172.100

輸出:

[root@prometheus01 ~]# route add default gw 192.168.172.100   
[root@prometheus01 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.172.100 0.0.0.0         UG    0      0        0 ens33
0.0.0.0         192.168.172.2   0.0.0.0         UG    0      0        0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 ens33
192.168.172.0   0.0.0.0         255.255.255.0   U     0      0        0 ens33

[root@prometheus01 ~]# route del default gw 192.168.172.100
[root@prometheus01 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.172.2   0.0.0.0         UG    0      0        0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 ens33
192.168.172.0   0.0.0.0         255.255.255.0   U     0      0        0 ens33

traceroute命令詳解

traceroute是ICMP協議的一個重要應用,主要用來偵測源主機到目的主機之間所經過的路由的情況。traceroute使用icmp報文和ip首部中的TTL欄位,原理很簡單,開始時傳送一個TTL欄位為1的UDP資料報,而後每次收到ICMP超時報文後,再發送一個TTL欄位加1的UDP資料包,以確定路徑中的每個路由器,而每個路由器在丟棄UDP資料報時都會返回一個ICMP超時報文,最終到達目的主機後,由於ICMP選擇了一個不可能的值作為UDP埠(大於30000)。這樣目的主機就會發送一個埠不可達的ICMP差錯報文。

通過traceroute我們可以知道資訊從你的計算機到網際網路另一端的主機走的是什麼路徑。每次資料包由某一同樣的出發點(source)到達某一同樣的目的地(destination)走的路徑可能會不一樣,但基本上來說大部分時候所走的路由是相同的。linux系統中,我們稱之為traceroute,windows裡為tracert。traceroute通過傳送小的資料包到目的裝置直到其返回,來測量其需要多少時間。一條路徑上的每個裝置traceroute要測試3次,輸出結果中包括每次測試的時間(ms)和裝置的名稱(如有的話)及其IP地址。

在大多數情況下,在linux主機系統下,直接執行命令列:

traceroute hostname

而在window系統下是執行tracert的命令:

tracert hostname

1.命令格式:

traceroute [引數][主機]

2.命令功能:
traceroute指令讓你追蹤網路資料包的路由途徑,預設資料包大小是40bytes,使用者可另行設定。
具體引數格式:

traceroute [-dFlnrvx][-f<存活數值>][-g<閘道器>...][-i<網路介面>][-m<存活數值>][-p<通訊埠>][-s<來源地址>][-t<服務型別>][-w<超時秒數>][主機名稱或IP地址][資料包大小]

3.命令引數:

-d 使用Socket層級的排錯功能。
-f 設定第一個檢測資料包的存活數值TTL的大小。
-F 設定勿離斷位。
-g 設定來源路由閘道器,最多可設定8個。
-i 使用指定的網路介面送出資料包。
-I 使用ICMP迴應取代UDP資料資訊。
-m 設定檢測資料包的最大存活數值TTL的大小。
-n 直接使用IP地址而非主機名稱。
-p 設定UDP傳輸協議的通訊埠。
-r 忽略普通的Routing Table,直接將資料包送到遠端主機上。
-s 設定本地主機送出資料包的IP地址。
-t 設定檢測資料包的TOS數值。
-v 詳細顯示指令的執行過程。
-w 設定等待遠端主機回報的時間。
-x 開啟或關閉資料包的正確性檢驗。

4.使用例項:
例項1:traceroute 用法簡單,最常用的用法
命令:

traceroute www.baidu.com

輸出:

[root@prometheus01 ~]# traceroute www.baidu.com
traceroute to www.baidu.com (180.101.49.11), 30 hops max, 60 byte packets
 1  172.16.108.2 (172.16.108.2)  0.388 ms 172.16.108.3 (172.16.108.3)  0.362 ms  0.446 ms
 2  172.16.90.10 (172.16.90.10)  0.082 ms  0.108 ms  0.136 ms
 3  101.226.183.193 (101.226.183.193)  24.288 ms  24.338 ms  24.414 ms
 4  114.80.98.21 (114.80.98.21)  0.746 ms  1.194 ms 114.80.98.17 (114.80.98.17)  0.800 ms
 5  101.95.208.121 (101.95.208.121)  1.233 ms 101.95.208.253 (101.95.208.253)  2.304 ms 101.95.208.225 (101.95.208.225)  2.128 ms
 6  101.95.218.221 (101.95.218.221)  1.346 ms 101.95.218.45 (101.95.218.45)  2.480 ms 101.95.218.49 (101.95.218.49)  1.824 ms
 7  202.97.74.134 (202.97.74.134)  4.057 ms 202.97.71.14 (202.97.71.14)  4.197 ms 202.97.74.122 (202.97.74.122)  4.958 ms
 8  58.213.94.146 (58.213.94.146)  7.496 ms 58.213.95.142 (58.213.95.142)  7.947 ms 58.213.94.138 (58.213.94.138)  8.492 ms
 9  * * *
10  58.213.96.58 (58.213.96.58)  7.523 ms 58.213.96.122 (58.213.96.122)  7.345 ms 58.213.96.94 (58.213.96.94)  7.378 ms
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *

說明:
記錄按序列號從1開始,每個紀錄就是一跳 ,每跳錶示一個閘道器,我們看到每行有三個時間,單位是 ms,其實就是-q的預設引數。探測資料包向每個閘道器傳送三個資料包後,閘道器響應後返回的時間;如果用traceroute -q 4 www.baidu.com,表示向每個閘道器傳送4個數據包。

有時我們traceroute 一臺主機時,會看到有一些行是以星號表示的。出現這樣的情況,可能是防火牆封掉了ICMP的返回資訊,所以我們得不到什麼相關的資料包返回資料。

有時我們在某一閘道器處延時比較長,有可能是某臺網關比較阻塞,也可能是物理裝置本身的原因。當然如果某臺DNS出現問題時,不能解析主機名、域名時,也會有延時長的現象;可以加-n引數來避免DNS解析,以IP格式輸出資料。

如果在區域網中的不同網段之間,可以通過traceroute來排查問題所在,是主機的問題還是閘道器的問題。如果我們通過遠端來訪問某臺伺服器遇到問題時,我們用到traceroute追蹤資料包所經過的閘道器,提交IDC服務商,也有助於解決問題;但目前看來在國內解決這樣的問題是比較困難的,就是我們發現問題所在,IDC服務商也不可能幫助我們解決。

例項2:跳數設定
命令:

traceroute -m 10 www.baidu.com

輸出:

[root@prometheus01 ~]# traceroute -m 10 www.baidu.com
traceroute to www.baidu.com (180.101.49.11), 10 hops max, 60 byte packets
 1  172.16.108.3 (172.16.108.3)  0.623 ms 172.16.108.2 (172.16.108.2)  0.352 ms  0.432 ms
 2  172.16.90.10 (172.16.90.10)  0.073 ms  0.109 ms  0.091 ms
 3  101.226.183.193 (101.226.183.193)  1.244 ms  1.280 ms  1.362 ms
 4  114.80.98.21 (114.80.98.21)  1.285 ms 114.80.98.17 (114.80.98.17)  7.011 ms 114.80.98.21 (114.80.98.21)  1.795 ms
 5  101.95.208.125 (101.95.208.125)  4.859 ms 101.89.240.161 (101.89.240.161)  9.176 ms 101.95.208.125 (101.95.208.125)  4.903 ms
 6  101.95.218.49 (101.95.218.49)  1.813 ms 101.95.218.237 (101.95.218.237)  1.959 ms 101.95.224.113 (101.95.224.113)  2.481 ms
 7  202.97.71.6 (202.97.71.6)  5.670 ms 202.97.66.62 (202.97.66.62)  8.000 ms 202.97.19.246 (202.97.19.246)  4.367 ms
 8  58.213.95.150 (58.213.95.150)  9.824 ms 58.213.95.158 (58.213.95.158)  8.650 ms 58.213.94.2 (58.213.94.2)  7.510 ms
 9  * 58.213.95.122 (58.213.95.122)  7.106 ms *
10  58.213.96.58 (58.213.96.58)  7.829 ms 58.213.96.66 (58.213.96.66)  7.503 ms 58.213.96.102 (58.213.96.102)  8.195 ms

例項3:顯示IP地址,不查主機名
命令:

traceroute -n www.baidu.com

輸出:

[root@prometheus01 ~]# traceroute -n  www.baidu.com   
traceroute to www.baidu.com (180.101.49.11), 30 hops max, 60 byte packets
 1  172.16.108.3  0.643 ms  0.671 ms 172.16.108.2  0.387 ms
 2  172.16.90.10  0.073 ms  0.103 ms  0.079 ms
 3  101.226.183.193  1.378 ms  1.448 ms  1.527 ms
 4  114.80.98.21  0.780 ms 114.80.98.17  0.752 ms 114.80.98.21  1.169 ms
 5  101.89.240.145  0.993 ms 101.95.208.125  1.242 ms 101.95.208.237  2.226 ms
 6  101.95.218.81  2.049 ms 101.95.218.197  1.792 ms 101.95.224.97  2.200 ms
 7  202.97.29.114  6.779 ms 202.97.66.202  8.024 ms 202.97.71.6  9.209 ms
 8  58.213.95.146  8.084 ms 58.213.94.106  7.459 ms 58.213.95.82  8.048 ms
 9  * * *
10  58.213.96.78  9.442 ms 58.213.96.130  7.112 ms 58.213.96.70  8.025 ms
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *


[root@prometheus01 ~]# traceroute  www.baidu.com   
traceroute to www.baidu.com (180.101.49.12), 30 hops max, 60 byte packets
 1  172.16.108.2 (172.16.108.2)  0.332 ms 172.16.108.3 (172.16.108.3)  0.392 ms  0.446 ms
 2  172.16.90.10 (172.16.90.10)  0.085 ms  0.103 ms  0.088 ms
 3  101.226.183.193 (101.226.183.193)  1.558 ms  1.640 ms  1.715 ms
 4  114.80.98.17 (114.80.98.17)  1.601 ms  2.045 ms 114.80.98.21 (114.80.98.21)  0.723 ms
 5  101.89.240.161 (101.89.240.161)  0.923 ms 101.95.208.229 (101.95.208.229)  1.233 ms 101.95.208.125 (101.95.208.125)  1.349 ms
 6  101.95.218.225 (101.95.218.225)  2.181 ms 101.95.218.81 (101.95.218.81)  2.096 ms  2.117 ms
 7  202.97.29.110 (202.97.29.110)  7.198 ms 202.97.19.254 (202.97.19.254)  4.183 ms 202.97.29.122 (202.97.29.122)  6.694 ms
 8  58.213.94.82 (58.213.94.82)  9.700 ms 58.213.94.110 (58.213.94.110)  8.729 ms 58.213.95.138 (58.213.95.138)  7.452 ms
 9  * * *
10  58.213.96.118 (58.213.96.118)  7.592 ms 58.213.96.54 (58.213.96.54)  8.163 ms 58.213.96.90 (58.213.96.90)  8.507 ms
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *

例項4:探測包使用的基本UDP埠設定6888
命令:

traceroute -p 6888 www.baidu.com

輸出:

[root@prometheus01 ~]# raceroute -p 6888 www.baidu.com
traceroute to www.baidu.com (180.101.49.12), 30 hops max, 60 byte packets
 1  172.16.108.2 (172.16.108.2)  0.379 ms  0.468 ms 172.16.108.3 (172.16.108.3)  0.443 ms
 2  172.16.90.10 (172.16.90.10)  0.075 ms  0.097 ms  0.078 ms
 3  101.226.183.193 (101.226.183.193)  1.168 ms  1.247 ms  1.364 ms
 4  114.80.98.21 (114.80.98.21)  0.627 ms 114.80.98.17 (114.80.98.17)  0.569 ms 114.80.98.21 (114.80.98.21)  0.989 ms
 5  101.95.208.229 (101.95.208.229)  1.283 ms * *
 6  * 101.95.218.225 (101.95.218.225)  2.232 ms 101.95.218.217 (101.95.218.217)  2.096 ms
 7  202.97.29.106 (202.97.29.106)  12.640 ms 202.97.101.42 (202.97.101.42)  6.908 ms 202.97.101.34 (202.97.101.34)  3.744 ms
 8  * 58.213.95.158 (58.213.95.158)  6.631 ms 58.213.94.142 (58.213.94.142)  8.190 ms
 9  * 58.213.94.126 (58.213.94.126)  7.514 ms *
10  58.213.96.110 (58.213.96.110)  7.517 ms 58.213.96.74 (58.213.96.74)  7.949 ms 58.213.96.50 (58.213.96.50)  7.467 ms
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *

例項5:把探測包的個數設定為值4
命令:

traceroute -q 4 www.baidu.com

輸出:

[root@prometheus01 ~]# traceroute -q 4 www.baidu.com
traceroute to www.baidu.com (180.101.49.12), 30 hops max, 60 byte packets
 1  172.16.108.2 (172.16.108.2)  0.366 ms 172.16.108.3 (172.16.108.3)  0.468 ms  0.547 ms 172.16.108.2 (172.16.108.2)  0.427 ms
 2  172.16.90.10 (172.16.90.10)  0.081 ms  0.123 ms  0.117 ms  0.103 ms
 3  101.226.183.193 (101.226.183.193)  1.295 ms  1.380 ms  1.500 ms  1.580 ms
 4  114.80.98.21 (114.80.98.21)  0.687 ms 114.80.98.17 (114.80.98.17)  0.634 ms 114.80.98.21 (114.80.98.21)  1.046 ms  1.363 ms
 5  101.89.240.165 (101.89.240.165)  2.067 ms 101.95.208.217 (101.95.208.217)  2.954 ms 101.89.240.173 (101.89.240.173)  2.065 ms 101.95.208.233 (101.95.208.233)  2.201 ms
 6  101.95.218.225 (101.95.218.225)  1.991 ms 101.95.218.61 (101.95.218.61)  1.682 ms 101.95.218.73 (101.95.218.73)  2.530 ms 101.95.218.77 (101.95.218.77)  2.181 ms
 7  202.97.29.106 (202.97.29.106)  8.079 ms 202.97.101.34 (202.97.101.34)  4.216 ms 202.97.101.50 (202.97.101.50)  3.779 ms 202.97.81.118 (202.97.81.118)  16.144 ms
 8  58.213.95.146 (58.213.95.146)  7.450 ms 58.213.95.106 (58.213.95.106)  7.968 ms 58.213.94.110 (58.213.94.110)  9.789 ms  7.526 ms
 9  * * 58.213.95.90 (58.213.95.90)  7.129 ms *
10  58.213.96.94 (58.213.96.94)  7.667 ms 58.213.96.54 (58.213.96.54)  8.129 ms 58.213.96.118 (58.213.96.118)  7.551 ms 58.213.96.102 (58.213.96.102)  8.385 ms
11  * * * *
12  * * * *
13  * * * *
14  * * * *
15  * * * *
16  * * * *
17  * * * *
18  * * * *
19  * * * *
20  * * * *
21  * * * *
22  * * * *
23  * * * *
24  * * * *
25  * * * *
26  * * * *
27  * * * *
28  * * * *
29  * * * *
30  * * * *

例項6:繞過正常的路由表,直接傳送到網路相連的主機
命令:

traceroute -r www.baidu.com

輸出:

[root@prometheus01 ~]# traceroute -r www.baidu.com
traceroute to www.baidu.com (180.101.49.11), 30 hops max, 60 byte packets
connect: Network is unreachable

例項7:把對外發探測包的等待響應時間設定為3秒
命令:

traceroute -w 3 www.baidu.com

輸出:

[root@prometheus01 ~]# traceroute -w 3 www.baidu.com
traceroute to www.baidu.com (180.101.49.11), 30 hops max, 60 byte packets
 1  172.16.108.2 (172.16.108.2)  0.429 ms 172.16.108.3 (172.16.108.3)  0.338 ms  0.403 ms
 2  172.16.90.10 (172.16.90.10)  0.071 ms  0.105 ms  0.093 ms
 3  101.226.183.193 (101.226.183.193)  1.483 ms  1.561 ms  1.645 ms
 4  114.80.98.21 (114.80.98.21)  9.103 ms 114.80.98.17 (114.80.98.17)  2.126 ms 114.80.98.21 (114.80.98.21)  13.809 ms
 5  101.95.208.245 (101.95.208.245)  1.923 ms 101.89.240.173 (101.89.240.173)  4.183 ms 101.95.208.253 (101.95.208.253)  1.937 ms
 6  101.95.224.97 (101.95.224.97)  2.216 ms 101.95.218.213 (101.95.218.213)  2.240 ms 101.95.218.205 (101.95.218.205)  1.466 ms
 7  202.97.81.162 (202.97.81.162)  7.006 ms 202.97.29.126 (202.97.29.126)  7.590 ms 202.97.66.198 (202.97.66.198)  7.971 ms
 8  58.213.95.106 (58.213.95.106)  7.314 ms 58.213.95.146 (58.213.95.146)  7.386 ms 58.213.94.82 (58.213.94.82)  8.424 ms
 9  * 58.213.94.126 (58.213.94.126)  7.814 ms 58.213.94.134 (58.213.94.134)  8.626 ms
10  58.213.96.58 (58.213.96.58)  8.124 ms 58.213.96.110 (58.213.96.110)  7.296 ms 58.213.96.118 (58.213.96.118)  7.683 ms
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *

Traceroute的工作原理:

Traceroute最簡單的基本用法是:traceroute hostname

Traceroute程式的設計是利用ICMP及IP header的TTL(Time To Live)欄位(field)。首先,traceroute送出一個TTL是1的IP datagram(其實,每次送出的為3個40位元組的包,包括源地址,目的地址和包發出的時間標籤)到目的地,當路徑上的第一個路由器(router)收到這個datagram時,它將TTL減1。此時,TTL變為0了,所以該路由器會將此datagram丟掉,並送回一個「ICMP time exceeded」訊息(包括髮IP包的源地址,IP包的所有內容及路由器的IP地址),traceroute 收到這個訊息後,便知道這個路由器存在於這個路徑上,接著traceroute 再送出另一個TTL是2 的datagram,發現第2 個路由器...... traceroute 每次將送出的datagram的TTL 加1來發現另一個路由器,這個重複的動作一直持續到某個datagram 抵達目的地。當datagram到達目的地後,該主機並不會送回ICMP time exceeded訊息,因為它已是目的地了,那麼traceroute如何得知目的地到達了呢?

Traceroute在送出UDP datagrams到目的地時,它所選擇送達的port number 是一個一般應用程式都不會用的號碼(30000 以上),所以當此UDP datagram 到達目的地後該主機會送回一個「ICMP port unreachable」的訊息,而當traceroute 收到這個訊息時,便知道目的地已經到達了。所以traceroute 在Server端也是沒有所謂的Daemon 程式。

Traceroute提取發 ICMP TTL到期訊息裝置的IP地址並作域名解析。每次 ,Traceroute都打印出一系列資料,包括所經過的路由裝置的域名及 IP地址,三個包每次來回所花時間。

tracert詳解

格式:

tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name

引數說明:

tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name

該診斷實用程式通過向目的地傳送具有不同生存時間 (TL) 的 Internet 控制資訊協議 (CMP) 迴應報文,以確定至目的地的路由。路徑上的每個路由器都要在轉發該 ICMP 迴應報文之前將其 TTL 值至少減 1,因此 TTL 是有效的跳轉計數。當報文的 TTL 值減少到 0 時,路由器向源系統發回 ICMP 超時資訊。通過傳送 TTL 為 1 的第一個迴應報文並且在隨後的傳送中每次將 TTL 值加 1,直到目標響應或達到最大 TTL 值,Tracert 可以確定路由。通過檢查中間路由器發發回的 ICMP 超時 (ime Exceeded) 資訊,可以確定路由器。注意,有些路由器“安靜”地丟棄生存時間 (TLS) 過期的報文並且對 tracert 無效。

引數:

-d 指定不對計算機名解析地址。
-h maximum_hops 指定查詢目標的跳轉的最大數目。
-jcomputer-list 指定在 computer-list 中鬆散源路由。
-w timeout 等待由 timeout 對每個應答指定的毫秒數。
target_name 目標計算機的名稱。