一、ping命令简介
ping命令是用于测试主机之间网络连通性的命令。它通过向另一台主机发送ICMP(Internet控制报文协议)回声请求报文并接收回声应答报文来测试主机之间的连通性。如果主机无法收到回声应答报文,则说明主机之间存在通信故障。
该命令可以用于测试主机到目标主机之间的连通性,并返回有关目标主机的信息,如目标主机的IP地址、响应时间等。
二、ping命令的基本用法
1. 检测目标主机是否可达
使用ping命令可以测试目标主机是否可达,即是否与目标主机之间存在通信故障。语法格式如下:
ping [选项] 目标主机
在Linux系统中,可以通过ping命令来检查与其他主机之间的通信情况,如检查是否可以ping通外网DNS服务器(如114.114.114.114)
$ ping 114.114.114.114
执行上述命令后,系统会向目标主机发送四个ICMP回声请求报文,并分别接收回声应答报文。如果目标主机已经禁止ICMP协议,那么将无法得到相应的回声应答报文,这时ping命令就会显示“Destination Host Unreachable”等信息。
2. 指定包的大小
使用ping命令还可以指定发送ICMP回声请求报文的大小。语法格式如下:
ping -s 包大小 目标主机
其中,“-s”为选项,“包大小”为指定的包大小,单位为byte。
3. 指定发送包的个数
使用ping命令还可以指定发送的ICMP回声请求报文的个数。语法格式如下:
ping -c 发送次数 目标主机
其中,“-c”为选项,“发送次数”为指定的发送次数,默认值为4次。例如:
$ ping -c 3 114.114.114.114
执行上述命令后,将只会发送3个ICMP回声请求报文,而不是默认的4个。
4. 指定发送包的时间间隔
使用ping命令还可以指定发送的ICMP回声请求报文的时间间隔。语法格式如下:
ping -i 时间间隔 目标主机
其中,“-i”为选项,“时间间隔”为指定的时间间隔,单位为秒。例如:
$ ping -i 2 114.114.114.114
执行上述命令后,每个发送的ICMP回声请求报文之间的时间间隔为2秒。
三、ping命令返回的信息
当执行ping命令并成功发送了ICMP回声请求报文之后,如果目标主机成功接收到请求报文并回应了回声应答报文,则ping程序会返回一些有关目标主机的信息,包括目标主机的IP地址、响应时间等。
1. 目标主机的IP地址
ping命令返回的第一行信息包括目标主机的IP地址:
PING 目标主机的IP地址 (目标主机的网络名称) 数据包的大小 ...
其中,“目标主机的IP地址”即为目标主机的实际IP地址。
2. 数据包的大小
ping命令返回的第一行信息中还包括发送的数据包大小:
PING 目标主机的IP地址 (目标主机的网络名称) 数据包的大小 ...
其中,“数据包的大小”即为发送的ICMP回声请求报文的大小,单位为byte。
3. TTL值
ping命令返回的信息中还包括每个回声请求报文的TTL值:
64 bytes from 目标主机的IP地址 (目标主机的网络名称): icmp_seq=1 ttl=64 time=0.134 ms
其中,“ttl”即为每个回声请求报文的TTL值。TTL值是指回声请求报文在网络传输过程中可被转发的最大跳数。当一个ICMP回声请求到达一个网络节点时,该节点的TTL值会减1。当TTL值到达0时,该节点会将请求报文丢弃,并向源主机发送ICMP“time exceeded”报文。
4. 响应时间
ping命令返回的信息中还包括每个回声请求报文的响应时间:
64 bytes from 目标主机的IP地址 (目标主机的网络名称): icmp_seq=1 ttl=64 time=0.134 ms
其中,“time”即为回声请求报文的响应时间。当一个ICMP回声请求到达目标主机时,目标主机会发送一个回声应答报文,该报文的TTL值与请求报文相同,而且也有一个时间戳,表示目标主机接收请求报文的时间。
四、ping命令选项
除了上述基本用法外,ping命令还支持以下选项。
1. -t,Ping目标主机直到被终止
该选项表示将在目标主机不可达时,一直发送ICMP回声请求报文,直到用户手动停止ping命令。语法格式如下:
ping -t 目标主机
例如,执行如下命令:
$ ping -t www.baidu.com
则系统将不断发送ICMP回声请求报文,直到手动停止ping命令。
2. -l,Used for packetsize
该选项用于指定发送ICMP回声请求报文的大小。语法格式如下:
ping -l 数据包的大小 目标主机
例如,执行如下命令:
$ ping -l 1024 www.baidu.com
则系统将发送1024byte大小的ICMP回声请求报文。
3. -f,Set ‘Don’t Fragment’ bit
该选项用于在发送ICMP回声请求报文时设置“不分段”标志位。当禁止 IP 分组的“不分段”标志位设置为 1 时,如果一个 IP 分组的总长度超过了中间某个路由器的 MTU,就不能进行分段,分组就会被丢弃。
$ ping -f www.baidu.com
注意:使用该选项需要具备管理员权限。
4. -i,Wait 时间间隔
该选项用于指定发送ICMP回声请求报文的时间间隔,单位为秒。语法格式如下:
ping -i 时间间隔 目标主机
例如,执行如下命令:
$ ping -i 5 www.baidu.com
则系统将会发送间隔为5秒的ICMP回声请求报文。
5. -n,Ping number of times
该选项用于指定发送ICMP回声请求报文的次数,单位为次。语法格式如下:
ping -n 发送次数 目标主机
例如,执行如下命令:
$ ping -n 3 www.baidu.com
则系统将会发送3个ICMP回声请求报文。
6. -r,trace round-trip path
该选项用于在从一个网络到另一个网络进行测试时报告路径上的名称和MTU大小。语法格式如下:
ping -r 目标主机
例如,执行如下命令:
$ ping -r www.baidu.com
则系统将会返回目标主机所在目录的路径,以及中间网络设备的MTU值。
7. -s,Set packet size
该选项用于指定发送ICMP回声请求报文的大小,单位为byte。语法格式如下:
ping -s 数据包的大小 目标主机
例如,执行如下命令:
$ ping -s 1024 www.baidu.com
则系统将发送1024byte大小的ICMP回声请求报文。
8. -V,display version informations.
该选项用于显示ping程序的版本信息。语法格式如下:
ping -V
9. -w,Wait timeout milliseconds
该选项用于指定ping命令等待回应的超时时间,单位为ms。如果已经发送了一个回声请求报文,但目标主机在规定的时间内仍未响应相应的回声应答报文,则会显示“Request timed out”等信息。语法格式如下:
ping -w 超时时间 目标主机
例如,执行如下命令,将会等待每个回声请求报文的响应时间为5000ms:
$ ping -w 5000 www.baidu.com
五、总结
ping命令是一个非常实用的网络工具,可以用于检测主机之间的网络连通性,以及获取目标主机的IP地址、响应时间等有关信息。在使用该命令时,需要注意一些选项的设置,以便得到准确的测试结果。