ping命令主要用于检测与另一台主机之间的网络连接是否可用。
它通过向目标主机发送数据包,并等待目标主机回应,可以测试网络响应的时间和丢包率。
ping命令是采用ICMP(internet control message protocol)传输协议,发出要求回应的信息,如果目标主机的网络没有问题,就会回应该信息,因而可以得知目标主机是否在线。
语法:ping [参数] [目标主机/ip地址]
参数说明:
-c:指定发送的数据包数量,例如 -c 4 表示发送 4 个数据包。
-i:指定每次发送数据包的间隔时间(秒),例如 -i 0.5 表示每 0.5 秒发送一次。
-w:设置发送数据包的等待时间上限,超出该时间后自动停止,例如 -w 5 表示等待 5 秒。
-s:指定每个数据包的大小(字节),默认是 56 字节。
-t:设置数据包的生存时间(TTL),指定路由跳数。
-q:安静模式,只显示开始和结束的统计数据,不显示每个数据包的详细信息。
-f:疯狂模式,快速发送数据包,用于测试网络承载能力,需谨慎使用。
-l:指定一次发送的数据包数量,通常用于负载测试。
-v:显示详细输出信息,用于调试。
-4:基于IPv4网络协议。
-6:基于IPv6网络协议。
[root@app01 ~]# ping 192.168.2.2PING 192.168.2.2 (192.168.2.2) 56(84) bytes of data.64 bytes from 192.168.2.2: icmp_seq=1 ttl=64 time=0.031 ms64 bytes from 192.168.2.2: icmp_seq=2 ttl=64 time=0.095 ms64 bytes from 192.168.2.2: icmp_seq=3 ttl=64 time=0.100 ms^C--- 192.168.2.2 ping statistics ---14 packets transmitted, 14 received, 0% packet loss, time 13080msrtt min/avg/max/mdev = 0.031/0.055/0.100/0.022 ms
如果不加“-c”参数,默认会一直ping下去,只能使用ctrl+c来终止ping的操作。
指定发2个数据包。如下:
[root@app01 ~]# ping -c 2 192.168.2.2PING 192.168.2.2 (192.168.2.2) 56(84) bytes of data.64 bytes from 192.168.2.2: icmp_seq=1 ttl=64 time=0.033 ms64 bytes from 192.168.2.2: icmp_seq=2 ttl=64 time=0.073 ms--- 192.168.2.2 ping statistics ---2 packets transmitted, 2 received, 0% packet loss, time 1003msrtt min/avg/max/mdev = 0.033/0.053/0.073/0.020 ms
发送2个请求包,每次间隔0.2s,最长等待时间为3s。
[root@app01 ~]# ping -c 2 -i 0.2 -w 3 192.168.2.2PING 192.168.2.2 (192.168.2.2) 56(84) bytes of data.64 bytes from 192.168.2.2: icmp_seq=1 ttl=64 time=0.046 ms64 bytes from 192.168.2.2: icmp_seq=2 ttl=64 time=0.060 ms--- 192.168.2.2 ping statistics ---2 packets transmitted, 2 received, 0% packet loss, time 200msrtt min/avg/max/mdev = 0.046/0.053/0.060/0.007 ms
[root@app01 ~]# ping -s 100 192.168.2.2PING 192.168.2.2 (192.168.2.2) 100(128) bytes of data.108 bytes from 192.168.2.2: icmp_seq=1 ttl=64 time=0.031 ms108 bytes from 192.168.2.2: icmp_seq=2 ttl=64 time=0.076 ms^C--- 192.168.2.2 ping statistics ---2 packets transmitted, 2 received, 0% packet loss, time 1007msrtt min/avg/max/mdev = 0.031/0.053/0.076/0.023 ms
[root@app01 ~]# ping -w 2 192.168.2.2PING 192.168.2.2 (192.168.2.2) 56(84) bytes of data.64 bytes from 192.168.2.2: icmp_seq=1 ttl=64 time=0.029 ms64 bytes from 192.168.2.2: icmp_seq=2 ttl=64 time=0.074 ms--- 192.168.2.2 ping statistics ---2 packets transmitted, 2 received, 0% packet loss, time 1013msrtt min/avg/max/mdev = 0.029/0.051/0.074/0.023 ms
超时间时的设置主要用于在网络环境不确定的情况下测试连通性使用。
ping命令的输出内容通常包含以下信息:
发送和接收的数据包数:显示测试期间发送了多少个数据包,接收了多少个,以及丢包率。如下图标红部分:
往返时间统计:显示最小、平均、最大和标准偏差等往返时间(以毫秒为单位)。如下图标红部分:
注意事项
1、ping使用的是ICMP协议,实际工作中有些防火墙或操作系统的特殊设置可能会阻止ICMP数据包,这样会导致ping命令无法正常工作。
2、疯狂模式(-f 参数)发包速度快,建议在安全的网络环境下使用,否则可能被视为攻击行为。