ping命令的功能和原理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013617791/article/details/83417450

ping命令的功能

ping经常用来测试网络是否连通,通过 (Internet Protocol )IP层发送Internet Control Message Protocol (ICMP) 包
所以是验证IP层通不通的。如果ping通但是还是连不上网,说明是传输层及以上有错误,即本地主机的问题

ping命令的工作过程

假设有两个主机,主机A(192.168.0.1)和主机B(192.168.0.2),现在我们要监测主机A和主机B之间网络是否可达,那么我们在主机A上输入命令:ping 192.168.0.2

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

参考文献

https://segmentfault.com/q/1010000006060537/a-1020000006060628 ping通说明什么,说明网络在哪一层上是通的?
https://mp.weixin.qq.com/s?__biz=MzIxMjE5MTE1Nw==&mid=2653195824&idx=2&sn=3422adf922236f358f5658aaff50a0cf&chksm=8c99fceabbee75fc91c1c67a0b5cc33fe7150a7fb1f18d3e3267d6a4f0edf84452cac910222e&mpshare=1&scene=1&srcid=1026Q1Ummmbq9QqxS5HgRrbK#rd ping命令的工作过程

猜你喜欢

转载自blog.csdn.net/u013617791/article/details/83417450