ping 网络连通性测试
在Linux或Windows上都存在一个ping
命令,它可以基于ICMP协议来测试本机和目标IP主机之间的网络是否连通,这篇笔记记录Linux下ping
命令的用法。
ping的原理
实际上,ping
是通过ICMP协议的ICMP ECHO
和ICMP REPLY
数据包实现的,如果一台主机无法ping
通,大部分情况是网络不通,此外也有可能是该主机拒绝发ICMP REPLY
,这通常是出于某种安全需求,避免自己遭到攻击或者被探测到。
使用ping命令
ping
命令后面可以加上域名或主机IP,如果接的是域名,它会自动通过DNS协议转换成一个可用的IP,下面是一个使用ping
命令的例子。
ping www.bing.com
执行命令后,输出内容可能如下。
PING china.bing123.com (202.89.233.101) 56(84) bytes of data.
64 bytes from 202.89.233.101: icmp_seq=1 ttl=116 time=25.3 ms
64 bytes from 202.89.233.101: icmp_seq=2 ttl=116 time=25.8 ms
64 bytes from 202.89.233.101: icmp_seq=3 ttl=116 time=23.6 ms
64 bytes from 202.89.233.101: icmp_seq=4 ttl=116 time=23.4 ms
^C
--- china.bing123.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3131ms
rtt min/avg/max/mdev = 23.416/24.519/25.792/1.031 ms
我们一共向目标主机发送了4个数据包,验证网络确实联通后,我们使用CTRL+C
结束了这次探测。根据输出结果,我们可以看到我们电脑和目标主机之间的一些网络信息。TTL值是数据包还能经过的最大路由数,time
参数其实是RTT,即探测时计量到的往返时间,单位是毫秒。
ping常用参数
发送次数和间隔
有时我们需要设置ping
命令的发送次数和时间间隔,这需要用到-c
和-i
参数,下面例子我们总共发送4个数据包,间隔时间为1秒。
ping -c 4 -i 1 www.bing.com
对于发送次数,Linux下如果不指定会持续ping
直到用户按下CTRL+C
终止,而时间间隔默认值就是1秒。
使用IPv6
ping
命令默认处理IPv4地址,即使目标是一个域名也仅进行IPv4解析。如果需要使用IPv6,可以添加-6
参数,下面是一个例子。
ping -6 www.bing.com
如果你使用-6
参数后遇到Address family for hostname not supported
错误,可能是你的主机未启用IPv6或网络不支持IPv6。
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。