日期:2014-05-16  浏览次数:20588 次

我使用过的Linux命令之ping - 测试与目标主机的连通性

我使用过的Linux命令之ping - 测试与目标主机的连通性

本文链接:http://codingstandards.iteye.com/blog/1125766 ? (转载请注明出处)

用途说明

ping命令是常用的网络命令,它通常用来测试与目标主机的连通性,我们经常会说“ping一下某机器,看是不是开着”、不能打开网页时会说“你先ping网关地址192.168.1.1试试”。它通过发送ICMP ECHO_REQUEST数据包到网络主机(send ICMP ECHO_REQUEST to network hosts),并显示响应情况,这样我们就可以根据它输出的信息来确定目标主机是否可访问(但这不是绝对的)。有些服务器为了防止通过ping探测到,通过防火墙设置了禁止ping或者在内核参数中禁止ping,这样就不能通过ping确定该主机是否还处于开启状态。

man ping 写道
ping uses the ICMP protocol’s mandatory ECHO_REQUEST datagram to elicit an ICMP ECHO_RESPONSE from a host or
gateway. ECHO_REQUEST datagrams (‘‘pings’’) have an IP and ICMP header, followed by a struct timeval and then
an arbitrary number of ‘‘pad’’ bytes used to fill out the packet.

?

上面引文中 elicit? 引出? http://www.iciba.com/elicit/

?

ping命令用于:
  * 确定网络和各外部主机的状态。
  * 跟踪和隔离硬件和软件问题。
  * 测试、评估和管理网络。

?

维基百科上关于ping的说明

ping - 维基百科,自由的百科全书 写道
ping是:一个电脑网络工具,用来测试特定主机能否通过IP到达。ping的运作原理是:向目标主机传出一个ICMPecho要求分组,等待接收echo回应分组。程序会按时间和反应成功的次数,估计失去分组率(丢包率)和分组来回时间(网络时延)(Round-trip delay time)。

1983年12月,Mike Muuss写了这个程序,在IP网络出问题时方便找出其根源。因为这个程序的运作和潜水艇的声纳相似,他便用声纳的声音来为程序取名。David L. Mills曾提出另一个取名:Packet Internet Grouper/Gopher(后者指地鼠)。

网络管理员之间通常把ping用作动词,如“ping一下计算机X,看他是否开着。”
?

根据ping输出的ttl值,可以大体确定目标系统的操作系统类型:

TTL=32 Windows 9x/Me
TTL=64 LINUX
TTL=128 Windows 200x/XP
TTL=255 Unix

?

常用参数

格式:ping {IP}

格式:ping {HOST}

测试与指定ip地址{IP}或者主机名{HOST}的目标主机的连通性。按Ctrl+C终止,否则会一直执行下去。

友情提示:在Windows的cmd中要想达到同样的效果,要加上-t参数,如 ping -t 192.168.1.103

?

格式:ping -b {BROADCAST-ADDRESS}

ping广播地址(Allow pinging a broadcast address)。可以大体确定本网络中有哪些主机能访问。

广播地址{BROADCAST-ADDRESS}的形式如:192.168.1.255,192.168.255.255。

?

格式:ping -c {n} {IP_OR_HOST}

增加-c参数用于指定次数{n},这样在发送了{n}次ICMP数据包后,如果收到了响应或者超时就终止执行。

?

格式:ping -i {INTERVAL} {IP_OR_HOST}

增加-i参数用于指定发送ICMP数据包的时间间隔,以秒为单位,可以为小数,普通用户最小为0.2秒,只有root用户才能指定比0.2秒小的间隔。如果不指定此参数,则默认的时间间隔是1秒。

man ping 写道
Wait interval seconds between sending each packet. The default is to wait for one second between each
packet normally, or not to wait in flood mode. Only super-user may set interval to values less 0.2 sec-
onds.

?

格式:ping -f {IP_OR_HOST}

指定flood-ping,只有root用户才能干。flood-ping,顾名思义,就是像洪水一样的发送ICMP数据包。Ping淹没是一种Ping广播风暴,淹没整个目标系统,以至于该系统不能响应合法的通信。

man 写道
-f Flood ping. For every ECHO_REQUEST sent a period ‘‘.’’ is printed, while for ever ECHO_REPLY received a
backspace is printed. This provides a rapid display of how many packets are being dropped. If interval
is not given, it sets interval to zero and outputs packets as fast as they come back or one hundred
times per second, whichever is more. Only the super-user may use this option with zero interval.
?

?

使用示例

示例一 ping得通的例子

[root@jfht ~]# ping 192.168.1.181
PING 192.168.1.181 (192.168.1.181) 56(84) bytes of data.
64 bytes from 192.168.1.181: icmp_seq=1 ttl=64 time=0.235 ms
64 bytes from 192.168.1.181: icmp_seq=2 ttl=64 time=0.127 ms
64 bytes from 192.168.1.181: icmp_seq=3 ttl=64 time=0.126 ms

--- 192.168.1.181 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.126/0.162/0.235/0.053 ms
[root@jfht ~]#

?

示例二 ping不通的例子

[root@jfht ~]# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 5