Appearance
交换机工作原理
考情分析
交换机的自学习算法是 408 选择题和简答题的常见考点。常见考法:给定网络拓扑和帧的发送序列,要求写出 MAC 地址表的变化过程和每一步的转发行为。
考频:★★★
交换机 vs 集线器
| 对比项 | 集线器(Hub) | 交换机(Switch) |
|---|---|---|
| 工作层次 | 物理层 | 数据链路层 |
| 转发方式 | 收到帧后向所有端口转发(泛洪) | 根据 MAC 地址表定向转发 |
| 冲突域 | 所有端口在同一冲突域 | 每个端口是独立冲突域 |
| 带宽 | 所有端口共享带宽 | 每个端口独享带宽 |
集线器就是一个"多端口中继器",只是简单地将信号放大并转发到所有端口,不做任何智能判断。交换机则会根据帧的目的 MAC 地址来决定往哪个端口转发。
MAC 地址表
交换机内部维护一张 MAC 地址表(也叫转发表、CAM 表),记录了"MAC 地址 ↔ 端口"的映射关系。
| MAC 地址 | 端口 | 老化时间 |
|---|---|---|
| AA:BB:CC:00:00:01 | 端口 1 | 300s |
| AA:BB:CC:00:00:02 | 端口 2 | 250s |
| AA:BB:CC:00:00:03 | 端口 3 | 180s |
- 每条记录有一个老化时间(通常默认 300 秒)
- 如果某条记录在老化时间内没有被刷新(即没有收到对应 MAC 地址的帧),就会被删除
- MAC 地址表在交换机启动时是空的,通过自学习逐步建立
自学习过程
交换机收到一个帧时,执行以下步骤:
第 1 步:学习(更新 MAC 地址表)
查看帧的源 MAC 地址和入端口。如果 MAC 地址表中没有该源 MAC 地址的记录,就添加一条"源 MAC → 入端口"的映射。如果已有记录但端口不同,就更新端口(可能是设备换了端口)。
第 2 步:转发(根据目的 MAC 决定行为)
查看帧的目的 MAC 地址,在 MAC 地址表中查找。根据查找结果,执行三种行为之一。
三种转发行为
1. 转发(Forwarding)
目的 MAC 在地址表中找到了,且对应端口不是入端口 → 将帧从对应端口转发出去。
2. 过滤(Filtering)
目的 MAC 在地址表中找到了,且对应端口就是入端口 → 丢弃该帧。因为目的设备和源设备在同一端口下(同一网段),帧不需要经过交换机转发。
3. 泛洪(Flooding)
目的 MAC 在地址表中没找到,或者目的 MAC 是广播地址 → 将帧从除入端口外的所有端口转发出去。
完整示例
假设交换机有 4 个端口,初始 MAC 地址表为空。
拓扑:
- 端口 1:主机 A(MAC: AA)
- 端口 2:主机 B(MAC: BB)
- 端口 3:主机 C(MAC: CC)
- 端口 4:主机 D(MAC: DD)
第 1 步:A 发帧给 B
| 动作 | 说明 |
|---|---|
| 学习 | 源 MAC=AA,入端口=1 → 地址表添加 AA→端口1 |
| 转发 | 目的 MAC=BB,地址表中没有 → 泛洪(发往端口2,3,4) |
地址表:AA→端口1
第 2 步:B 回复帧给 A
| 动作 | 说明 |
|---|---|
| 学习 | 源 MAC=BB,入端口=2 → 地址表添加 BB→端口2 |
| 转发 | 目的 MAC=AA,地址表中有 AA→端口1 → 转发到端口1 |
地址表:AA→端口1,BB→端口2
第 3 步:C 发帧给 A
| 动作 | 说明 |
|---|---|
| 学习 | 源 MAC=CC,入端口=3 → 地址表添加 CC→端口3 |
| 转发 | 目的 MAC=AA,地址表中有 AA→端口1 → 转发到端口1 |
地址表:AA→端口1,BB→端口2,CC→端口3
第 4 步:A 发帧给 B
| 动作 | 说明 |
|---|---|
| 学习 | 源 MAC=AA,入端口=1 → 已有记录,刷新老化时间 |
| 转发 | 目的 MAC=BB,地址表中有 BB→端口2 → 转发到端口2 |
第二次 A→B 就不需要泛洪了,交换机已经学会了 B 的位置。
交互可视化
生成树协议 STP
当网络中存在冗余链路(为了提高可靠性),交换机之间可能形成环路。环路会导致广播风暴——广播帧在环路中无限循环,迅速耗尽网络带宽。
STP(Spanning Tree Protocol,生成树协议,IEEE 802.1D) 通过在逻辑上禁用部分链路,将网络拓扑裁剪成一棵无环的生成树。
STP 的基本过程:
- 选举根桥(Root Bridge):优先级最小(或 MAC 地址最小)的交换机成为根桥
- 每个非根交换机选择一个到根桥路径代价最小的端口作为根端口
- 每段链路选择一个指定端口
- 其余端口被设为阻塞状态,不转发数据帧
408 考试中 STP 一般只考概念,不涉及详细的选举过程。
易错点
1. 自学习是看源 MAC 地址,不是目的 MAC 地址
学习阶段看的是"这个帧从哪来的"→ 源 MAC + 入端口。转发阶段才看目的 MAC。
2. 泛洪不包括入端口
泛洪是发往"除入端口外的所有端口",不是所有端口。否则帧会回到发送者那里。
3. 广播帧一定泛洪
即使 MAC 地址表很完整,广播帧(目的 MAC = FF:FF:FF:FF:FF:FF)也始终泛洪。这是广播的定义决定的。
4. MAC 地址表会老化
地址表不是永久的。如果某设备长时间不通信,对应记录会被删除。下次收到该设备的帧时需要重新学习。
高频考点清单
- 交换机工作在数据链路层,集线器工作在物理层
- MAC 地址表的学习过程:记录源 MAC 和入端口
- 转发、过滤、泛洪三种行为的触发条件
- 给定帧传输序列,分析地址表变化和转发行为
- 交换机每个端口是独立冲突域,所有端口在同一广播域
- STP 的目的:消除二层环路,防止广播风暴