【计算机网络】通过ensp实验分析二三层数据包转发过程

一、实验准备

需要提前安装好wireshark、virtalbox、WinPcap和模拟工具ensp,具体的安装过程可以自行百度~

特别提醒一点就是virtalbox和ensp的兼容性问题,我安装的是ensp1.3.00.100版本,该版本不支持virtalbox官网的6和7版本,我这边退回到5版本才正常运行起来。

 

二、网络拓扑图

pc1:ip地址 10.1.1.1/24,下一跳地址10.1.1.2/24,Mac地址:54-89-98-ba-30-20

pc2:ip地址 10.2.2.1/8,下一跳地址10.2.2.2/16,Mac地址:54-89-98-d5-75-f1

路由器 GE0/0/0:ip地址:10.1.1.2/24,Mac地址:00-e0-fc-34-7b-1a

GE0/0/0:ip地址:10.2.2.2/16,Mac地址:00-e0-fc-34-7b-1b

 

三、过程分析

在pc1上 ping 10.2.2.1,在路由器的左右两接口处分别抓包

1.首先pc1会通过掩码判断,网络号是10.1.1.0/24网段的,和目标ip属于不同的网段,所以要借助自己的网关进行三层转发

2.pc1查询ARP缓存表看是否有网关的MAC地址,发现没有;便以广播的形式在本网段发送arp请求帧,请求自己网关10.1.1.2的Mac地址

3.路由器收到arp广播,发现请求的是自己G0/0/0的接口ip的Mac地址,于是单播arp回复给pc1,并且记录pc1的mac地址到arp上

4.PC1收到应答后先把R1 MAC地址写入自己的ARP缓存表,然后把R1的MAC地址作为目标MAC地址,PC1的MAC地址作为源MAC地址封装在数据包中,发送给R1。路由器收到数据包,拆封到三层,发现目标ip不是自己,目标ip是10.2.2.1/?于是开始查路由,按掩码最长的进行匹配。查到直连路由10.2.0.0/16可达,下一跳是自己的接口G0/0/1。

display ip routing-table

5.G0/0/1收到要去10.2.2.1,先做arp请求,arp广播请求10.2.2.1的mac地址

pc2回复了单播的arp,告知了自己的MAC地址

6.路由器会将pc2的mac地址缓存下来

dis arp all

7.路由器根据目的ip查arp缓存得到Mac地址,再查Mac表得到下一跳的接口,从出接口发出。

 

四、总结

1.源IP和目标IP始终不变,变的只是Mac地址。

pc1给pc2发送icmp包时

路由器左接口抓包

 路由器右接口抓包

2.ARP请求以广播发送,单播回应。
3.路由器隔离广播,每一个网段都是独立的广播域。

4.pc根据自己的掩码计算网络号,来决定是二层还是三层转发。如果是三层,就请求自己的网关Mac,让路由器去查路由,查arp进行转发

 

实验思路参考b站up主:我的名字叫F

【HCIA】再来!三层访问数据包的详细变化过程分析_哔哩哔哩_bilibili

posted @ 2024-05-02 16:29  母粒  阅读(434)  评论(0编辑  收藏  举报