一、 实验目的
验证交换机的自学习(MAC Learning)机制: 观察交换机如何通过读取数据帧的源MAC地址来动态构建"MAC地址转发表"。
验证交换机转发帧的决策过程: 对比观察交换机在不同情况下的处理方式,包括泛洪(未知单播盲目转发)、明确转发(已知单播转发)以及同端口过滤(丢弃帧)。
二、实验步骤
(一)构建网络拓扑
使用Cisco Packet Tracer (PT) 软件搭建基础局域网环境。
-
添加设备: 从设备库中拖入 4 台个人计算机(PC-PT)、1 台以太网交换机(2960系列)以及 1 台集线器(Hub-PT)至逻辑工作区。
-
连接线路: 点击左下角的"连接(Connections)"图标,选择
自动选择连接类型(Automatically Choose Connection Type,闪电图标),依次将各终端设备与交换机、集线器进行连接。
💡 新手避坑指南:交换机的"橙色指示灯" 连线完成后,您会发现交换机接口处的指示灯呈橙色(处于阻塞状态)。这是因为交换机默认开启了生成树协议(STP)进行防环路检测,需要等待大约 30-50 秒才能变为绿色(转发状态)。 加速技巧: 确保软件处于右下角的
实时模式(Realtime) ,点击左下角的
快进时间(Fast Forward Time) 按钮,即可瞬间完成拓扑收敛,使接口指示灯变绿。
构建网络拓扑
(二)标注IP地址、子网掩码以及MAC地址
良好的标注习惯能极大提高网络排错效率。请使用顶部工具栏的放置注释(Place Note,快捷键 N) 工具,在每台计算机旁清晰标注规划好的 IP 地址和子网掩码。
标注IP地址和子网掩码

标注MAC地址
(三)查看并标注交换机相关接口名称(接口号)
Cisco Packet Tracer软件默认可能会隐藏或显示所有接口标签,导致拓扑图信息拥挤遮挡。
-
查看接口名称: 将鼠标悬停在设备连接线上,或者进入
Options -> Preferences(选项 -> 首选项),勾选Always Show Port Labels in Logical Workspace(始终显示端口标签)。 -
优化显示: 建议将关键的接口号(如 Fa0/1, Fa0/3)手动作为"注释"写在拓扑图旁边,然后进入首选项关闭全局端口标签显示,以此保持实验界面的清爽整洁。
查看交换机相关接口名称
标注交换机相关接口名称
(四)配置IP地址和子网掩码
| 设备名称 | IP 地址 | 子网掩码 |
|---|---|---|
| PC0 | 192.168.0.1 | 255.255.255.0 |
| PC1 | 192.168.0.2 | 255.255.255.0 |
| PC2 | 192.168.0.3 | 255.255.255.0 |
| PC3 | 192.168.0.4 | 255.255.255.0 |
配置IP地址和子网掩码
(五)选择要监视的网络协议
为了排除背景数据包(如 STP、CDP 等协议)的干扰,我们需要精准抓取并观察本次实验的核心数据流。
-
切换模式: 单击右下角的 Simulation(仿真模式) 按钮。
-
重置过滤: 在弹出的仿真面板(Simulation Panel)中,单击 Show All/None 按钮清空当前所有默认监视的协议。
-
精准捕获: 单击 Edit Filters(编辑过滤器) ,在
IPv4选项卡下,仅勾选 ICMP(网际控制报文协议,即 Ping 测试使用的协议)。
选择要监视的网络协议
(六)网络连通性测试
在正式进入单步抓包观察之前,我们需要在实时模式(Realtime)下进行基础的网络连通性测试。除非是进行专门的网络故障排查,否则常规的 Ping 测试都建议在实时模式下快速完成。
1. 执行 Ping 测试
-
操作模式切换: 单击软件右下角的 Realtime(实时工作模式) 按钮。
-
PC0 测试: 单击 PC0,进入
Desktop -> Command Prompt(命令提示符)。输入ping 192.168.0.3测试与 PC2 的连通性;输入ping 192.168.0.4测试与 PC3 的连通性。 -
PC3 测试: 同理,在 PC3 的命令行中输入
ping 192.168.0.3,测试其与 PC2 的连通性。确保所有 Ping 测试均显示Reply from...(回复成功)。
2. 为什么要做这一步?
-
目的一: 验证拓扑构建和物理线路连接是否正常。
-
目的二: 验证各台 PC 的 IP 地址和子网掩码配置是否正确无误。
-
目的三(消除 ARP 干扰): 让 PC0、PC2、PC3 互相获取并缓存对方的 MAC 地址。如果在后续单步模拟时才触发 ARP(地址解析协议)广播请求,会产生大量额外的 ARP 数据包,干扰我们观察纯粹的 ICMP 交换机转发过程。
-
目的四(触发交换机自学习): 网络通信发生后,交换机会"被动"记录下这些 PC 的 MAC 地址与其自身接口的对应关系,从而自动生成转发表(MAC 地址表)。
分别测试PC0与PC2和PC3之间的连通性过程
分别测试PC0与PC2和PC3之间的连通性结果
测试PC3与PC2之间的连通性
PC3与PC2之间连通性测试结果
(七)查看并清空交换机的帧转发表
经过第六步的连通性测试,交换机已经通过"偷听"网络中的数据帧,学习到了各设备的具体方位。
1. 理论情况分析
-
在 PC0 与 PC2 通信时,交换机记住了:PC0 的 MAC 地址对应接口 Fa0/1。
-
在 PC2 响应时,交换机记住了:PC2 的 MAC 地址对应接口 Fa0/3。
-
在 PC0 与 PC3 通信时,交换机记住了:PC3 的 MAC 地址也对应接口 Fa0/3。
💡 进阶思考:为什么 PC2 和 PC3 都在 Fa0/3 接口? 因为 PC2 和 PC3 是通过**集线器(Hub)**连接到交换机的 Fa0/3 接口的。集线器属于物理层设备,对交换机来说是透明的。这就证明了交换机的一个端口可以学习并绑定多个 MAC 地址。
2. 通过 CLI 命令行验证与清空
为了在接下来的模拟实验中观察交换机"从零开始"的学习过程,我们需要先进入交换机的后台查看这张表,然后将其手动清空。
请单击交换机 Switch0,选择 CLI(命令行界面) 选项卡,按回车键激活终端,并依次输入以下命令:
Switch>enable //从用户执行模式进入特权执行模式
Switch#show mac-address-table //显示帧转发表(MAC地址表)的内容(请注意:命令和参数之间要有一个空格),显示交换机的帧转发表的内容
Switch#clear mac-address-table //清空帧转发表(MAC地址表)的内容
Switch#show mac-address-table //再次查看,确认表已经被成功清空
⚠️ 避坑指南:手速要快!注意交换机的"老化时间"
在完成步骤六的 Ping 测试后,请尽快(最好在 5 分钟内)进入交换机执行
show mac-address-table命令。原理科普: 交换机动态学习到的 MAC 地址并不是永久保存的。为了防止转发表被废弃的数据占满(比如某台电脑关机或拔了网线),交换机引入了老化时间(Aging Time) 机制。Cisco 交换机默认的动态 MAC 地址老化时间通常是 300 秒(5分钟)。
如果您在 Ping 完之后去倒了杯水或者等了太久,这 5 分钟内对应设备没有再发送任何数据,交换机就会默默地把这些刚刚学习到的 MAC 地址条目"遗忘"(删除)。届时您再去查看,就会发现表里没有任何数据,让人误以为实验失败了!



