ping命令的原理

       首先,我们来看一下ping命令的作用:简单来说,ping是用来检测本机与网络中的某个主机是否可达命令,如果两台主机之间ping不同,则表明两台主机之间不可建立连接。ping是定位网络通不通的重要手段。

ping命令的原理

        ping命令是基于ICMP协议来工作的,ICMP是Internet控制报文协议。ping命令会发送一个ICMP回显请求报文给目标主机,并等待目标主机返回ICMP回显应答。因为ICMP协议会要求目标主机在收到消息后,必须返回ICMP应答消息给源主机,如果源主机在一段时间内收到了目标主机的应答,则表明两台主机之间是可达的。

举例:

      假设有两个主机,主机A(192.168.0.1)和主机B(192.168.0.2),现在我们要监测主机A和主机B之间网络是否可达,那么我们在主机A上输入命令:ping 192.168.0.2
      此时,ping命令会在主机A上构建一个 ICMP的请求数据包(ICMP包是在IP包内部的),然后 ICMP协议会将这个数据包以及目标IP(192.168.0.2)等信息一同交给IP层协议。
      IP层协议得到这些信息后,将源地址(即本机IP)、目标地址(即目标IP:192.168.0.2)、再加上一些其它的控制信息,构建成一个IP数据包。
      IP数据包构建完成后,还不够,还需要加上MAC地址,因此,还需要通过ARP映射表找出目标IP所对应的MAC地址。当拿到了目标主机的MAC地址和本机MAC后,一并交给数据链路层,组装成一个数据帧,依据以太网的介质访问规则,将它们传送出出去。
       当主机B收到这个数据帧之后,会首先检查它的目标MAC地址是不是本机,如果是就接收下来处理,接收之后会检查这个数据帧,将数据帧中的IP数据包取出来,交给本机的IP层协议,然后IP层协议检查完之后,再将ICMP数据包取出来交给ICMP协议处理,当这一步也处理完成之后,就会构建一个ICMP应答数据包,回发给主机A
      在一定的时间内,如果主机A收到了应答包,则说明它与主机B之间网络可达,如果没有收到,则说明网络不可达。除了监测是否可达以外,还可以利用应答时间和发起时间之间的差值,计算出数据包的延迟耗时。

猜你喜欢

转载自blog.csdn.net/qq_41727218/article/details/88355362