网络基础 | 交换机的基本原理:MAC 表是怎么学会转发的?
华为 eNSP · S5700 · 二层交换 · MAC 地址表 · 学习/转发/泛洪/丢弃 · 冲突域与广播域
集线器一收到数据就群发,100 台电脑挤一个冲突域;交换机却能把数据精准送到目标。一篇文章讲透交换机「凭什么知道发给谁」—— 从 MAC 地址表的学习逻辑,到四种核心行为,到冲突域/广播域的本质区别,附完整拓扑、转发流程图与踩坑清单。
📑 目录
- 什么是交换机
- 核心:MAC 地址表
- 四大工作行为
- 转发决策流程图
- 实验拓扑
- 完整例子:PC1 第一次 ping PC2 发生了什么
- 三种转发方式对比
- 冲突域 vs 广播域
- 交换机 vs 集线器 vs 路由器
- 常见踩坑与易混点
一、什么是交换机
交换机(Switch)是二层网络设备,核心职责是在局域网内按 MAC 地址转发帧。它和我们前面讲的路由器最大的区别:
| 对比项 | 集线器 Hub | 交换机 Switch | 路由器 Router |
|---|---|---|---|
| 工作层次 | 物理层(一层) | 数据链路层(二层) | 网络层(三层) |
| 转发依据 | 无脑群发 | MAC 地址 | IP 地址 |
| 冲突域 | 所有口同一冲突域 | 每个口独立冲突域 | 每个口独立冲突域 |
| 广播域 | 不分割 | 不分割(整机一个) | 分割广播域 |
💡 一句话区分:路由器管「跨网段去哪」(看 IP),交换机管「同网段发给谁」(看 MAC)。交换机默认不隔离广播域,这是 VLAN 出现的原因(下篇讲)。
二、核心:MAC 地址表
交换机靠一张 MAC 地址表(CAM 表) 工作,表结构本质是「MAC 地址 ↔ 端口」的映射:
| MAC 地址 | 端口 | 类型 | 老化时间 |
|---|---|---|---|
| 5489-98A1-0001 | GE0/0/1 | dynamic | 剩余 287s |
| 5489-98A1-0002 | GE0/0/2 | dynamic | 剩余 199s |
| 5489-98B3-00FF | GE0/0/3 | dynamic | 剩余 301s |
三个关键特性,必考:
- 动态学习:交换机收到帧后,把「源 MAC + 入端口」自动记进表,不需要手动配
- 老化时间:华为默认 300 秒。某 MAC 300 秒内没再出现过,条目被删除,下次重新泛洪学习
- 类型:表中条目多为
dynamic(动态学习),也可手工绑定static(静态,不老化)
常用查看命令:
<SW1> display mac-address # 查看整张 MAC 地址表
<SW1> display mac-address aging-time # 查看老化时间(默认 300s)
<SW1> mac-address aging-time 500 # 修改老化时间为 500 秒
<SW1> reset mac-address all # 清空 MAC 表(慎用,清空后重新泛洪学习)
三、四大工作行为(学习 / 转发 / 泛洪 / 丢弃)
这是交换机最常被问到的「四种行为」,每个行为对应一种触发条件:
① 学习 Learning:收到任意帧,先把源 MAC + 入端口写进 MAC 表。即使是广播帧,也能顺便学到发送方的位置。
② 转发 Forwarding:查目的 MAC,表中有对应端口 → 单播精准转发到那个端口,其他端口不受影响。
③ 泛洪 Flooding:查目的 MAC,表中没有(未知单播),或目的本身是广播/组播 → 从「除入端口外的所有端口」发出去,问一圈「谁是这个 MAC」。
④ 丢弃 Discarding:查到目的 MAC 的端口恰好等于入端口(说明目标就在同一端口另一侧)→ 直接丢弃,避免无效转发。
🔑 记忆口诀:「看源记表,看目查表;查得到单播,查不到广播;同口就丢」。
四、转发决策流程图
下面这张图把「收到一帧后交换机脑子里走的逻辑」画成流程图:

五、实验拓扑:二层交换机直连四台 PC
下面是一台二层交换机 LSW1 下挂 4 台 PC,全部在同一广播域 192.168.1.0/24:

