【计算机网络】通过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