当前位置: 首页 > article >正文

【某农业大学计算机网络实验报告】实验二 交换机的自学习算法

实验目的:

(1)理解交换机通过逆向自学习算法建立地址转发表的过程。

(2)理解交换机转发数据帧的规则。

(3)理解交换机的工作原理。

实验器材:

一台Windows操作系统的PC机。

实验准备:

1.配置网络拓扑:首先,在 Packet Tracer 7.3.1 模拟器中配置好如下的网络拓扑结构。如下图所示,具体包括一台交换机分别连接PC0、PC1、PC2三台主机:

另:配置过程中交换机端口指示灯可能呈橙色,单击主窗口右下角 Realtime (实时)Simulation(模拟)模式切换按钮数次,即可加速完成交换机的初始化。

2. 配置 IP 地址和子网掩码:根据实验要求,对于每个设备,按照实验指导书中提供的表格配置IP地址,点击 PC,打开参数表如下所示,在每台 PC 的配置窗口中配置合理的 IP 地址和子网掩码,除此在此次实验中我们需要重点关注各个主机的MAC地址,因此我们可以在此处点击【Config】—>【FastEthernet0】—>【MAC Address】处查看主机的MAC地址:

3. 使用主页面左上角的Inspect 工具,我们可以查看交换机 0 的地址转发表(MAC Table)发现该任务中数据包的源/目标主机 PC0 和 PC2 的 MAC 地址已经存在于交换机 0 的地址转发表中,出现这种情况的原因是:我发现在我们为各个主机分配IP地址后,如果主机与交换机已经连结成了一个完整的以太网,那么主机就会向交换机发送一个数据包,因此交换机中的交换表不为空

4. 但上述的实验情况是我们在后续的实验过程中希望避免的,因此我们需要使用命令清空交换表,点击主页面左上角的【Select(Esc)】—>【CLI】,首先输入 enable 进入特权模式,再输入clear mac-a即可清空交换机交换表:

5. 设置 Event List Filters(事件列表过滤器):在模拟状态中,设置事件列表过滤器只显示ARP与ICMP事件,可以在后续实验过程中精简进程的显示与避免额外情况的出现。

实验内容:

任务一:观察单个交换机在简单拓扑下转发表的变化

1. 添加 PC0 PC2 的简单 PDU:切换到模拟模式进行观察:单击 Add Simple PDU(添加简单 PDU)按钮,在拓扑图中添加 PC0 PC2 发送的数据包,可以发现此时有两个数据包显示在主机PC0上:

2.经后续实验过程我们可以知道,绿色信封为ARP码,红色信封为ICMP码,PC0首先向交换机发送一个ARP,而交换机为了确认哪一个端口属于PC2,选择将该ARP码广播给其网络内的所有主机,PC1拒绝接收该ARP码,而PC2可以成功接收,此一步骤完成后,交换机中已经成功存下了PC0MAC地址

3.PC2接收到PC0ARP 请求后,需要向主机 PC0 发送响应报文,交换机接收到PC2发送的响应报文后即会在其交换表中写入 PC2 MAC地址和接口 F0/1 的映射,因此当PC0接收到响应报文后,交换机的交换表中就已经有了PC0PC2两个主机的MAC地址与接口映射

4.因此,接下来传输红色信封(即ICMP码)的过程则与我们实验一中交换机传输单播包的过程相同,PC0将数据包通过交换机点对点传输给PC2后,PC2再通过交换机将应答包通过交换机点对点传输给PC0,至此一个完整的交换机单播包的传输过程就完成了。

任务二:观察单个交换机在拓展网络拓扑下转发表的变化

1.扩展网络拓扑如下图所示,具体为在网络中增加一个集线器与两个主机,集线器与交换机相连,两个主机PC3与PC4分别与集线器相连,除此之外同样要对交换机使用命令清空交换表的操作,点击主页面左上角的【Select(Esc)】—>【CLI】,首先输入 enable 进入特权模式,再输入clear mac-a即可清空交换机交换表:

2.除此之外,我们还要删除各个主机的ARP表,与删除交换机的交换表类似,点击主页面左上角的【Select(Esc)】进入主机的显示页面,选择【Desktop】—>【Command Prompt】,主机命令提示符输入 arp -d 即可清空主机 arp 缓存表,再次打开ARP Table即可看见缓存表为空:

3.添加 PC3 PC4 的简单 PDU,进入模拟模式,并观察此时交换机的行为,PC3首先将ARP包发送给集线器后,集线器广播给所有连接对象,其中PC4与交换机成功接收到PC3ARP包后,交换表与缓存表中就都已经有了PC3MAC地址

4.但同时交换机在转发表中并没有找到PC4MAC地址,因此将该ARP请求转发给PC0PC1PC2三个主机,与此同时PC4PC3发送响应帧,该帧经集线器广播到交换机,交换机此时记录下了PC4MAC地址与接口映射并查找转发表发现目的帧的接口与帧的进口一致,故不转发该帧

