下面是五个Linux命令,它们可以验证连接速度、分析延迟以及测试是否可以访问其他系统。
有很多工具可以帮助您在Linux命令行上测试连接性。在本文中,我们将研究一系列命令,这些命令有助于估计连接速度、测试是否可以访问其他系统、分析连接延迟以及确定特定服务是否可用。
发出砰的声响
ping命令是执行基本连接测试的最简单和最常用的命令。它发出的数据包称为echo requests,是请求响应的数据包。该命令查找响应并显示响应以及每个响应所用的时间,然后报告响应的请求百分比。
响应时间在很大程度上取决于请求需要穿越多少路由器,以及您的网络是否拥塞。ping本地系统可能是这样的。请注意,每个响应所需的毫秒数很小,数据包丢失率为0%。
$ ping 192.168.0.11
PING 192.168.0.11 (192.168.0.11) 56(84) bytes of data.
64 bytes from 192.168.0.11: icmp_seq=1 ttl=64 time=4.36 ms
64 bytes from 192.168.0.11: icmp_seq=2 ttl=64 time=5.86 ms
64 bytes from 192.168.0.11: icmp_seq=3 ttl=64 time=2.87 ms
^C
--- 192.168.0.11 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 2.867/4.361/5.859/1.221 ms
在Linux系统上,ping将继续,直到您键入^c停止它们。包括Windows在内的一些系统发出四次ping,然后自行停止。远程系统需要相当长的时间来响应。零数据包丢失始终是一个好迹象,即使在ping远程系统时,除非出现问题,否则通常情况下也应该看到。
ping命令提供了检查家庭网络的网络连接的简单方法。将请求发送到可公开访问的系统,您应该预期0%的数据包丢失。 如果遇到问题,ping命令可能会显示严重的数据包丢失。
$ ping 180.65.0.22
PING 180.65.0.22 (180.65.0.22) 56(84) bytes of data.
64 bytes from 180.65.0.22: icmp_seq=1 ttl=46 time=362 ms
64 bytes from 180.65.0.22: icmp_seq=2 ttl=46 time=305 ms
64 bytes from 180.65.0.22: icmp_seq=3 ttl=46 time=276 ms
64 bytes from 180.65.0.22: icmp_seq=4 ttl=46 time=257 ms
^C
--- 180.65.0.22 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3002ms
rtt min/avg/max/mdev = 257.172/300.119/362.431/39.775 ms
示踪路线
Traceroute是一个复杂得多的命令,因为它运行一系列检查来查看路由器之间的每个跃点需要多长时间,并将其报告回来。如果整个检查需要很长时间,可能是一个或两个跃点拥挤。如果报告的结果降为星号序列,则到达的最后一个路由器无法响应所使用的数据包类型(Linux系统上默认为UDP)。
traceroute命令使用了一种聪明的技术来计时每个跃点。它使用一个生存时间(TTL)设置,该设置随每个跃点递减,以确保路由上的每个路由器在某个时刻都会发回错误消息。这允许traceroute 报告每一跳之间的持续时间。
下面是一个使用traceroute访问本地系统的示例(单跳和快速响应):
$ traceroute 192.168.0.11
traceroute to 192.168.0.11 (192.168.0.11), 30 hops max, 60 byte packets
1 192.168.0.11 (192.168.0.11) 9.228 ms 12.797 ms 12.782 ms
下一个traceroute命令试图到达远程系统,但无法报告每个跃点(显示星号的跃点),因为某些跃点的路由器不响应所使用的数据包类型。这并不罕见。
traceroute的默认最大跃点数为30。请注意,此设置显示在输出的第一行中。可以使用-m参数(例如traceroute-m 50 distance.org)更改它。
$ traceroute www.amazon.com
traceroute to www.amazon.com (99.84.218.165), 30 hops max, 60 byte packets
1 router (192.168.0.1) 1.586 ms 3.842 ms 4.074 ms
2 10.226.32.1 (10.226.32.1) 27.342 ms 28.485 ms 29.529 ms
3 10.17.1.25 (10.17.1.25) 30.769 ms 31.584 ms 32.379 ms
4 10.17.0.221 (10.17.0.221) 33.126 ms 34.390 ms 35.284 ms
5 10.17.0.226 (10.17.0.226) 37.000 ms 38.837 ms 40.808 ms
6 204.111.0.145 (204.111.0.145) 44.083 ms 42.671 ms 42.582 ms
7 99.82.178.164 (99.82.178.164) 44.254 ms 30.422 ms 31.666 ms
8 * * *
9 * * *
10 * * *
11 52.93.40.225 (52.93.40.225) 41.548 ms 52.93.40.223 (52.93.40.223) 41.808 ms 52.93.40.225 (52.93.40.225) 43.326 ms
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 server-99-84-218-165.iad79.r.cloudfront.net (99.84.218.165) 44.862 ms 44.746 ms 44.713 ms
ncat
ncat命令是一个多功能的网络实用程序 从命令行跨网络写入数据,但按如下所示的形式,允许您简单地确定是否可以连接到特定服务。它最初是为nmap编写的 (网络映射器)。
通过向远程系统上的特定端口发送零字节(z设置),我们可以确定相关服务是否可用,而无需实际使用连接。
$ nc -z -v 192.168.0.11 22
Ncat: Version 7.80 ( https:/map.orgcat )
Ncat: Connected to 192.168.0.11:22.
Ncat: 0 bytes sent, 0 bytes received in 0.02 seconds.
上面的命令告诉我们ssh正在指定的系统上响应,但不尝试登录或运行远程命令。检查同一系统上的网站会发现端口80的情况正好相反(即没有运行web服务器)。
$ nc -z -v 192.168.0.11 80
Ncat: Version 7.80 ( https:/map.orgcat )
Ncat: Connection refused.
当我们查看亚马逊网站时,我们得到了一个可以预见的不同反应:
$ nc -z -v 99.84.218.165 80
Ncat: Version 7.80 ( https:/map.orgcat )
Ncat: Connected to 99.84.218.165:80.
Ncat: 0 bytes sent, 0 bytes received in 0.48 seconds.
正如您可能注意到的,可以使用nc或ncat调用ncat命令。
速度测试
speedtest工具测试您与Internet提供商的连接速度。本指南中的FCC建议12-25mbit/s大约是家庭使用的平均值。
请注意,上传速度比下载速度慢很多并不少见。互联网提供商明白,大多数人下载的数据比上传的要多得多。速度测试 工具将突出显示任何差异。在下面的测试中,下载速度几乎是上传速度的9倍。
$ speedtest
Speedtest by Ookla
Server: Winchester Wireless - Winchester, VA (id = 21859)
ISP: Shentel Communications
Latency: 25.86 ms (0.96 ms jitter)
Download: 10.34 Mbps (data used: 10.7 MB)
Upload: 1.00 Mbps (data used: 1.1 MB)
Packet Loss: 0.0%
Result URL: https://www.speedtest.net/result/c/bb2e002a-d686-4f9c-8f36-f93fbcc9b752
命令结果在不同的测试中会有所不同。
您也可以通过浏览器使用speedtest,方法是 speedtest.net(注:下载的免费speedtest副本仅供个人非商业用途。有关详细信息,请参阅EULA(使用协议)
快速的
您还可以安装一个名为fast的工具,它会多次检查您的下载速度,然后报告平均值。它只显示下载速度并使用Netflix速度测试服务。
$ fast
$ 10.08 Mbps
可以使用以下命令安装fast工具:
$ wget https://github.com/ddo/fast/releases/download/v0.0.4/fast_linux_amd64
$ sudo install fast_linux_amd64 /usr/local/bin/fast
$ which fast
/usr/local/bin/fast
网猪
nethogs命令采用了与上述命令完全不同的方法。它按进程对带宽使用情况进行分组,以帮助您确定可能导致网络流量减慢的特定进程。换句话说,它可以帮助你精确定位“网猪”,所以它的名字很贴切。
NetHogs version 0.8.6
PID USER PROGRAM DEV SENT RECEIVED
127832 nemo /usr/lib/firefox/firefox enp0s2 11.120 432.207 KB/sec
413216 shs sshd: shs@pts/1 enp0s2 0.246 0.059 KB/sec
696 root /usr/sbin/NetworkManager enp0s2 0.000 0.000 KB/sec
? root unknown TCP 0.000 0.000 KB/sec
TOTAL 0.246 432.266 KB/sec
在显示的输出中,使用大部分带宽的过程非常明显。
总结
有许多工具可用于在Linux系统上测试连接性和连接速度。这篇文章中提到的只是其中的一部分,但是代表了一系列既易于使用又信息丰富的工具。