文章目录
- 1. 问题描述
- 2. 抓包
1. 问题描述
在书上看到了一个有意思的案例,自己来复现一下。
问题描述:
有两台主机,默认网关相同,均为:192.168.0.1
,P地址如下:
win10: 192.168.0.106/24
win7: 192.168.0.200
但配置win7的子网掩码的时候,不小心把掩码配置成了255.255.255.224
。
问:此时,win10和win7还能通信么?
本次探讨的主要内容是,通信过程中,这个发包和收包的过程是怎么样的。
2. 抓包
在抓包分析路由过程之前,我们可以利用自己已经学习过的路由知识,判断一下能否正常通信;然后思考一下这个通信的过程,最后和实验结果对比一下,看看自己的想法和真实结果是否有偏差。
这里我用本机win10和虚拟机win7,完成如上配置,然后抓包查看一下通信过程。
首先我们测试一下,是否能够ping通。
如上图,那么这道题的答案就是:可以正常通信。
接下来,研究一下为什么可以正常通信,这个通信过程中数据包是怎么走的?
实验前先声明以下信息,便于我们后面的分析:
设备 | IP地址 | 子网掩码 | mac地址 |
win10 | 192.168.0.106 | 255.255.255.0 | B4-69-21-C4-1A-9E |
win7 | 192.168.0.200 | 255.255.255.224 | 00-0C-29-6E-58-8C |
默认网关 | 192.168.0.1 | 80-89-17-ae-34-6a |
然后打开wireshar抓包分析通信过程:
这里用win7
去pingwin10
:
首先是win7发送了一个arp广播包,在问192.168.0.1
的mac地址。然后192.168.0.1
回复了自己的mac地址,接着win7就向win10发送了一个icmp数据包。即,此时,win7的ping已经过去了。
当win10收到ping后,需要回复win7。只有win7成功的收到了win10的回复,才算是一次完整的ping。
看接下来的过程,win7收到了一个arp广播包,内容是请求win7的mac地址,并告诉win10,然后win7向win10回复了自己的mac地址。紧接着就是win10的响应包。
梳理一下整个过程:
win7->win10:
首先win7会用自己的掩码和win10的IP地址进行对比,然后发现win10和自己不在一个网段。因此需要将数据包发送给默认网关192.168.0.1
,因此首先进行的操作是广播arp包请求默认网关的mac地址,然后将给win10的数据包发送给网关,由网关负责转发数据包。网关收到将这个数据包发给win10。
所以路径是:win7->网关->win10
win10->win7:
win10拿自己的掩码和win7对比,发现win7和自己是处于同一个网段的,因此直接广播请求win7的mac地址而不走网关。拿到win7的mac地址以后,直接给win7发送数据包。
所以路径是:win10->win7
那么win7在ping win10的过程中,数据包的走向就是:
win7->网关->win10->win7
为了验证这个数据包的走向,我用cisco搭建了一个模型,演示如下:
然后看一下数据包传输的路径:
演示的结果和上面的描述是一致的。证明根据抓包的分析是正确的。