5. 因此,接下来传输棕色信封(即ICMP码)的过程则与我们实验一中集线器传输单播包的过程相同,PC3将数据包传输给集线器后,集线器通过广播的方式将数据包广播给交换机与PC4PC4将接收该数据包,而交换机会丢弃该帧,这是因为交换机在查找转发表后发现目的帧的接口与帧的进口一致,而后PC4再将返回的应答包传输给集线器,集线器同样广播给交换机与PC3PC3成功接收而交换机丢弃该帧,至此一个完整的单播包的传输过程就完成了。

任务三:观察多个交换机互连情形下转发表的变化

1.搭建网络拓扑如下图所示,具体为在网络中加入三个交换机与三个主机,每个交换机分别一个主机相连,除此之外同样要对交换机使用命令清空交换表的操作,点击主页面左上角的【Select(Esc)】—>【CLI】,首先输入 enable 进入特权模式,再输入clear mac-a即可清空交换机交换表:

2. 添加 PC0 到 PC2 的数据包,分步骤观察交换机0,交换机1和交换机2的转发表的变化情况:

(1)PC0由于并不清楚PC2接口所在位置,首先向交换机0发送ARP数据包,交换机0因此在交换表中记下PC0MAC地址,其余交换机交换表不变;

(2)交换机0接收到ARP包后,将其广播给交换机1,交换机1因此在交换表中记录下PC0MAC地址与接口

(3)交换机1接收到ARP包后,将其广播给交换机2与PC1,交换机2因此在交换表中记录下PC0MAC地址与接口,PC1则丢弃该ARP包;

(4)交换机2接收到ARP包后,将其广播给PC2,PC2接收该ARP包后需要返回应答数据包,因此向交换机2发送数据包,交换机2记录PC2的地址与接口

(5)交换机2接收到应答包后,将其转发给交换机1,交换机1接收应答包后因此记录下PC2的地址与接口

(6)交换机1接收到应答包后,将其转发给交换机0,交换机0接收应答包后因此记录下PC2的地址与接口,最后交换机0转发给PC0,完成ARP包的发送过程;

(7)后续传输ICMP包的过程与我们第一次实验课程中交换机传播单播包的过程基本相同,且交换机中的交换表不再改变

(8)若清空交换表,重复本步骤,再次观察各交换机交换表的变化情况,虽然我们清除了交换机的交换表,但主机中的ARP表并没有被清除,因此也无需再传播ARP包,直接传播ICMP包即可。

3. 添加 PC1 到 PC0 的数据包,分步骤观察交换机0,交换机1和交换机2的转发表的变化情况:

(1)PC1由于并不清楚PC1接口所在位置,首先向交换机1发送ARP数据包,交换机1因此在交换表中记下PC1MAC地址,其余交换机交换表不变;

(2)交换机1接收到ARP包后,将其广播给交换机0与交换机2,交换机0与交换机2因此在交换表中记录下PC1MAC地址与接口;  

(3)接收到ARP两个包的交换机分别传输给它们对应的主机,PC0成功接收ARP包后通过交换机0向PC1返回应答包,而PC2则舍弃ARP包,后续传输ICMP包的过程与我们第一次实验课程中交换机传播单播包的过程基本相同,且交换机中的交换表不再改变。

4. 仅清空交换机1的交换表,添加 PC1 到 PC0 的数据包,观察各交换机交换表的变化:

(1)虽然我们清空了交换机1的交换表,但我们并没有清除交换机中的缓存表(ARP表),因此PC1直接向交换机1发送ICMP码,交换机1则记录下PC1MAC地址

(2)交换机1将ICMP包传输给其它交换机,交换机2丢弃,交换机0接收,并将其转发给PC0,PC0接收后返回应答包,在此过程中所有交换机的交换表都未发生改变;

(3)交换机0将PC0的应答包转发给交换机1后,交换机则记录下PC0的MAC地址与对应接口,其余交换机的交换表不变,之后交换机1将应答包转发给PC1,数据包传输工作完成。

实验结果、分析与结论:

思考题:

1.在任务三中,将观察结果填入下表。转发表栏内填写交换机接收到数据后 MAC 地址转发表中增加的项,如无增加或该交换机未收到该数据帧则用横线表示。对数据的处理填写转发、洪泛或丢弃,如交换机未收到该数据帧则用横线表示:

发送的帧

Switch0的转发表

Switch1的转发表

Switch2的转发表

Switch0 的处理

Switch1 的处理

Switch2 的处理

地址

接口

地址

接口

地址

接口

PC0PC2

0001.C79C.7DBD

Fa0/1

0001.C79C.7DBD

Fa0/2

0001.C79C.7DBD

Fa0/2

洪泛

洪泛

洪泛

0060.477B.95CC

Fa0/2

0060.477B.95CC

Fa0/3

0060.477B.95CC

Fa0/1

转发

转发

转发

PC1PC0

0006.2A84.48E2

F0/2

0060.477B.95CC

F0/1

0006.2A84.48E2

F0/2

洪泛

洪泛

洪泛

0001.C79C.7DBD

F0/2

