ping

向网络主机发送ICMP ECHO_REQUEST分组数据


语法格式

ping [-aAbBdfLnqrRvV] [-c count] [-i intvl] [-l preload] [-p pat] [-s size]
[-t ttl] [-w deadline] [-I if] [-M hint] [-Q tos] [-S sndbuf] [-T time]
[-W timeout] [hops] dest

命令简介

ping命令采用基于ICMP协议的ECHO_REQUEST数据报探测指定的主机和网关,期望获得一个ICMP ECHO_RESPONSE响应数据报。ECHO_REQUEST数据报具有一个IP和ICMP头信息,紧随其后的是一个timeval结构数据,最后是任意数量的填充字节,以装配成完整的分组数据。

其中,选用的参数hops是中间需要跨越的网关,dest是目标系统的主机名或IP地址。

ping命令主要用于测试网络的连通性,也可用于测试网络的性能和主机的响应能力。使用ping测试网络的连通性时,首先应测试本地系统,验证本地系统的网络接口是否已经启用,然后再测试本地网络中的主机,最后再测试其他目标主机的连通性。在测试过程中,ping命令会计算最小、最大以及平均的往返传输时间,统计丢失的分组数据。

当已经发送(或接收)指定数量的分组数据,或因收到SIGINT信号而终止运行时,ping命令将会给出一个简要的汇总信息,包括收发的分组数据数量,分组数据丢失率,用时,最小,最大以及平均的往返传输时间等。如果收到SIGQUIT信号,ping命令也会给出当前时刻的统计数据,然后继续进行测试。

如果指定了“-c”选项,且在发送指定数量的分组数据之后没有收到任何响应分组数据,ping命令将会终止执行,返回结束状态1。在同时指定“-c”与“-w”选项的情况下,如果在截止时间到达后仍未收到指定数量的分组数据,ping命令也会终止执行,返回结束状态1。

命令选项

-a  测试网络连通性时增加声音提示。

-A  自适应连通性测试。自动调节分组数据之间的时间间隔以适应网络通信的往返响应时间,从而避免网络中出现一个或多个(如果指定了“-l”选项)以上的未响应的探测分组数据。对于普通用户而言,最小的时间间隔是200毫秒。在往返传输时间较低的网络中,这种测试方式相当于洪水式测试方式。

-b  允许测试广播地址。

-B  禁止ping修改探测分组数据的源地址(绑定到ping开始运行时选用的地址)。

-c count  在发送指定数量count的ECHO_REQUEST分组数据之后停止。与“-w”选项一起使用时,ping命令将会等待指定数量count的ECHO_REPLY分组数据,直至超时。

-d  设置当前所用套接字的SO_DEBUG选项。实际上,Linux内核并未使用这个套接字选项。

-f  洪水式性能测试模式。对于发送的每一个ECHO_REQUEST分组数据,输出一个句点“.”字符。每当收到一个ECHO_REPLY响应时,输出一个退格字符。这将提供一种快速显示方式,以便观察丢失多少分组数据。如果没有指定时间间隔,ping将会把时间间隔设置成0,采取一旦得到回应立即输出分组数据,或每秒连续执行100次测试的方式之一(哪一种方式快或多即选用哪一种方式)。只有超级用户才能使用这个选项,以0间隔的方式执行网络性能的压力测试。

-i intvl  指定发送每个分组数据之间的间隔时间(单位秒)。默认的间隔时间是等待1秒。在“洪水式性能测试模式”中,没有等待时间。注意,只有超级用户才能把间隔时间设置成小于0.2秒的数值。

-I if  把源地址设置成指定的网络接口地址。接口参数可以是数字形式的IP地址,也可以是设备名。当测试IPv6本地链路地址时,要求使用这个选项。

-l preload  如果指定了preload,ping将会发送指定数量的分组数据,而不是等待对方的回应。注意,只有超级用户才能选用大于3的preload

-L  禁止环回广播分组数据。仅当ping命令的目标对象是广播地址时才能使用这个选项。

-M hint  选择路径MTU发现策略(Path MTU Discovery)。参数hint可以是do(禁止分段)、want(执行PMTU发现。当分组数据较大时,可以分段)或dont(禁止设置DF标志)。

-n  显示IP地址即可,无须把IP地址解释成符号名字。

-p pat  指定最多16个填充字节,补充发送的分组数据。当需要诊断与数据有关的网络问题时,这个选项才是有用的。例如,“-p ff”选项表示在发送的分组数据后面附加全1的填充字节。

-q  安静输出模式。除了启动与完成时的汇总数据,禁止输出其他任何信息。

