ping命令是我们在学习计算网络中一个很常见的命令

我们经常使用ping命令来测试两台主机之间是否能够通信:

 如果request包能发过去并且reply包能够返回,就说明两台机器之间能够通信

那么ping命令的工作流程是怎样的呢?

让我们从数据封装的角度来看看

 假设主机  A  ping  主机B

A的ip地址是:192.168.10.1

B的ip地址是:192.168.10.254

##############################################

那么整个ping的过程应该是这样的:

1、应用层

        在应用层阶段会随机产生一些数据来封装起来,用以作为发送给主机B的数据这个数据的内容我们通常不关注。封装好了以后将数据传输至传输层

2、传输层

        因为ping命令是由icmp协议实现的,icmp协议工作在网络层,因此在传输层阶段数据并没有改变。

3、网络

        数据到了网络层,首先icmp协议会先将数据解封装,然后添加一个icmp头部,但是icmp协议是不能添加源地址和目的地址的,它依赖于ip协议来封装这些数据,到了ip协议这里,ip协议会将源ip地址和目的IP地址,协议号,TTL等信息封装起来,并添加一个ip头部信息,然后数据就往下到了数据链路层。

4、数据链路层

        数据链路层,到了帧的层面,将数据解封装以后,接下来要封装源mac和目的mac了,但是此时源mac是自己主机,是知道的,目的mac却不知道,于是主机A就会查看自己电脑里面的arp缓存表来查看是否有目的ip的mac地址,如果有的话,就知道目的ip的mac地址了,如果没有的话,arp协议(地址解析协议)就会发送arp广播,获取主机B的mac地址,然后将源mac和目的mac等信息封装起来并在数据帧上面添加一个mac头部信息,然后将数据帧传至物理层

5、物理层

        数据帧到了物理层,通过比特流的形式发给主机B,主机B收到以后又给主机A发送reply响应包,这样ping的过程就完成了。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