转发

转发

PC1PC0

0001.C79C.7DBD

F0/2

转发

洪泛

丢弃

0060.477B.95CC

F0/1

转发

转发

2.Switch0收到 PC0 向 PC2 发送的数据帧后,其地址转发表是否有变化?如有给出增加的条目并解释原因。

Switch0收到 PC0 向 PC2 发送的数据帧后,其地址转发表增加了PC0MAC地址与对应接口,这是因为当接收机接收到来自主机的数据后,如果其转发表中未查询到该主机的相关信息,就会自动学习记录其主机的对应地址与接口在交换表中;

3.Swtich1收到 PC0 向 PC2 发送的数据帧后,是如何处理的?说明其如此处理的原因。

Swtich1收到 PC0 向 PC2 发送的数据帧(ARP包)后,首先会记录PC0MAC地址与接口,然后会广播也就是洪泛该数据,因为交换机1的交换表中此时并没有PC2的MAC地址,因此需要通过广播确定PC2的位置。而当Swtich1收到 PC0 向 PC2 发送的数据帧(ICMP包)后,由于此前已经记录了两个主机的位置,接下来会直接转发数据帧;

4.在删除Switch1上的地址转发表前后,PC1 向 PC0 发送数据时Switch2是如何处理的?说明其如此处理的原因.

删除交换机1转发表前:如果未删除交换机1的转发表,那么转发表中的PC0的地址信息将帮助交换机1直接将数据转发给交换机0,则交换机2不会接收到数据

删除交换机1转发表后:如果删除了交换机1的转发表,那么交换机1就不知道PC0的地址信息,会选择将数据洪泛给连接的所有交换机包括交换机2,而交换机2中的转发表记录了PC0的地址发现转出信息与转入信息的接口为同一个后交换机2会选择丢弃该数据

实验心得与体会:

  1. 与第一次实验课的内容相比,本次实验课的操作与原理都较为简单,核心内容就在于理解交换机其独特的自学习算法,在第一次实验中,我们充分感受到了交换机相比于集线器的巨大优势,但对于为什么交换机能够做到“识别”而集线器不能做到这一点,并没有较为深入与较为详细的认识;
  2. 而经过理论课与此次实验课的学习,使我对上一次实验课的内容有了更深的认识与理解,以及发现了过去实验中还能有所改进与不足之处,利用软件中实时的查看交换机的转发表的功能,我们深刻体会了交换机的工作原理与工作逻辑,同时对MAC地址ARP码ICMP码等相关概念有了更为具体的认识;
  3. 同时,在此次的实验过程中我仍是发现了一些亟待解决的问题,比如:在交换机中的转发表中常常会出现一些并不属于主机的MAC地址与接口信息,其原因是交换机记录了其它交换机端口的MAC地址与接口信息,这一度让我在实验过程中对交换机的交换表的变化产生困惑,因此在此次实验中,为集中学习交换机的自学习算法,我们出于简化考虑只关注了三个主机的MAC地址;
  4. 最后我将此次实验内容所得的心得与感悟与第一次实验的内容相结合,以整体的思路反思了我们计算机网络学习中的以太网的数据传播过程,可以想象,实际网络的信息传播与转发其实是一个非常复杂的过程,在后续的学习过程中,我们更需要以把握原理为中心,深刻理解相关概念,实验与理论结合以达到最好的学习效果。

http://www.kler.cn/news/362349.html

相关文章:

  • 排序算法 —— 归并排序(理论+代码)
  • 房屋租赁网站毕业设计基于SpringBootSSM框架的计算机毕业设计
  • 超简洁的B端系统,还是看国外的设计.
  • 【leetcode|哈希表、动态规划】最长连续序列、最大子数组和
  • Redis简介及其在NoSQL应用开发中的优化策略
  • 100个人物介绍字幕动画PR视频模板MOGRT
  • Python小程序 - 替换文件内容
  • Redis Search系列 - 第四讲 支持中文
  • 003:Context Capture10.16安装教程
  • Linux中如何理解一切皆文件
  • 【YOLO模型】(1)--YOLO是什么
  • Android 13 SPRD 如何临时修改 Android 系统版本
  • 开源模型应用落地-Qwen2.5-7B-Instruct与vllm实现离线推理-Tools助力(二)
  • w~自动驾驶合集9
  • RHCE笔记-SSH服务
  • 毕业设计项目系统:基于Springboot框架的网上订餐管理系统,完整源代码+数据库+毕设文档+部署说明
  • Spring Cloud --- Sentinel 授权规则
  • StarTowerChain:开启去中心化创新篇章
  • gitlab-cli无法构建流水线
  • 数据结构 - 树,初探
  • 最好的ppt模板网站是哪个?做PPT不可错过的18个网站!
  • 记录一个容易混淆的 Spring Boot 项目配置文件问题
  • 监控易-某信息化系统监控-监测点详情解读
  • Java学习教程,从入门到精通,Java 基本数据类型(7)
  • 【VUE】v-show 和 v-if 的区别
  • 11. 事件机制