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

实验目的:

(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.mzph.cn/pingmian/57245.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python|基于Kimi大模型,实现上传文档并进行“多轮”对话(7)

前言 本文是该专栏的第7篇,后面会持续分享AI大模型干货知识,记得关注。 假设有这样的需求,需要你通过python基于kimi大模型,上传对应的文档并根据对应的prompt提示词,进行多轮对话。此外,还需要将kimi大模型生成的内容进行存储。具体场景,如下图所示: 也就是说,当我们…

Kamailio-Sngrep 短小精悍的利器

一个sip的抓包小工具,在GitHub上竟然能够积累1K的star,看来还是有点东西,当然官方的友链也是发挥了重要作用 首先送上项目地址,有能力的宝子可以自行查看 经典的网络抓包工具有很多,比如: Wireshark&…

KASan部署、使用与原理分析

文章目录 前言1、概述2、使用方法3、测试用例3.1、检测加载的内核模块3.2、检测调用的内核模块3.3、通过系统调用检测3.4、检测编译到Linux内核中的内核模块 4、工作原理4.1、影子内存(Shadow Memory)4.2、内存状态(Memory States&#xff09…

Go小技巧易错点100例(十八)

正文: 使用下划线增加数字可读性 有时候我们代码里会定义很长的数字,虽然计算机程序能支持很大的数据的计算,但是对我们来说,可读性是一个需要考虑的点,特别是1后面全是0的时候。 但是这个问题在Go语言中是可以通过…

使用js和canvas实现简单的网页打砖块小游戏

玩法介绍 点击开始游戏后,使用键盘上的←→控制移动,小球会不停移动,板子触碰小球时会反弹,碰撞到砖块时会摧毁砖块,如果没有用板子接住小球就游戏失败 代码实现 代码比较简单,直接阅读注释即可&#x…

Leetcode—1226. 哲学家进餐【中等】(多线程)

2024每日刷题&#xff08;185&#xff09; Leetcode—1226. 哲学家进餐 C实现代码 class DiningPhilosophers { public:mutex mx;DiningPhilosophers() {}void wantsToEat(int philosopher,function<void()> pickLeftFork,function<void()> pickRightFork,functi…

云快充1.5协议+云快充1.6协议通讯框架

云快充协议云快充1.5协议云快充1.6云快充协议开源代码云快充底层协议云快充桩直连桩直连协议充电桩协议云快充源码 介绍 云快充协议云快充1.5协议云快充1.6云快充协议开源代码云快充底层协议云快充桩直连桩直连协议充电桩协议云快充源码 软件架构 1、提供云快充底层桩直连协…

Java【多线程】阻塞队列

目录 阻塞队列 阻塞队列是什么&#xff1f; 生产者消费者模型 生产者消费者模型的两个重要优势 1.解耦合&#xff08;不一定是两个线程之间&#xff0c;也可以是两个服务器之间&#xff09; 2.阻塞队列就相当于一个缓冲区&#xff0c;平衡了生产者和消费者的处理能力&…

【Web前端概述】

HTML 是用来描述网页的一种语言&#xff0c;全称是 Hyper-Text Markup Language&#xff0c;即超文本标记语言。我们浏览网页时看到的文字、按钮、图片、视频等元素&#xff0c;它们都是通过 HTML 书写并通过浏览器来呈现的。 一、HTML简史 1991年10月&#xff1a;一个非正式…

深度学习(一)基础:神经网络、训练过程与激活函数(1/10)

深度学习基础&#xff1a;神经网络、训练过程与激活函数 引言&#xff1a; 深度学习作为机器学习的一个子领域&#xff0c;近年来在人工智能的发展中扮演了举足轻重的角色。它通过模仿人脑的神经网络结构&#xff0c;使得计算机能够从数据中学习复杂的模式和特征&#xff0c;…

当小程序学会‘读心术’:表单处理的神秘法则

哈喽&#xff0c;我是阿佑&#xff0c;今天将给大家给咱们的小程序赋能——“读心术”&#xff01; 文章目录 微信小程序的表单处理表单元素&#xff1a;小程序的“语言”表单事件&#xff1a;小程序的“听觉”表单提交&#xff1a;小程序的“表达”总结 微信小程序的表单处理 …

1 -《本地部署开源大模型》如何选择合适的硬件配置

如何选择合适的硬件配置 为了在本地有效部署和使用开源大模型&#xff0c;深入理解硬件与软件的需求至关重要。在硬件需求方面&#xff0c;关键是配置一台或多台高性能的个人计算机系统或租用配备了先进GPU的在线服务器&#xff0c;确保有足够的内存和存储空间来处理大数据和复…

设置了超时时间但是不起作用,浏览器里的setTimeout有 bug?

你可能也遇到过这样的问题:写个setTimeout定时器,结果时间一长,浏览器就开始捣乱。比如你想要设置一个几小时甚至几天的延时,突然发现浏览器不听话了!这时候你就会想,难道浏览器的定时器是有上限的?没错,你没看错,setTimeout其实有个最大值限制,时间一超过这个值,就…

Python Numpy 实现神经网络自动训练:反向传播与激活函数的应用详解

Python Numpy 实现神经网络自动训练&#xff1a;反向传播与激活函数的应用详解 这篇文章介绍了如何使用 Python 的 Numpy 库来实现神经网络的自动训练&#xff0c;重点展示了反向传播算法和激活函数的应用。反向传播是神经网络训练的核心&#xff0c;能够通过计算梯度来优化模…

嵌入式入门学习——7Protues导入Arduino IDE生成的固件和Arduino使用库文件开发

0 系列文章入口 嵌入式入门学习——0快速入门&#xff0c;Let‘s Do It&#xff01; 1 Arduino IDE 请自行下载安装&#xff0c;点击标题链接即可&#xff0c;下载完成后 1新建工程并保存&#xff0c;注意工程名和工程所在的文件夹必须同名。 2新建工程的时候注意选择板子型…

循环移位的学习

循环移位&#xff08;Rotational Shift&#xff09;&#xff0c;也称为循环位移&#xff0c;是一种特殊的位移操作。在循环移位中&#xff0c;移出的位会被重新放入到另一端&#xff0c;从而实现循环效果。与逻辑移位和算术移位不同&#xff0c;循环移位不丢失任何位&#xff0…

php中的错误和异常捕获

目录 一&#xff1a; 异常&#xff08;Exceptions&#xff09; 二&#xff1a; 错误&#xff08;Errors&#xff09; 三&#xff1a;实际项目的异常和错误处理 在PHP中&#xff0c;异常&#xff08;Exceptions&#xff09;和错误&#xff08;Errors&#xff09;是两个不同的…

比亚迪车机安装第三方应用教程

比亚迪车机安装第三方应用教程 比亚迪车机U盘安装APP&#xff0c; 无论是dlink3.0还是4.0都是安卓系统&#xff0c;因此理论上安卓应用是都可以安装的&#xff0c;主要就是横屏和竖屏的区别。在比亚迪上安装软件我主要推荐两种方法。 第一种&#xff0c;直接从电脑端下载安装布…

Standard IO

为了提高可移植性&#xff0c;将通用IO接口经过再封装就形成了标准IO&#xff0c;标准IO不仅适用于Unix环境&#xff0c;也兼容非Unix环境&#xff0c;这也是为什么说我们应该尽可能的使用标准IO&#xff0c;通用IO通过文件描述符fd来与文件交互&#xff0c;为了以示区分&#…

DCGAN的原理(附代码解读)

学习DCGAN之前需要了解一下转置卷积 可以参考学DCGAN对抗网络之前--转置卷积(附代码解读)-CSDN博客 1.DCGAN对于GAN的改进之处 网络架构的优化&#xff1a; DCGAN在生成器和判别器中明确使用了卷积层和卷积转置层&#xff08;也称为反卷积层或分数阶卷积层&#xff09;。这一…