一、简介
1、定义
Ping(Packet Internet Groper)是一种因特网包探索器,用于测试网络连通性和主机是否可达,它通过向特定的目的主机发送ICMP(Internet Control Message Protocol)Echo请求报文,并等待目的站返回ICMP Echo回复报文,来测试目的站是否可达,并获取连接的相关信息,如丢包率和平均往返时间等。
2、历史由来
Ping程序是由Mike Muuss编写的,其命名源自声纳系统在进行回声定位时发出的声音,Ping程序的作者将ping程序对“网络空间”的探测与声纳系统对物理空间的探测类比,因其原理的范式是相同的。
3、工作原理
Ping命令本质上是一种发送ICMP回显请求和响应消息的命令组合,当网络管理员在命令提示符下输入ping命令时,主机会向目标设备或指定的IP地址发送ICMP回显请求消息(ICMP Echo Request Message),这些请求消息是最多64字节的小数据包(在ping命令中一般为32字节),用于判断数据包是否成功到达对端,发送请求的本地计算机将等待远程主机的响应,如果远程主机正在运行且网络可达,目标计算机收到回显请求消息后,会将ICMP回显响应消息(ICMP Echo Reply Message)送回原始计算机。
二、实现方式
1、ICMP Ping
ICMP是一种将差错与控制集于一体的协议,不仅用于传输差错报文,还用于消息控制报文,它与IP协议相互依赖,IP在发送一个差错或控制报文时要用到ICMP,而ICMP利用IP来传递报文,ICMP报文分为信息报文、差错报文、控制报文,可用于Ping的信息报文有回应请求与响应报文、时间戳请求与响应报文和掩码请求与响应报文。
2、TCP Ping
在进行ICMP Ping的时候,如果在目标主机的网络网关过滤了ICMP Ping包,ICMP Ping的结果就不准确了,应该考虑其他方式,如TCP Ping、LIDPPing,TCP的功能是在一对ULP之间提供的数据报服务基础上,建立可靠的端对端连接,并提供虚电路服务和面向数据流的传输服务,TCP中的基本传输单元是段,一个TCP段由段头和数据流两部分组成,在TCP协议中,SYN包用来表示建立连接请求,如果对方端口处在listening状态,就会回送ACK包,并附上自己的ISN,但是如果对方端口是关闭的,它会发回一个RST包,表示应该马上断开连接,可以通过向目标主机发送TCP SYN包或TCP ACK包就可以准确判断目标主机是否可达。
3、UDP Ping
在TCP/IP协议组中,用户数据报协议提供应用进程之间数据报传送的基本机制,每个UDP报文不仅传送用户数据,而且还包括发送方和接收方的协议端口号,UDP Ping与TCP Ping的原理类似,通过RAW Socket定制UDP包,主要是格式化UDP包中的目的端口号,一般指定一个数量值很大的目的端口号(比如31558),首先构建好UDP报文,然后递交给IP实体发送,如果目标主机不可达,则路由器将发送一个目的不可达ICMP报文,而如果目标主机可达,在其接收数据时,其UDP实体首先判断接收到的目的端口号是否与当前使用的某端口号匹配,如果匹配,则将数据报放入到对应的接收队列,否则如果目的端口号对应的端口关闭则丢弃该数据报,并回送一个“端口不可达”的ICMP报文,只要目标主机可达,UDP Ping程序将收到一个UDP回应包或者“端口不可达”的ICMP报文;如果目标主机不可达,将收到“目的不可达”的ICMP报文。
三、常用参数及示例
1、常用参数
t
:Ping指定的主机,直到停止,若要查看统计信息并继续操作,请键入Ctrl+Break;若要停止,请键入Ctrl+C。
a
:将地址解析为主机名。
n count
:要发送的回显请求数。
l size
:发送缓冲区大小。
f
:在数据包中设置“不分段”标记(仅适用于IPv4)。
i TTL
:生存时间。
v TOS
:服务类型(仅适用于IPv4,该设置已被弃用,对IP标头中的服务类型字段没有任何影响)。
r count
:记录计数跃点的路由(仅适用于IPv4)。
s count
:计数跃点的时间戳(仅适用于IPv4)。
j hostlist
:与主机列表一起使用的松散源路由(仅适用于IPv4)。
k hostlist
:与主机列表一起使用的严格源路由(仅适用于IPv4)。
w timeout
:等待每次回复的超时时间(毫秒)。
R
:同样使用路由标头测试反向路由(仅适用于IPv6),根据RFC 5095,已弃用此路由标头,如果使用此标头,某些系统可能丢弃回显请求。
S srcaddr
:要使用的源地址。
c compartment
:路由隔离舱标识符。
p
:Ping HyperV网络虚拟化提供程序地址。
4
:强制使用IPv4。
6
:强制使用IPv6。
2、示例
要持续ping百度的域名www.baidu.com,可以在命令提示符下输入ping www.baidu.com t
,如果要指定发送的数据包大小为64字节,可以输入ping www.baidu.com l 64
,若要查看ping www.baidu.com的详细路由信息,可输入ping www.baidu.com r 9
(最多记录9个跃点)。
四、输出结果分析
1、正常响应
当ping命令执行成功后,会显示每个请求的序列号、时间戳、TTL值以及往返时间等信息。Reply from xxx.xxx.xxx.xxx: bytes=32 time=38ms TTL=56
,表示从源地址到目标地址的往返时间为38毫秒,数据包经过的路由器数量(TTL值)为56。
最后还会显示统计信息,如发送的请求总数、接收到的回复总数、丢包率以及往返时间的最小值、平均值和最大值等。Ping statistics for xxx.xxx.xxx.xxx: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milliseconds: Minimum = 38ms, Maximum = 40ms, Average = 39ms)
。
2、异常情况
Request timed out:这可能是由于对方已关机、网络上根本没有这个地址、对方与自己不在同一网段内且通过路由也无法找到对方、对方确实存在但设置了ICMP数据包过滤等原因导致的。
Destination host Unreachable:可能是对方与自己不在同一网段内,而自己又未设置默认的路由;也可能是对方的防火墙阻止了ICMP请求。
Bad IP address:可能是错误设置了IP地址,例如一台主机有两个不同的接口处于同一网段内,导致不知道将数据包发到哪个网络接口。
ping命令是一种简单而有效的网络工具,它可以帮助用户快速检测网络连通性和分析网络速度,需要注意的是,ping命令的结果可能会受到多种因素的影响,因此在实际应用中需要结合具体情况进行分析和判断。
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/144116.html