text: ping （Packet Internet Groper）是一种因特网包探索器，用于测试网络连接量的程序。Ping是工作在 TCP/IP网络体系结构中应用层的一个服务命令， 主要是向特定的目的主机发送 ICMP（Internet Control Message Protocol 因特网报文控制协议）Echo 请求报文，测试目的站是否可达及了解其有关状态。
  ping基本信息
  ping用于确定本地主机是否能与另一台主机成功交换(发送与接收)数据包，再根据返回的信息，就可以推断TCP/IP参数是否设置正确，以及运行是否正常、网络是否通畅等。Ping命令可以进行以下操作:
  ①通过将ICMP(Internet控制消息协议)回显数据包发送到计算机并侦听回显回复数据包来验证与一台或多台远程计算机的连接。
  ②每个发送的数据包最多等待一秒。
  ③打印已传输和接收的数据包数。
  需要注意的是，Ping成功并不一定就代表TCP/IP配置正确，有可能还要执行大量的本地主机与远程主机的数据包交换，才能确信TCP/IP配置的正确性。如果执行ping成功而网络仍无法使用，那么问题很可能出在网络系统的软件配置方面，ping成功只保证当前主机与目的主机间存在一条连通的物理路径。
  ping实现方式
  ICMPPing
  ICMP是一种将差错与控制集于一体的协议，不仅用于传输差错报文，还用于消息控制报文。它与IP协议相互依赖:IP在发送一个差错或控制报文时要用到ICMP，而ICMP利用IP来传递报文。
  ICMP报文分为信息报文、差错报文、控制报文。信息报文一般由客户端发出，例如用于测试目的地址可达性的回应请求/应答报文；而差错报文一般由服务器或是路由器发出，表示网络或主机不能完成要求的服务。当发送一份ICMP差错报文时，文始终包含了IP首部和产生ICMP差错报文的IP数据报的前8个字节。
  ICMP Ping就是向目标主机发送ICMP信息报文，目标主机(有时是路由器)回应ICMP信息报文或差错报文，Ping程序根据这些收到的ICMP报文，以知道目标主机的可达性。可用于Ping的信息报文有：回应请求与响应报文、时间戳请求与响应报文和掩码请求与响应报文。
  TCPPing
  在进行ICMPPing的时候，如果在目标主机的网络网关过滤了ICMP Ping包，ICMPPing的结果就不准确了。此时，应该考虑其他方式，如TCPPing、LIDPPing。TCP的功能是在一对ULP(UpperLayerProtocol，高层协议)之间提供的数据报服务基础上，建立可靠的端对端连接，并提供虚电路服务和面向数据流的传输服务。TCP中的基本传输单元是段(Segment)，一个TCP段由段头和数据流两部分组成。
  在TCP协议中，SYN包用来表示建立连接请求。如果对方端口处在listening状态，就会回送ACK包，并附上自己的ISN。但是如果对方端口是关闭的，它会发回一个RST包，表示应该马上断开连接(少数情况下会发回一个同时置SYN和ACK位的包)。如果我们向一个端口发送ACK包，而事先没有与此端口建立连接，那么，无论端口是否打开，它都会回送一个RST包。所以可以看出，无论这个端口是否打开，总会有某一种数据包返回，以此可以判定目标主机可达。而目标主机如果不可达，路由器就会向扫描主机发送目的地不可达的ICMP报文。这样，通过向目标主机发送TCPSYN包或TCPACK包就可以准确判断目标主机是否可达，而且根据RFC793(TCP)，目标主机(或路由器)都无法屏蔽TCPSYN包和TCPACK包，因此，TCPPing的准确性比ICMPPing的准确性要高。在实现的时候，需要利用RAW Socket，定制TCP包并封装在IP包中。在Linux系统下，非root用户是没有此项权利的，同样Windows的非.Administrator组用户也不能直接填写TCP包头和IP包头。
  UDPPing
  在TCP/IP协议组中，用户数据报协议(UDP)提供应用进程之间数据报传送的基本机制。每个UDP报文不仅传送用户数据，而且还包括发送方和接收方的协议端口号。
  UDPPing与TCPPing的原理类似，通过RAWSocket定制UDP包，主要是格式化UDP包中的目的端口号，一般指定一个数量值很大的目的端口号(比如31558)，很少应用程序用到数量值入的端口号，也就是说该端口很有可能是处于关闭状态。首先构建好UDP报文，然后递交给IP实体发送。如果目标主机不可达(网络不通或主机未打开)，则路由器将发送一个目的不可达ICMP报文。而如果目标主机可达，在其接收数据时，其UDP实体首先判断接收到的目的端口号是否与当前使用的某端口号匹配，如果匹配，则将数据报放入到对应的接收队列，否则如果目的端口号对应的端口关闭则丢弃该数据报，并回送一个“端口不可达”的ICMP报文，因此，只要目标主机可达，UDPPing程序将收到一个UDP回应包(也可能没有)或者“端口不可达”的ICMP报文而目标主机不可达，将收到“目的不可达’’的ICMP报文。
  ping命令用法
  Windowsping
  在Windows系列的操作系统中，我们都可以使用ping命令来解决网络中出现的路由问题，方法如下：
  ①检查当前的IP配置。在Windows系统中使用ipconfig.exe检查IP配置。
  ②在Windows系统中，ping命令允许在命令行中输入选项，命令形式如下：
  C：\>ping169.254.104.10此时使用的是IP协议。
  用户Ping
  在路由器的用户模式下，也可以使用ping命令，它是一个简单的全局命令，用法同Windows下相同，只是返回代码不同。其形式是:Router>ping169.254.104.10路由器缺省使用IP协议。
  扩展Ping
  在路由器的特权模式下，可以使用其他几个选项，这就是所谓的扩展ping，它是交互形式工作的。扩展ping的可用其他选项包括：使用不同大小的数据包；增加应答等待时间间隔；一次发送多于5个数据包；在IP报头设置“不分段”位；在其他协议中使用ping，例如IPX和AppleTalk。方法是：在enable模式下输入ping并按回车键即可启动扩展ping，ping工具将提示输入各种变量值。其形式是:
  Router#ping
  Protocol[ip]:***
  TargetIPaddress:****
  …………
  ping检查网络故障
  正常情况下，当你使用Ping命令来查找问题所在或检验网络运行情况时，你需要使用许多Ping命令，如果所有都运行正确，你就可以相信基本的连通性和配置参数没有问题；如果某些Ping命令出现运行故障，它也可以指明到何处去查找问题。下面就给出一个典型的检测次序及对应的可能故障:
  ping127.0.0.1——这个Ping命令被送到本地计算机的IP软件，该命令永不退出该计算机。如果没有做到这一点，就表示TCP/IP的安装或运行存在某些最基本的问题。
  ping本机IP——这个命令被送到你计算机所配置的IP地址，你的计算机始终都应该对该Ping命令做出应答，如果没有，则表示本地配置或安装存在问题。出现此问题时，局域网用户请断开网络电缆，然后重新发送该命令。如果网线断开后，本命令正确，则表示另一台计算机可能配置了相同的IP地址。
  ping局域网内其他IP——这个命令应该离开你的计算机，经过网卡及网络电缆到达其他计算机，再返回。收到回送应答表明本地网络中的网卡和载体运行正确。但如果收到0个回送应答，那么表示子网掩码(进行子网分割时，将IP地址的网络部分与主机部分分开的代码)不正确或网卡配置错误或电缆系统有问题。
  ping网关IP——这个命令如果应答正确，表示局域网中的网关路由器正在运行并能够作出应答。
  ping远程IP——如果收到4个应答，表示成功的使用了缺省网关。对于拨号上网用户则表示能够成功的访问Internet(但不排除ISP的DNS会有问题)。
  pinglocalhost——localhost是个操作系统的网络保留名，它是127.0.0.1的别名，每台计算机都应该能够将该名字转换成该地址。如果没有做到这一条，则表示主机文件(/Windows/host)中存在问题。
  pingwww.baidu.com——对这个域名执行Ping命令，你的计算机必须先将域名转换成IP地址，通常是通过DNS服务器。如果这里出现故障，则表示DNS服务器的IP地址配置不正确或DNS服务器有故障。
  如果上面所列出的所有Ping命令都能正常运行，那么计算机可以进行本地和远程通信。但是，这些命令的成功并不表示所有的网络配置都没有问题，例如，某些子网掩码错误就可能无法用这些方法检测到。
  ping影响因素
  在物理链路连通和路由设置正确的情况下，使用Ping命令仍然屏不通，可能有以下几个问题：
  (1)网线刚插到交换机上就Ping通网关，忽略了生成树的收敛时间。当然，较新的交换机都支持快速生成树，或者有的管理员干脆把用户端口(accessport)的生成树协议关掉，问题就解决了。
  (2)不管中间经过了多少个节点，只要有节点(包括端节点)对ICMP信息包进行了过滤，Ping不通是正常的。最常见的就是防火墙的行为。
  (3)某些路由器端口是不允许用户Ping的。
  (4)网络因设备间的超时，造成ICMP报文无法在缺省时间(2秒)内收到。超时的原因有：主机没有足够的时间和资源来响应；路径太长，没到达目的地时TTL的值为0，最后一个路由器将发回ICMP超时信息；使用扩展Ping，增加应答等待时间间隔等。
  (5)引入NAT的场合会造成单向Ping通。NAT可以起到隐蔽内部地址的作用，当由内Ping外时，可以Ping通是因为NAT表的映射关系存在，当由外发起Ping内网主机时，就无从查找边界路由器的NAT访问列表了。