Skip to content

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 地址表。

  1. 当交换机某个端口收到一个数据帧时,它会读取帧头中的 Source MAC (源 MAC)
  2. (源 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)

3. 冗余与环路 (Redundancy & Loops)

为了防止单点故障,网络设计通常会增加冗余链路(例如两台交换机之间连接两条线)。但这会带来环路 (Loop) 问题。

3.1 环路的危害

  1. 广播风暴 (Broadcast Storm):广播帧在环路中无限循环,瞬间占满带宽,导致网络瘫痪。
  2. MAC 地址表震荡 (MAC Address Table Flapping):同一个源 MAC 地址在不同端口频繁跳变,导致交换机无法正确转发。

3.2 解决方案

为了既保留冗余链路,又解决环路问题,引入了以下技术:

  1. 堆叠 (Stacking) / 集群 (CSS/iStack):将多台物理交换机虚拟化为一台逻辑交换机。从逻辑上看没有环路。
  2. 链路聚合 (Eth-Trunk):将多条物理链路捆绑为一条逻辑链路。
  3. Smart Link:主备链路切换(华为私有技术),用于双上行组网。
  4. 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

4.3 完整通信流程

  1. PC1:查路由表,发现 PC2 在同一网段。封装 ICMP 包,但不知道 PC2 的 MAC。
  2. 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
  3. SW
    • 学习:记录 PC1_MAC -> Port 1
    • 转发:DMAC 是广播,向所有端口(除了 Port 1) 泛洪
  4. 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
  5. SW
    • 学习:记录 PC2_MAC -> Port 2
    • 转发:DMAC 是 PC1_MAC,查表发现 PC1 在 Port 1,单播转发给 Port 1。
  6. 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