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
真人撰写written by human