(八)验证交换机自学习和转发帧的过程
在正式开始单步跟踪前,我们需要牢记这两种网络设备截然不同的底层逻辑:
交换机(Switch - 二层设备): 具有"记忆"与"思考"能力。它通过读取数据帧的源 MAC 地址 来记录设备位置(自学习);通过查找目的 MAC 地址来决定出路(查表转发:找不到就泛洪/盲目转发,找到了就明确转发)。
集线器(Hub - 一层设备): 纯物理层设备,没有"记忆"能力。它收到电信号后,只会机械地从除接收端口之外的所有端口**广播(复制并发送)**出去。
场景一:明确转发与盲目转发(PC0 --> PC2 通信)

第一阶段:初始状态与发送准备
-
动作: PC0 准备向 PC2 发送一个单播帧(目标 IP:
192.168.0.3,目标 MAC:PC2 的 MAC000A.F353.8E69)。 -
设备状态: 首先进入交换机 CLI 界面,确保 MAC 地址表是完全空白的。如果已有数据,请使用以下命令清空:
Switch>enable //从用户执行模式进入特权执行模式
Switch#show mac-address-table //查看交换机的MAC地址表
Switch#clear mac-address-table //清空交换机的MAC地址表
Switch#show mac-address-table //再次查看,确认表已清空
PC0 准备向 PC2 发送一个单播帧
查看交换机的MAC地址表
第二阶段:PC0 发出数据,交换机自学习与泛洪
-
动作: 单播帧从 PC0 发出,进入交换机 Switch0 的
Fa0/1接口。 -
原理 1(自学习): 交换机拆开数据帧,检查源 MAC 地址 (即 PC0 的 MAC)。它立刻将该 MAC 地址与接收接口
Fa0/1绑定,并作为一条动态(DYNAMIC)记录写入 MAC 地址表中。 -
原理 2(盲目转发/泛洪): 接着,交换机检查帧的目的 MAC 地址 (PC2 的 MAC)。因为此时表中没有 PC2 的记录,交换机不知道 PC2 在哪。为了确保数据送达,它采取了"盲目转发(Flooding) "策略:将该帧从除接收端口
Fa0/1之外的同一 VLAN 下的所有端口(Fa0/2和Fa0/3接口)复制并发送出去。
单播帧从 PC0 发出,进入交换机 Switch0 的 Fa0/1 接口。
查看交换机的MAC地址表
第三阶段:设备接收与集线器无脑广播
-
动作: 数据帧同时到达了 PC1 和集线器 Hub0。
-
PC1 的反应: PC1 检查目的 MAC 发现不是自己,直接丢弃该帧(软件中表现为信封上的红叉)。
-
Hub0 的反应: 集线器收到帧后,发挥其物理层广播特性,直接复制发送给连接在其上的 PC2 和 PC3。
-
PC3 的反应: 同 PC1 一样,发现目的 MAC 不是自己,丢弃该帧。
-
PC2 的反应: 发现目的 MAC 匹配,接收并开始处理该 ICMP 请求。
数据帧到达了 PC1 和集线器 Hub0
PC3丢弃ICMP请求,PC2接受ICMP请求
第四阶段:PC2 响应与交换机再次自学习
-
动作: PC2 处理完毕,将封装有 ICMP 回送应答的单播帧发给集线器 Hub0(此时源 MAC 为 PC2,目的 MAC 为 PC0)。
-
集线器广播: Hub0 再次无脑广播,将响应帧发给 PC3 和交换机 Switch0(进入
Fa0/3接口)。PC3 依然丢弃。 -
原理 3(再次自学习): 响应帧进入交换机
Fa0/3接口。交换机读取源 MAC 地址 (PC2 的 MAC),将其与Fa0/3绑定并记录。此时,交换机的 MAC 表中已经成功积累了两条记录(PC0 和 PC2 的位置)。
将ICMP回送应答发送给集线器Hub0
PC3丢弃ICMP请求
查看交换机的MAC地址表
第五阶段:交换机精准投递(明确转发)
-
动作与原理: 交换机完成自学习后,开始处理这封响应帧。它读取目的 MAC 地址(PC0 的 MAC),并在 MAC 表中查找。
-
明确转发: 因为在第二阶段交换机已经记住了 PC0 在
Fa0/1接口,这次它实现了精准匹配 。交换机不再盲目泛洪,而是直接将数据帧通过Fa0/1接口单播发给 PC0。PC0 成功接收,通信圆满完成!
PC0成功接收ICMP回送应答
场景二:同端口过滤/丢弃帧(PC3 --> PC2 通信)
在这个场景中,我们将观察一种特殊情况:交换机认为"没必要转发",从而主动将帧丢弃。我们让 PC3 给 PC2 发送 ICMP 请求帧。