六、完整例子:PC1 第一次 ping PC2 发生了什么
把上面拓扑跑一遍,看交换机 MAC 表从空到满的全过程:
① PC1 发 ARP 请求(广播)
PC1 不知道 PC2 的 MAC,先发广播 ARP「谁是 192.168.1.20?」。交换机收到帧:
- 学习:源 MAC = MAC-A,入端口 = GE0/0/1 → 写进表(学到 PC1 在哪)
- 泛洪:目的 MAC 是广播 → 从 GE0/0/2、3、4 全发(入端口 1 不发)
② PC2 回 ARP 应答(单播)
只有 PC2 响应,单播发给 PC1。交换机收到帧:
- 学习:源 MAC = MAC-B,入端口 = GE0/0/2 → 写进表(学到 PC2 在哪)
- 转发:目的 MAC = MAC-A,表中有 → 单播精准转发到 GE0/0/1(PC3、PC4 完全收不到)
③ 之后 PC1 ↔ PC2 互访
双方 MAC 都在表里,全部单播转发,其他端口零打扰。这就是交换机比集线器高效的根本原因。
⚠️ 关键点:交换机是先「学源」再「查目」。哪怕第一帧目的是广播,它也已经趁机能学到发送方位置 —— 所以「第一次通信必泛洪,之后全单播」。
七、三种转发方式对比
交换机硬件转发帧有三种模式,差异在「收到多少才开始转」:
| 转发方式 | 何时开始转发 | 是否校验 CRC | 延迟 | 优缺点 |
|---|---|---|---|---|
| 存储转发 Store-and-Forward | 收完整个帧 | ✅ 校验 | 最大 | 错误帧不转发,最可靠,华为默认模式 |
| 直通转发 Cut-Through | 读到目的 MAC 即转 | ❌ 不校验 | 最小 | 极快,但坏帧也转发 |
| 碎片隔离 Fragment-Free | 读到前 64 字节 | 部分 | 居中 | 过滤冲突碎片,折中方案 |
💡 实际企业交换机多为存储转发(默认),因为能挡掉 CRC 错误的坏帧;直通转发多用于对延迟极度敏感的交易场景。
八、冲突域 vs 广播域
这是面试高频题,也是理解交换机边界的关键:
| 概念 | 含义 | 集线器 | 交换机 | 路由器 |
|---|---|---|---|---|
| 冲突域 | 同一时刻只能一台设备发数据,否则冲突 | 整机 1 个 | 每个端口 1 个(分割) | 每个端口 1 个 |
| 广播域 | 广播帧能到达的范围 | 整机 1 个 | 整机 1 个(不分割) | 每个端口 1 个(分割) |
重点:交换机分割「冲突域」但不分割「广播域」。 它让每台 PC 独享带宽(不再抢信道),但广播包(如 ARP)仍会传遍全网 —— 网大了广播风暴就来了,于是才有 VLAN 来分割广播域(下一篇展开)。
九、交换机 vs 集线器 vs 路由器
一张表收尾,把三个设备彻底分清:
| 维度 | 集线器 Hub | 交换机 Switch | 路由器 Router |
|---|---|---|---|
| 工作层次 | 物理层 L1 | 数据链路层 L2 | 网络层 L3 |
| 转发依据 | 无 | MAC 地址 | IP 地址 |
| 转发方式 | 群发 | 学习+单播/泛洪 | 查路由表 |
| 冲突域 | 不分割 | 分割(每口独立) | 分割 |
| 广播域 | 不分割 | 不分割 | 分割 |
| 典型用途 | 已基本淘汰 | 局域网内部互联 | 跨网段/互联出口 |
十、常见踩坑与易混点
| # | 易混/踩坑 | 正确理解 |
|---|---|---|
| 1 | 交换机「隔离广播域」 | ❌ 错,交换机不隔离广播域,只有路由器/VLAN 才隔离 |
| 2 | MAC 表是手工配的 | ❌ 错,默认动态学习,老化 300s 后自动删 |
| 3 | 第一次通信就单播 | ❌ 错,第一次必泛洪(表里没目的 MAC),之后才单播 |
| 4 | 广播帧交换机也「学习」 | ✅ 对,广播帧也能学到源 MAC 位置 |
| 5 | 交换机工作在网络层 | ❌ 错,二层设备看 MAC,不看 IP(三层交换机另说) |
| 6 | 老化时间改不了 | ❌ 错,mac-address aging-time 可改 |
| 7 | 目的端口=入端口还转发 | ❌ 错,这种情况丢弃(同口过滤) |
| 8 | 交换机=集线器升级版就对了 | ⚠️ 对一半,本质区别在「按 MAC 精准转发 + 分割冲突域」 |
结语
交换机的基本原理就这几点:看源记表、看目查表、查不到广播、同口就丢。它的高效来自「动态 MAC 地址表 + 单播精准转发 + 每端口独立冲突域」,局限是「不隔离广播域」。理解了这四句话,二层交换就通了。
下一步预告:交换机不隔离广播域 → 网大了广播风暴怎么办?下一篇讲 VLAN(虚拟局域网):怎么用逻辑划分把广播域切开,以及 Access / Trunk 端口、单臂路由跨 VLAN 通信。
📌 续写命令模板:把「VLAN 基础配置(Access/Trunk)+ 单臂路由跨 VLAN 通信」按本系列同款风格(拓扑 SVG + 5 色标注 + 对比表 + 踩坑表)展开即可。
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/qq_41840843/article/details/168969064




