一、traceroute簡介
traceroute是一個用於診斷網絡故障的工具,它能夠顯示數據包從源到目的地經過的所有路由器(包括路由器名稱和IP地址),並顯示每個路由器的響應時間。traceroute的工作原理是向目的地發送一系列數據包,每次將TTL(Time To Live)值設置為逐漸增大的數值,這樣當數據包在經過路由器時,TTL值會減少,當TTL值為0時,數據包就會被丟棄並發回來一個“Time Exceeded”消息,這樣就能得到每一跳的路由器的IP地址。
二、使用traceroute進行網絡診斷
traceroute命令的使用格式為:
traceroute [-FIldnrvx] [-f <第一個TTL>] [-m <最大跳數>] [-p <端口號>] [-q <流量>] [-s <源IP地址>] [-t <type of service>] [-w <超時時間>] [-z <分組大小>] 主機名/IP地址
其中,常用的選項有:
- -I:使用ICMP Echo請求作為數據包的載荷。
- -F:設置Do not Fragment標誌位,防止數據包在傳輸時被分片。
- -l:使用小於數據包默認長度的數據包。
- -d:啟用調試模式,顯示SOCKET I/O。
- -n:直接使用IP地址而不進行DNS解析。
- -m:指定最大跳數。
- -p:指定端口號。
- -q:指定每個跳點要發送的數據包數量。
- -s:指定源IP地址。
- -t:指定IP包的Type of Service。
- -w:指定等待超時的時間。
- -z:設置每個分組的大小。
- -v:顯示IP地址的具體信息。
- -x:使用專用IP地址進行掃描,忽略ICMP重定向報文。
三、traceroute實例
1. 普通使用
執行traceroute www.baidu.com命令,可以得到類似以下的結果:
traceroute to www.baidu.com (39.156.69.79), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 1.089 ms 1.298 ms 1.275 ms
2 1.222.178.1 (1.222.178.1) 7.118 ms 7.210 ms 7.329 ms
3 * * *
4 1.222.68.209 (1.222.68.209) 12.829 ms 12.912 ms 13.001 ms
5 1.222.69.30 (1.222.69.30) 17.157 ms 17.221 ms 17.338 ms
6 119.147.218.169 (119.147.218.169) 19.982 ms 20.015 ms 19.997 ms
7 202.97.51.253 (202.97.51.253) 28.971 ms 202.97.34.85 (202.97.34.85) 29.112 ms 202.97.34.89 (202.97.34.89) 29.064 ms
8 218.30.54.186 (218.30.54.186) 28.963 ms 202.97.49.173 (202.97.49.173) 74.891 ms 74.863 ms
9 61.148.56.169 (61.148.56.169) 63.126 ms 61.148.56.161 (61.148.56.161) 64.650 ms 61.148.56.169 (61.148.56.169) 63.119 ms
10 * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *
結果顯示,從本機到百度服務器的路徑上,經過了多個路由器。第一個數字表示路由器的跳數,下面的IP地址表示經過該路由器時的IP地址。
2. 使用-t指定Type of Service值
執行traceroute -t 10 www.baidu.com命令,使用Type of Service為10的IP包進行網絡測試:
traceroute to www.baidu.com (220.181.57.216), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 2.071 ms 2.292 ms 2.269 ms
2 1.222.178.1 (1.222.178.1) 6.641 ms 6.727 ms 6.851 ms
3 * * *
4 1.222.68.209 (1.222.68.209) 12.545 ms 12.628 ms 12.715 ms
5 1.222.69.30 (1.222.69.30) 16.986 ms 17.049 ms 17.171 ms
6 119.147.218.169 (119.147.218.169) 19.546 ms 19.570 ms 19.575 ms
7 202.97.68.105 (202.97.68.105) 29.477 ms 202.97.51.245 (202.97.51.245) 29.620 ms 202.97.34.93 (202.97.34.93) 29.559 ms
8 202.97.61.77 (202.97.61.77) 28.773 ms 28.744 ms 218.30.54.190 (218.30.54.190) 29.248 ms
9 61.148.56.169 (61.148.56.169) 63.751 ms 62.307 ms 62.845 ms
10 * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *
關於Type of Service的具體含義,可以參考RFC 2474。
3. 使用-m指定最大跳數
執行traceroute -m 10 www.baidu.com命令,設置最大跳數為10,即只會跟蹤前10個路由器:
traceroute to www.baidu.com (39.156.69.79), 10 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 0.935 ms 1.168 ms 1.144 ms
2 1.222.178.1 (1.222.178.1) 11.002 ms 11.105 ms 11.247 ms
3 * * *
4 1.222.68.209 (1.222.68.209) 16.654 ms 16.736 ms *
5 * * *
6 180.130.250.14 (180.130.250.14) 39.022 ms 39.160 ms 180.149.128.126 (180.149.128.126) 39.381 ms
7 202.97.51.61 (202.97.51.61) 46.259 ms * 202.97.51.85 (202.97.51.85) 49.396 ms
8 * * *
9 39.156.69.79 (39.156.69.79) 58.030 ms * *
可以看到,traceroute只跟蹤了前10個路由器,後面的路由器沒有被顯示出來。
4. 使用-q指定每個跳點要發送的數據包數量
執行traceroute -q 3 www.baidu.com命令,設置每個跳點要發送的數據包數量為3:
traceroute to www.baidu.com (39.156.69.79), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 0.992 ms 1.328 ms 1.304 ms
2 1.222.178.1 (1.222.178.1) 6.918 ms 7.113 ms 7.195 ms
3 * * *
4 1.222.68.209 (1.222.68.209) 13.710 ms 13.803 ms 13.891 ms
5 1.222.69.30 (1.222.69.30) 18.151 ms 18.214 ms 18.338 ms
6 119.147.218.169 (119.147.218.169) 20.956 ms 20.989 ms 20.971 ms
7 202.97.51.245 (202.97.51.245) 28.586 ms 202.97.51.61 (202.97.51.61) 29.673 ms 202.97.34.93 (202.97.34.93) 29.482 ms
8 218.30.54.186 (218.30.54.186) 28.861 ms 201.97.49.173 (201.97.49.173) 74.316 ms 74.287 ms
9 61.148.56.169 (61.148.56.169) 63.316 ms 61.148.56.161 (61.148.56.161) 63.599 ms 62.208 ms
10 * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *
可以看到,traceroute向每個跳點都發送了3個數據包。
四、總結
traceroute是一個非常常用的網絡診斷工具,它可以幫助我們找到網絡故障的原因。通過對traceroute的學習,我們可以深入了解網絡通信的原理和各種路由器的工作方式,為我們的網絡診斷工作提供有力的支持。
原創文章,作者:LAIJ,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/146462.html