第一阶段:请求阶段与首次学习
-
动作: PC3 发出的单播请求帧到达集线器 Hub0。由于集线器的物理层广播特性,该帧被广播给了 PC2 和交换机 Switch0。
-
**接收与学习:**PC2 收到后,发现目的 MAC 是自己,接收并处理该请求。请求帧从接口 Fa0/3 进入交换机 Switch0。交换机进行自学习,将源地址(PC3的MAC)与接收接口 Fa0/3 绑定,记录到 MAC 地址表中。
第一步
第二步
第三步
查看交换机的MAC地址表
第二阶段(交换机盲目转发)
此时,交换机在 MAC 表中查找目的地址(PC2的MAC),由于之前没有相关记录(表里只有PC3),交换机只能采取盲目转发,将该请求帧从除了 Fa0/3 以外的 Fa0/1 和 Fa0/2 接口泛洪出去。PC0 和 PC1 收到后发现不是给自己的,将其丢弃。
第四步
第三阶段(响应阶段与同端口过滤)
-
动作: PC2 将 ICMP 响应帧发回给 Hub0,Hub0 广播给 PC3(通信完成)和交换机 Switch0。PC3 收到响应帧,通信完成。该响应帧再次从接口 Fa0/3 进入交换机。交换机进行自学习,将源地址(PC2的MAC)与接口 Fa0/3 绑定。此时 MAC 表中同时有了 PC2 和 PC3 的记录
-
核心原理(同端口过滤): 接着,交换机准备转发该帧,它查找目的地址(PC3 的 MAC),发现转发表中指示 PC3 的所在接口也是
Fa0/3。 -
交换机的判断: 既然数据帧是从
Fa0/3进来的,又要从Fa0/3发出去,说明源设备(PC2)和目的设备(PC3)在同一个网段(由集线器连接)。PC3 肯定已经通过集线器的物理广播收到了这个帧。为了避免网络拥堵,交换机果断对该帧执行**丢弃(过滤)**操作(表现为交换机上的红叉)。
第五步
查看交换机的MAC地址表
实时模式(Realtime) ,点击左下角的
快进时间(Fast Forward Time) 按钮,即可瞬间完成拓扑收敛,使接口指示灯变绿。
构建网络拓扑