1、命令简介
ping:用于测试网络连接和诊断网络问题的常用工具。它发送 ICMP 回显请求到目标主机,并等待目标主机发送回 ICMP 回显应答。
2、命令语法
ping [-aAbBdDfhLnOqrRUvV] [-c count] [-i interval] [-I interface] [-m mark] [-M pmtudisc_option] [-l preload] [-p pattern] [-Q tos] [-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp_option] [-w deadline] [-W timeout] [hop1 ...] destination
3、命令描述
ping
使用 ICMP 协议的强制性 ECHO_REQUEST
数据报来引发主机或网关发送 ICMP ECHO_RESPONSE
。ECHO_REQUEST
数据报包括 IP 头和 ICMP 头,然后是一个 struct timeval,接着是一些用于填充数据包的任意数量的 "pad" 字节。
ping
命令可以帮助执行多种操作。它允许测试您的互联网连接。它可以检查远程机器是否在线。它还可以分析是否存在网络问题,比如丢包或高延迟。
4、命令选项
选项 | 描述 |
-a | Audible ping. |
-A | 自适应ping,根据ping包往返时间确定ping的速度; |
-b | 允许ping一个广播地址; |
-B | 不允许ping改变包头的源地址; |
-c count | ping指定次数后停止ping; |
-d | 使用Socket的SO_DEBUG功能; |
-F flow_label | 为ping回显请求分配一个20位的“flow label”, 如果未设置,内核会为ping随机分配; |
-f | 极限检测,快速连续ping一台主机,ping的速度达到100次每秒; |
-i interval | 设定间隔几秒发送一个ping包,默认一秒ping一次; |
-I interface | 指定网卡接口、或指定的本机地址送出数据包; |
-l preload | 设置在送出要求信息之前,先行发出的数据包; |
-L | 抑制组播报文回送,只适用于ping 的目标为一个组播地址 |
-n | 不要将ip地址转换成主机名; |
-p pattern | 指定填充ping数据包的十六进制内容, 在诊断与数据有关的网络错误时这个选项就非常有用, 如:“-p ff”; |
-q | 不显示任何传送封包的信息,只显示最后的结果 |
-Q tos | 设置Qos(Quality of Service),它是ICMP数据报相关位; 可以是十进制或十六进制数,详见rfc1349和rfc2474文档; |
-R | 记录ping的路由过程(IPv4 only); 注意:由于IP头的限制,最多只能记录9个路由,其他会被忽略; |
-r | 忽略正常的路由表,直接将数据包送到远端主机上, 通常是查看本机的网络接口是否有问题;如果主机不直接连接的网络上, 则返回一个错误。 |
-S sndbuf | 设置套接字sndbuf。 如果未指定, 则缓冲不超过一个数据包。 |
-s packetsize | 指定每次ping发送的数据字节数,默认为“56字节”+“28字节”的ICMP头,一共是84字节; 包头+内容不能大于65535,所以最大值为65507(linux:65507, windows:65500); |
-t ttl | 设置TTL(Time To Live)为指定的值。该字段指定IP包被路由器丢弃之前允许通过的最大网段数; |
-T timestamp_option | 设置IP timestamp选项,可以是下面的任何一个: 'tsonly' (only timestamps) 'tsandaddr' (timestamps and addresses) 'tsprespec host1 [host2 [host3]]' (timestamp prespecified hops). |
-M hint | 设置MTU(最大传输单元)分片策略。 可设置为: 'do':禁止分片,即使包被丢弃; 'want':当包过大时分片; 'dont':不设置分片标志(DF flag); |
-m mark | 设置mark; |
-v | 使ping处于verbose方式, 它要ping命令除了打印ECHO-RESPONSE数据包之外, 还打印其它所有返回的ICMP数据包; |
-U | 打印完整的用户到用户延迟。 默认情况下,ping打印网络往返时间。 |
-W timeout | 以毫秒为单位设置ping的超时时间; |
-w deadline | deadline; |
5、使用示例
1)可以运行ping命令检查目标主机
也可以使用IP地址代替域名
ping www.baidu.com
2)要强制ping命令使用IPv4地址,我们可以使用-4选项,或使用其别名ping4。此选项在较旧的版本上不受支持
ping -4 baidu.com
3)要定义要发送的Echo请求的数量,ping将退出,我们可以使用-c选项
ping -c 5 baidu.com
4)默认情况下,每个ping请求之间的间隔为一秒。我们可以使用-i选项增加或减少该时间
ping -i .5 baidu.com
5)可以使用-s选项定义负载的数据包大小,以字节为单位,这将导致总数据包大小为所提供的值加上ICMP头的8个额外字节
ping -s 60 baidu.com
6)可以使用-q选项抑制输出显示(称为静默选项)
只在结束时先打印带有常规ping信息的一行,然后提供摘要。
ping -q google.com
7)要为ping命令输出指定一个最后期限
可以使用-w选项指定一个最后期限。此选项指定一个超时时间,以秒为单位。
ping -i 0.5 -w 3 baidu.com
8)ping命令的默认行为是通过默认路由发送ICMP包
如果我们的机器上有多个接口,我们可以使用-I
选项指定源接口。
ping -I enp0s25 baidu.com