Ping 原理说明

简单来说,「ping」是用来探测本机与网络中另一主机之间是否可达的命令,如果两台主机之间 ping 不通,则表明这两台主机不能建立起连接。ping 是定位网络通不通的一个重要手段。

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

举一个例子来描述「ping」命令的工作过程:

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

2、此时,ping 命令会在主机 A 上构建一个 ICMP 的请求数据包:

 ICMP header 中的 type 为 8、code 为 0,代表回显请求。

Sequence number 代表该 ping 包的序列号,一般从 1 开始。

然后 ICMP 协议会将这个数据包以及目标 IP(192.168.0.2)等信息一同交给 IP 层协议。

3、IP 层协议得到这些信息后,将源地址(即本机 IP )、目标地址(即目标 IP:192.168.0.2)、再加上一些其它的控制信息,构建成一个 IP 数据包。

4、IP 数据包构建完成后,还不够,还需要加上 MAC 地址。因此,还需要通过 ARP 映射表找出目标 IP 所对应的 MAC 地址。当拿到了目标主机的 MAC 地址和本机 MAC 后,一并交给数据链路层,组装成一个数据帧,依据以太网的介质访问规则,将它们传送出去。

5、当主机 B 收到这个数据帧之后,会首先检查它的目标 MAC 地址是不是本机,如果是就接收下来处理,接收之后会检查这个数据帧,将数据帧中的 IP 数据包取出来,交给本机的 IP 层协议,然后 IP 层协议检查完之后,再将 ICMP 数据包取出来交给 ICMP 协议处理,当这一步也处理完成之后,就会构建一个 ICMP 应答数据包,回发给主机 A 。

6、在一定的时间内,如果主机 A 收到了应答包,则说明它与主机 B 之间网络可达,如果没有收到,则说明网络不可达。除了监测是否可达以外,还可以利用应答时间和发起时间之间的差值,计算出数据包的延迟耗时。

 

wireshark 抓包

 

 

 

参考:https://zhuanlan.zhihu.com/p/44443115

(SAW:Game Over!)

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值