5.1 交换机工作原理 (Switching Principle)
1. 局域网设备演进
在了解交换机之前,我们需要先回顾一下局域网连接设备的发展历程,这有助于理解为什么交换机是现在的核心设备。
1.1 Hub (集线器) - 物理层设备
- 工作模式:共享带宽,所有端口在同一个冲突域 (Collision Domain)。
- 转发原理:收到信号后,进行放大、整形,然后向除接收端口外的所有端口广播(泛洪)。
- 缺点:
- 无法识别 MAC 地址。
- 同一时刻只能有一台设备发送数据(半双工),否则会发生碰撞(Collision)。
- 安全性差(所有人都收得到数据)。
1.2 Bridge (网桥) - 二层设备
- 工作模式:能够识别 MAC 地址,根据 MAC 地址表进行转发。
- 特点:每个端口是一个独立的冲突域。
- 缺点:端口少,处理速度慢(早期主要靠软件处理)。
1.3 Switch (交换机) - 高性能多端口网桥
- 工作模式:独享带宽,全双工通信(Full Duplex)。
- 特点:
- 每个端口是一个独立的冲突域。
- 所有端口默认在同一个广播域 (Broadcast Domain)(除非划分 VLAN)。
- ASIC 芯片硬件转发,速度极快。
2. 二层交换机转发原理
交换机的核心工作依赖于 MAC 地址表 (MAC Address Table)。
2.1 MAC 地址表的构建 (Learning)
交换机通过“源 MAC 学习”机制来构建 MAC 地址表。
- 当交换机某个端口收到一个数据帧时,它会读取帧头中的 Source MAC (源 MAC)。
- 将 (源 MAC, 接收端口, VLAN) 的映射关系记录到 MAC 地址表中。
- “哦,原来 MAC 地址为 A 的电脑连接在我的 G0/0/1 口。”
注意:MAC 地址表条目是有老化时间 (Aging Time) 的,默认 300秒 (5分钟)。如果在老化时间内没有再次收到该 MAC 的流量,条目会被删除。
2.2 数据帧的转发 (Forwarding)
交换机根据帧头中的 Destination MAC (目的 MAC) 决定如何转发。
情形 1:单播 (Unicast) - 已知单播
- 如果目的 MAC 在 MAC 地址表中能找到。
- 动作:点对点转发 (只发给对应的那个端口)。
情形 2:单播 (Unicast) - 未知单播 (Unknown Unicast)
- 如果目的 MAC 在 MAC 地址表中找不到。
- 动作:泛洪 (Flood) (发给除接收端口外的所有同 VLAN 端口)。
- “我不知道 B 在哪,所以我喊一声,B 收到会回我,其他人丢弃。”
情形 3:广播 (Broadcast) / 组播 (Multicast)
- 如果目的 MAC 是广播地址 (
FF:FF:FF:FF:FF:FF) 或组播地址。 - 动作:泛洪 (Flood)。
- 如果目的 MAC 是广播地址 (
3. 冗余与环路 (Redundancy & Loops)
为了防止单点故障,网络设计通常会增加冗余链路(例如两台交换机之间连接两条线)。但这会带来环路 (Loop) 问题。
3.1 环路的危害
- 广播风暴 (Broadcast Storm):广播帧在环路中无限循环,瞬间占满带宽,导致网络瘫痪。
- MAC 地址表震荡 (MAC Address Table Flapping):同一个源 MAC 地址在不同端口频繁跳变,导致交换机无法正确转发。
3.2 解决方案
为了既保留冗余链路,又解决环路问题,引入了以下技术:
- 堆叠 (Stacking) / 集群 (CSS/iStack):将多台物理交换机虚拟化为一台逻辑交换机。从逻辑上看没有环路。
- 链路聚合 (Eth-Trunk):将多条物理链路捆绑为一条逻辑链路。
- Smart Link:主备链路切换(华为私有技术),用于双上行组网。
- STP (Spanning Tree Protocol):生成树协议(STP/RSTP/MSTP)。通过逻辑上阻塞某个端口来打破环路,当主链路故障时自动恢复阻塞端口。
4. 交换机处理 ARP 流程示例
假设拓扑:PC1 (IP: 1.1.1.1) --- SW --- PC2 (IP: 1.1.1.2)。PC1 Ping PC2。
4.1 以太网帧格式
以太网帧结构
Dst MAC
6 字节
Src MAC
6 字节
Type
2 字节
0x0806=ARP
Data (Payload)
46-1500 字节
FCS
4 字节
4.2 ARP 报文格式
ARP 报文结构
HTYPE
2B
PTYPE
2B
HLEN
1B
PLEN
1B
OPER
2B
SHA
6B
SPA
4B
THA
6B
TPA
4B
字段说明:
• HTYPE: 硬件类型 (1=以太网) | PTYPE: 协议类型 (0x0800=IPv4)
• HLEN: 硬件地址长度 (6) | PLEN: 协议地址长度 (4)
• OPER: 操作码 (1=Request, 2=Reply)
• SHA/SPA: 源 MAC / 源 IP | THA/TPA: 目标 MAC / 目标 IP
• HTYPE: 硬件类型 (1=以太网) | PTYPE: 协议类型 (0x0800=IPv4)
• HLEN: 硬件地址长度 (6) | PLEN: 协议地址长度 (4)
• OPER: 操作码 (1=Request, 2=Reply)
• SHA/SPA: 源 MAC / 源 IP | THA/TPA: 目标 MAC / 目标 IP
4.3 完整通信流程
- PC1:查路由表,发现 PC2 在同一网段。封装 ICMP 包,但不知道 PC2 的 MAC。
- PC1:发送 ARP Request (广播)。
- 以太网头:SMAC: PC1_MAC, DMAC: FF:FF:FF:FF:FF:FF, Type: 0x0806
- ARP 载荷:OPER=1, SHA=PC1_MAC, SPA=1.1.1.1, THA=00:00:00:00:00:00, TPA=1.1.1.2
- SW:
- 学习:记录
PC1_MAC -> Port 1。 - 转发:DMAC 是广播,向所有端口(除了 Port 1) 泛洪。
- 学习:记录
- PC2:收到 ARP Request,发现找的是自己。
- 回复:发送 ARP Reply (单播)。
- 以太网头:SMAC: PC2_MAC, DMAC: PC1_MAC, Type: 0x0806
- ARP 载荷:OPER=2, SHA=PC2_MAC, SPA=1.1.1.2, THA=PC1_MAC, TPA=1.1.1.1
- SW:
- 学习:记录
PC2_MAC -> Port 2。 - 转发:DMAC 是 PC1_MAC,查表发现 PC1 在 Port 1,单播转发给 Port 1。
- 学习:记录
- PC1:收到 MAC,封装 ICMP Request 发送。后续交互均为单播。
4. 安全风险:MAC 泛洪攻击
- 原理:攻击者短时间内发送大量伪造源 MAC 的数据帧。
- 后果:交换机的 MAC 地址表被填满(容量有限,如 8K/16K)。新的合法 MAC 无法学习,交换机被迫将后续流量全部泛洪,变成了“Hub”,攻击者即可截获流量。
- 防御:端口安全 (Port Security)。
- 限制每个端口允许学习的最大 MAC 数量(例如只允许 1 个)。
- 超过限制后触发动作:丢弃、报警或关闭端口。
bash
# 华为配置示例
interface GigabitEthernet 0/0/1
port-security enable
port-security max-mac-num 1
port-security protect-action shutdown