« Back
read.

Understanding the Ping Command

Ping简单来说就是检查测试网络是否连通,它是检测设备可访问性最常用的工具。它使用ICMP(Internet Control Message Protocol)中的 Echo 信息来决定:

1 . Whether a remote host is active or inactive.    远程主机是否存活。
2.  The round-trip delay in communicating with the host.   与远程主机通信的往返延迟。
3.  Packet loss.  数据丢包。
 

ping 命令首先发送一个 echo request 包到目的地址,然后等待一个 echo reply 。如何才是 ping 成功,或者说连通性正常呢?

1.  echo request 包要到达目的地;
2.  目的地要在有效时间内(超时之前)返回一个echo reply 给源。(思科路由器默认超时时间为2秒)
 

ping ttl ,TTL: Time to Live,意思就是生存时间,TTL 是由发送主机设置的,以防止数据包不断在 IP 网络上永不终止地循环,转发 IP 数据包时,要求每一跳至少将 TTL 减小 1。ping使用TTL值以尝试到达给定的主机或跟踪到目的主机的路由。通常情况下,windows系统的TTL值为128,linux系统的TTL值为64,Solaris的TTL值为255。
 

ICMP 常用类型

icmp type

ICMP type=8, code=0    代表 echo message 。

ICMP type=0, code=0    代表 echo relpy message 。

 

ping output

ping output

!   代表收到响应

.   代表等待回复时超时

U  目标不可达 收到错误PDU(协议数据单元)

Q  目标处理繁忙

M  不能分片

?   未知数据包类型

&  包生存周期超出

 

ping 不通的原因很多,实际中结合 ping 命令以及 debug ip packet detail 或 debug ip icmp 等调试命令具体判断:

1.  可能是路由问题(unroutable)引起的 ping .....  ;

2.  可能是 U.U.U ,代表发出的数据包在去往目的地的途中被丢弃,丢弃者返回ICMP不可达信息。(在Cisco设备上使用Ping命令的时候经常出现U.U.U,是路由器返回的 ICMP不可达信息,但理论上应该是UUUUU,为什么会出现U.U.U呢?这是因为Cisco IOS中的限制,防止ICMP泛洪攻击的,在路由器上使用命令no ip icmp rate-limit unreachable之后,ping返回的就是UUUUU了。);

3.  可能是访问控制列表的问题,Access-list 所引起的 administratively prohibited unreachable ;

4.  可能是 ARP的问题,引起的 encapsulation failed ;

5.  可能是 delay (默认2s)引起的  ping ..... ;

6.  可能是不同的源IP地址所引起的   ping ..... ;

7.  其它原因;