telnet
检测与domain/IP 某端口的连接是否正常
代码语言:javascript复制$ telnet baidu.com 80
Trying 220.181.38.148...
Connected to baidu.com.
Escape character is '^]'.
ping
检测与domain/IP 某端口的连接是否能通,通过icmp协议
参数配置
- -d 使用Socket的SO_DEBUG功能。
- -c<完成次数> 设置完成要求回应的次数。
- -f 极限检测。
- -i<间隔秒数> 指定收发信息的间隔时间。
- -I<网络界面> 使用指定的网络接口送出数据包。
- -l<前置载入> 设置在送出要求信息之前,先行发出的数据包。
- -n 只输出数值。
- -p<范本样式> 设置填满数据包的范本样式。
- -q 不显示指令执行过程,开头和结尾的相关信息除外。
- -r 忽略普通的Routing Table,直接将数据包送到远端主机上。
- -R 记录路由过程。
- -s<数据包大小> 设置数据包的大小。
- -t<存活数值> 设置存活数值TTL的大小。
- -v 详细显示指令的执行过程。
不加参数
代码语言:javascript复制$ ping lijinghua.club
PING lijinghua.club (59.110.172.131) 56(84) bytes of data.
64 bytes from 59.110.172.131: icmp_seq=1 ttl=52 time=5.48 ms
64 bytes from 59.110.172.131: icmp_seq=2 ttl=52 time=6.13 ms
64 bytes from 59.110.172.131: icmp_seq=3 ttl=52 time=6.71 ms
64 bytes from 59.110.172.131: icmp_seq=4 ttl=52 time=7.22 ms
^C
--- lijinghua.club ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 7077ms
rtt min/avg/max/mdev = 5.480/6.387/7.228/0.657 ms
控制ping次数
代码语言:javascript复制$ ping baidu.com -c 3
PING baidu.com (220.181.38.148) 56(84) bytes of data.
64 bytes from 220.181.38.148: icmp_seq=1 ttl=39 time=80.6 ms
64 bytes from 220.181.38.148: icmp_seq=2 ttl=39 time=81.0 ms
64 bytes from 220.181.38.148: icmp_seq=3 ttl=39 time=80.5 ms
--- baidu.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 80.564/80.780/81.089/0.397 ms
traceroute
通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。linux系统中,我们称之为traceroute,在MS Windows中为tracert。 traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。
在大多数情况下,我们会在linux主机系统下,直接执行命令行:
traceroute hostname
而在Windows系统下是执行tracert的命令:
tracert hostname
traceroute指令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes,用户可另行设置。 具体参数格式:traceroute [-dFlnrvx][-f<存活数值>][-g<网关>...][-i<网络界面>][-m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址][数据包大小]
参数配置
-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 开启或关闭数据包的正确性检验。
基本使用
代码语言:javascript复制$ traceroute www.baidu.com
traceroute to www.baidu.com (182.61.200.6), 30 hops max, 60 byte packets
1 XiaoQiang (192.168.0.31) 0.707 ms 0.666 ms 0.635 ms
2 113.44.160.1 (113.44.160.1) 3.053 ms 3.139 ms 2.096 ms
3 218.241.166.209 (218.241.166.209) 4.918 ms 218.241.253.125 (218.241.253.125) 3.382 ms 2.116 ms
4 14.197.177.1 (14.197.177.1) 3.782 ms 14.197.178.41 (14.197.178.41) 3.234 ms 14.197.177.9 (14.197.177.9) 160.865 ms
5 14.197.149.178 (14.197.149.178) 4.540 ms 14.197.249.122 (14.197.249.122) 3.747 ms 14.197.249.94 (14.197.249.94) 5.293 ms
6 * * 182.61.252.220 (182.61.252.220) 5.367 ms
7 * * *
8 * * *
9 * * *
10 * * *
-----------------------------
27 * * *
28 * * *
29 * * *
30 * * *
重点
记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,单位是 ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果您用 traceroute -q 4 www.58.com ,表示向每个网关发送4个数据包。
有时我们traceroute 一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。
有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会 有延时长的现象;您可以加-n 参数来避免DNS解析,以IP格式输出数据。
如果在局域网中的不同网段之间,我们可以通过traceroute 来排查问题所在,是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute 追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC服务商也不可能帮助我们解决。
跳数限制
代码语言:javascript复制$ traceroute -m 10 www.baidu.com
traceroute to www.baidu.com (182.61.200.7), 10 hops max, 60 byte packets
1 XiaoQiang (192.168.0.31) 0.573 ms 0.541 ms 0.519 ms
2 113.44.160.1 (113.44.160.1) 2.939 ms 2.979 ms 3.117 ms
3 218.241.166.209 (218.241.166.209) 3.849 ms 3.785 ms 218.241.253.125 (218.241.253.125) 3.052 ms
4 14.197.177.89 (14.197.177.89) 3.171 ms 14.197.243.133 (14.197.243.133) 3.014 ms 14.197.177.89 (14.197.177.89) 4.479 ms
5 14.197.178.94 (14.197.178.94) 3.644 ms 14.197.249.122 (14.197.249.122) 3.402 ms 14.197.149.178 (14.197.149.178) 3.718 ms
6 182.61.252.220 (182.61.252.220) 5.134 ms * 182.61.252.218 (182.61.252.218) 5.472 ms
7 * * *
8 * * *
9 * * *
10 * * *
显示IP地址,不查主机名
代码语言:javascript复制$ traceroute -nm 10 www.baidu.com
traceroute to www.baidu.com (182.61.200.7), 10 hops max, 60 byte packets
1 192.168.0.31 0.555 ms 0.520 ms 0.491 ms
2 113.44.160.1 2.777 ms 2.680 ms 3.495 ms
3 218.241.253.125 4.580 ms 4.654 ms 4.504 ms
4 14.197.179.65 81.970 ms 14.197.177.9 74.090 ms 14.197.177.1 5.381 ms
5 14.197.249.126 4.772 ms 14.197.249.94 5.361 ms 168.160.254.222 4.414 ms
6 * 182.61.252.218 5.110 ms 5.044 ms
7 * * *
8 * * *
9 * * *
10 * * *
探测包使用的基本UDP端口设置6888
代码语言:javascript复制$ traceroute -p 6888 www.baidu.com
traceroute to www.baidu.com (182.61.200.7), 30 hops max, 60 byte packets
1 XiaoQiang (192.168.0.31) 0.796 ms 0.766 ms 1.628 ms
2 113.44.160.1 (113.44.160.1) 2.441 ms 2.583 ms 2.933 ms
3 218.241.166.209 (218.241.166.209) 3.596 ms 218.241.253.125 (218.241.253.125) 2.844 ms 218.241.166.209 (218.241.166.209) 3.609 ms
4 14.197.177.21 (14.197.177.21) 2.752 ms 14.197.177.13 (14.197.177.13) 2.833 ms 14.197.179.65 (14.197.179.65) 4.613 ms
5 14.197.149.178 (14.197.149.178) 3.427 ms 168.160.254.222 (168.160.254.222) 2.749 ms 14.197.149.178 (14.197.149.178) 3.228 ms
6 182.61.252.218 (182.61.252.218) 18.512 ms 17.756 ms *
7 * * *
8 * * *
9 * * *
10 * * *
---------------------------
27 * * *
28 * * *
29 * * *
30 * * *
###设置每跳探测的数据,默认为3
代码语言:javascript复制$ traceroute -q 4 www.baidu.com
traceroute to www.baidu.com (182.61.200.6), 30 hops max, 60 byte packets
1 XiaoQiang (192.168.0.31) 0.555 ms 0.522 ms 0.500 ms 0.483 ms
2 113.44.160.1 (113.44.160.1) 3.214 ms 3.443 ms 3.371 ms 3.530 ms
3 218.241.253.125 (218.241.253.125) 3.971 ms 3.620 ms 3.812 ms 3.806 ms
4 14.197.177.1 (14.197.177.1) 154.594 ms 14.197.243.61 (14.197.243.61) 2.906 ms 14.197.178.41 (14.197.178.41) 3.611 ms 14.197.177.13 (14.197.177.13) 3.719 ms
5 14.197.250.170 (14.197.250.170) 3.639 ms 14.197.249.126 (14.197.249.126) 3.662 ms 14.197.249.134 (14.197.249.134) 3.580 ms 14.197.249.94 (14.197.249.94) 3.492 ms
6 * 182.61.252.218 (182.61.252.218) 4.830 ms * 182.61.252.220 (182.61.252.220) 5.265 ms
7 * * * *
8 * * * *
9 * * * *
10 * * * *
-----------------------------------------------
28 * * * *
29 * * * *
30 * * * *
绕过正常的路由表,直接发送到网络相连的主机
都是不可达
代码语言:javascript复制$ traceroute -r baidu.com
traceroute to baidu.com (39.156.69.79), 30 hops max, 60 byte packets
connect: Network is unreachable
$ traceroute -r lijinghua.club
traceroute to lijinghua.club (59.110.172.131), 30 hops max, 60 byte packets
connect: Network is unreachable
本地网络解析,miwifi.com 我的路由器地址
代码语言:javascript复制$ traceroute -r miwifi.com
traceroute to miwifi.com (192.168.0.31), 30 hops max, 60 byte packets
1 XiaoQiang (192.168.0.31) 0.724 ms 0.689 ms 0.648 ms
把对外发探测包的等待响应时间设置为3秒
代码语言:javascript复制$ time traceroute www.baidu.com
traceroute to www.baidu.com (220.181.38.149), 30 hops max, 60 byte packets
1 * * *
2 * 11.221.109.5 (11.221.109.5) 4.906 ms 11.221.109.69 (11.221.109.69) 5.527 ms
3 11.221.108.118 (11.221.108.118) 4.368 ms 11.221.109.130 (11.221.109.130) 4.625 ms 4.416 ms
4 10.255.100.37 (10.255.100.37) 0.602 ms 11.168.216.18 (11.168.216.18) 9.071 ms 11.168.216.26 (11.168.216.26) 0.794 ms
5 116.251.125.110 (116.251.125.110) 1.131 ms 116.251.117.90 (116.251.117.90) 2.144 ms 116.251.106.66 (116.251.106.66) 2.011 ms
6 123.56.34.5 (123.56.34.5) 1.999 ms 116.251.94.17 (116.251.94.17) 2.168 ms 116.251.112.181 (116.251.112.181) 2.237 ms
7 36.110.169.225 (36.110.169.225) 1.946 ms 36.110.169.93 (36.110.169.93) 1.915 ms 36.110.169.229 (36.110.169.229) 1.976 ms
8 36.110.244.197 (36.110.244.197) 4.297 ms 3.904 ms 36.110.244.49 (36.110.244.49) 3.605 ms
9 36.110.246.254 (36.110.246.254) 38.907 ms * 220.181.16.98 (220.181.16.98) 37.315 ms
10 220.181.17.18 (220.181.17.18) 4.042 ms 220.181.182.170 (220.181.182.170) 10.452 ms 220.181.17.146 (220.181.17.146) 3.381 ms
11 * * *
12 * * *
------------------------------------------------
27 * * *
28 * * *
29 * * *
30 * * *
real 0m21.064s
user 0m0.001s
sys 0m0.007s
$ time traceroute -w 3 www.baidu.com
traceroute to www.baidu.com (220.181.38.150), 30 hops max, 60 byte packets
1 * * *
2 * * *
3 11.221.109.130 (11.221.109.130) 4.070 ms 11.221.109.118 (11.221.109.118) 3.889 ms 11.221.108.54 (11.221.108.54) 4.473 ms
4 11.168.216.18 (11.168.216.18) 0.581 ms 11.168.216.2 (11.168.216.2) 0.554 ms 10.255.100.49 (10.255.100.49) 0.543 ms
5 116.251.106.62 (116.251.106.62) 1.332 ms 116.251.125.102 (116.251.125.102) 2.106 ms 116.251.106.54 (116.251.106.54) 1.250 ms
6 101.200.109.134 (101.200.109.134) 2.772 ms 116.251.94.13 (116.251.94.13) 3.355 ms 101.200.109.134 (101.200.109.134) 2.246 ms
7 36.110.169.101 (36.110.169.101) 2.275 ms 36.110.169.145 (36.110.169.145) 3.120 ms 2.720 ms
8 36.110.244.57 (36.110.244.57) 4.037 ms 36.110.244.193 (36.110.244.193) 4.837 ms 4.829 ms
9 * * *
10 220.181.182.174 (220.181.182.174) 3.977 ms 220.181.17.18 (220.181.17.18) 4.024 ms 220.181.182.166 (220.181.182.166) 3.973 ms
11 * * *
------------------------------------------------
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *
real 0m16.819s
user 0m0.006s
sys 0m0.000s
工作原理
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地址,三个包每次来回所花时间。