ping 原理

1、什么是 Ping

ping是一种计算机网络工具,用来测试数据包能否透过IP协议到达特定主机。ping的运作原理是向目标主机传出一个ICMP [email protected]要求数据包,并等待接收echo回应数据包。程序会按时间和成功响应的次数估算丢失数据包率(丢包率)和数据包往返时间(网络时延,Round-trip delay time)。———— *

我们在网络通信的过程中,常常使用 ping 某一个 IP 地址或者某个域名看下基本连接是否正常;是否有丢包;是否有网络延迟。ping 就是我们经常用来作为网络连接通信的测试“指令”。

Ping 的工作原理

在*中解释有说明, Ping 的原理是 ICMP 协议.

什么是 ICMP 协议

ICMP 的全称是 Intent Control Message Protocol, 中文过来就是 互联网控制报文协议

网络数据包在庞大的网络中会很多各种不同情况。如果一定需要举一个例子来比如的话,用相当于兵种的侦察兵。时刻给大部队探测前方的情况。以便后方的大部队能够根据不同情况做出不同的调整。所以 ICMP 经常用于网络环境的测试。


要想理解ping的原理,我们首先来看一下ARP的报文格式

ping 原理

其中op:

1:表示arp请求
2:表示arp应答
3:表示rarp请求
4:表示rarp应答

接下来,我们来看一个同一广播域内的ping报文:

ping 原理

我们的host2想要去ping host1,那么主机1就要封装二层报文,首先host2会查看自己的MAC地址表,看有没有host1的地址,如果没有,host2就会向外部发送ARP广播包
ARP帧报文格式如下:(省略了arp报文的硬件类型,上层协议类型,MAC地址长度,IP地址长度)

ping 原理
首先,我们的交换机接收到报文以后,会查询交换机的MAC地址表(具有学习功能),如果有host1的MAC地址,直接返回给host2;如果没有,交换机就会向所有端口发送ARP广播,其他端口上的主机发现以后,如果目标不是自己,就会丢弃报文;直到host1主机接收到了报文以后,就会响应host1的MAC地址是多少,同时学习主机host2的MAC地址,并按照同样格式的ARP报文返回给host2.

host1返回的ARP帧报文:

ping 原理
这个时候,主机host2已经学习到了host1的MAC地址,于是发送icmp报文

ping 原理
host1收到报文之后,会复

ping 原理
接下来,我们来看一看不同广播域之间的ping

ping 原理

首先要确保全网可达!!!
如果我们的host2 还想ping主机,host2得先去找网关转发,但是如果说,它也不知道网关的情况下怎么办呢?它就会像ping host1那样,先发送ARP报文,确定网关的mac 然后发送icmp报文交给路由器。
我们省略arp报文

ping 原理


————————————————