-Q tos  设置ICMP数据报中的服务质量标志位。指定的参数tos可以是十进制或十六进制的数值。按照RFC1349的定义,其中0号位是保留的 (当前重新定义为拥塞控制),1~4号位是服务类型,5~7号位是优先级。可以设置的服务类型是最小代价(0x02)、可靠性(0x04)、流通量(0x08)与低延迟(0x10)等。注意,不能同时设置多个服务类型标志位。优先级的范围是0x20~0xe0。注意,只有超级用户才能设置较高的优先级值。

-r  绕过常规的路由表,直接向网络接口连接的主机发送分组数据。如果目标主机并非本地网络中直连的主机,返回一条错误信息。这个选项主要用于测试通过网络接口直达(无须路由)的本地网络主机(此时也需使用“-I”选项)。

-R  记录路由。在ECHO_REQUEST分组数据中增加一个RECORD_ROUTE选项,显示返回分组数据中的路由缓冲区。注意,IP头信息最多只能提供9个路由。而且,许多主机会忽略或抛弃这个选项。

-s size  指定发送的数据字节的数量,默认的字节数是56,与8字节的ICMP头信息组合后,构成64字节的ICMP分组数据。

-S sndbuf  设置套接字的发送缓冲区sndbuf。如果未指定,选用的发送缓冲区不超过一个分组数据的大小。

-t ttl  设置IP的生存时间(TTL)。

-T time  设置特殊的IP时间选项。其中指定的time参数可以是tsonly(仅含时间信息)、tsandaddr(时间加地址信息)或tsprespec hosts(时间加预定的网关)。

-v  详细显示模式。

-V  显示命令的版本信息,然后退出。

-w deadline  指定ping命令终止执行的超时值(单位为秒),不管之前发送或接收了多少分组数据。在此情况下,ping不会在发送指定数量(参见“-c”选项)的分组数据之后即停止执行,而是等待deadline规定的超时值,收到指定数量(参见“-c”选项)的响应信息,或收到网络错误的通知信息。

-W timeout  指定等待响应的时间(单位为秒)。这个选项仅影响未获得任何响应时的超时,否则,ping将会等待两个往返传输的时间。

应用实例

1. 测试本地系统与远程主机之间的网络连通性,以及远程主机是否正在运行。

$ ping iscas
PING iscas (192.168.90.100) 56(84) bytes of data.
64 bytes from iscas (192.168.90.100): icmp_seq=1 ttl=64 time=0.048 ms
64 bytes from iscas (192.168.90.100): icmp_seq=2 ttl=64 time=0.033 ms
64 bytes from iscas (192.168.90.100): icmp_seq=3 ttl=64 time=0.037 ms
^C
--- iscas ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2275ms
rtt min/avg/max/mdev = 0.033/0.039/0.048/0.008 ms
$

2. 利用“-A”选项,不仅可以确定本地系统与远程主机之间的连通性,还可以检测两个主机之间的网络通信是否丢失了分组数据(参见输出数据的“packet loss”字段)。“-A”选项表示以实际的往返响应时间为间隔,向指定的远程主机连续发送分组数据,直至使用中断键终止命令的执行。

$ ping -nA www.google.com.hk
PING www-g-com-hk-chn.l.google.com (72.14.203.147) 56(84) bytes of data.
64 bytes from 72.14.203.147: icmp_seq=1 ttl=49 time=159 ms
64 bytes from 72.14.203.147: icmp_seq=2 ttl=49 time=153 ms
64 bytes from 72.14.203.147: icmp_seq=3 ttl=49 time=157 ms
^C
--- www-g-com-hk-chn.l.google.com ping statistics ---
4 packets transmitted, 3 received, 25% packet loss, time 688ms
rtt min/avg/max/mdev = 153.981/156.728/159.074/2.123 ms, ipg/ewma 229.613/158.274 ms
$

3. 利用“-f”选项,可以连续不断地向远程主机发送数据报信息,完全不必顾及是否收到响应信息。ping命令每发送一个ECHO_REQUEST信息,即在屏幕上输出一个句点“.”;本地系统每收到一个ECHO_REPLY响应信息,即在屏幕上输出一个退格符,删除一个句点“.”。屏幕上的句点“.”多少大致可以说明远程主机的响应能力。按下Ctrl-C组合键后输出的“rtt min/avg/max/mdev”字段能够给出更准确的统计数据,说明往返传输时间的最小、平均以及最大时间值(毫秒),由此可以判断网络与主机的数据传输性能。

# ping -f www.redhat.com
PING e86.b.akamaiedge.net (184.87.144.112) 56(84) bytes of data.
................^C
--- e86.b.akamaiedge.net ping statistics ---
146 packets transmitted, 130 received, 10% packet loss, time 2097ms
rtt min/avg/max/mdev = 232.462/233.270/234.408/0.460 ms, pipe 18, ipg/ewma 14.463/233.305 ms
#

索引:A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z