27 KiB
tags, create time
| tags | create time | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
2026-05-17 23:20 |
Switch vs Hub vs Router
概述
这三种设备是构建局域网的核心组件,但它们工作在完全不同的 OSI 层,转发决策的依据也不同。理解它们的差异是设计网络拓扑的基础。
| 特性 | Hub(集线器) | Switch(交换机) | Router(路由器) |
|---|---|---|---|
| OSI 层级 | 物理层 L1 | 数据链路层 L2 | 网络层 L3 |
| 寻址依据 | 无(全量复制) | MAC 地址 | IP 地址 + 路由表 |
| 冲突域 | 全部共享 | 每个端口独立 | 每个接口独立 |
| 广播域 | 全部共享(一个广播域) | 不隔离(同 VLAN 内) | 天然隔离 |
| 性能 | 极低(半双工) | 高(全双工并行) | 依赖 CPU/ASIC |
| 现代使用 | ❌ 已淘汰 | ✅ 局域网核心 | ✅ 网关/边界 |
Hub(集线器)——已淘汰的共享介质
工作原理
Hub 本质上就是一个多端口的中继器(Repeater)。收到任何端口的电信号,放大后复制到所有其他端口。
flowchart LR
A["PC-A 发送"] -->|"信号"| H["Hub"]
H -->|"原样复制"| B["PC-B 收到"]
H -->|"原样复制"| C["PC-C 碰撞"]
style H fill:#FF6B6B,color:#fff
致命缺陷
- 所有端口在同一冲突域:两台同时发送 = 碰撞 → CSMA/CD 退避
- 只能半双工:同一时刻要么收要么发
- 无法隔离故障:一台 PC 中毒疯狂发包会影响所有人
- 安全性差:所有流量对所有端口可见
[!question] 思考 Hub 已经被淘汰了,为什么我们还要了解它?因为 Switch 的泛洪行为本质上就是退化成了 Hub——理解 Hub 的缺陷,才能理解后面 CAM 表攻击的危害。
冲突域 vs 广播域
这两个概念贯穿整个 L2 学习,必须清晰区分:
flowchart TD
subgraph "冲突域 Collision Domain"
CD1["同一时刻只能有一方发送, 否则碰撞"]
end
subgraph "广播域 Broadcast Domain"
BD1["一条广播帧能到达的所有设备集合"]
end
Hub["Hub: 所有端口 = 1 个冲突域, 1 个广播域"]
SW["Switch: 每端口 = 1 个冲突域, 同 VLAN = 1 个广播域"]
RT["Router: 每接口 = 既隔离冲突域, 也隔离广播域"]
style CD1 fill:#FF6B6B,color:#fff
style BD1 fill:#87CEEB,color:#000
[!question] 思考 交换机能隔离冲突域,但不能隔离广播域(VLAN 内)——那广播风暴的防护靠什么?答案是 VLAN 分割广播域 + STP 防环,这也是后面两篇笔记的核心主题。
Switch(交换机)——现代 LAN 核心
工作原理
Switch 维护一张全局 MAC 表(CAM 表),记录"哪个 MAC 地址在哪个端口"的映射关系。收到帧时查表,只将帧转发到目标端口,实现"点对点"通信。
flowchart TD
S["Switch MAC表 mac_A→Port1, mac_B→Port2"]
A["PC-A Port1"] -->|"发给 mac_B"| S
S -->|"仅从 Port2 发出"| B["PC-B"]
D["PC-D Port4"] -->|"未知目标"| S
S -->|"泛洪到 Port1,2,3"| N["Port1到3都收到, 只有正确的会处理"]
style S fill:#98FB98,color:#000
[!question] 思考 Switch 的泛洪和 Hub 的复制有什么区别?Hub 是无差别地复制所有帧,而 Switch 只在 MAC 表中找不到目标时才泛洪。一旦学到地址,就走精确转发——这就是"智能"的地方。
MAC 表学习流程
sequenceDiagram
participant SW as Switch
participant A as PC-A mac_A
participant B as PC-B mac_B
A->>SW: Frame mac_A→mac_B from Port1
SW->>SW: Learn mac_A on Port1
SW->>B: Flood mac_B unknown
B->>SW: Reply Frame mac_B→mac_A from Port2
SW->>SW: Learn mac_B on Port2
A->>SW: Next Frame mac_A→mac_B from Port1
SW->>SW: Forward directly to Port2
[!info] MAC 地址表的老化 交换机的 CAM 表条目不是永久的。如果某个 MAC 地址在老化时间(默认通常 300 秒 / 5 分钟)内没有再出现,该条目会被自动清除。这保证了表项不会被已离线设备永久占据,但也是 MAC 泛洪攻击能生效的前提——攻击者必须持续发送伪造帧来维持表满状态。
Switch 的关键优势
| 特性 | 说明 |
|---|---|
| 每个端口一个冲突域 | 端口间互不影响 |
| 全双工通信 | 收发光纤分开,可同时对发对收 |
| 硬件转发 | ASIC 芯片查 MAC 表,延迟 < 1μs |
| 背板带宽 | 交换机内部总线,决定交换能力上限 |
| VLAN 支持 | 802.1Q 实现逻辑分割 |
[!tip] 关于全双工 全双工 = 收发同时进行,物理上收发走不同线对(或波长)。这意味着冲突域的概念在全双工下已不存在——不需要 CSMA/CD。
[!info] IGMP Snooping:多播流量的守护者 交换机默认会把多播帧像广播一样泛洪到所有端口。IGMP Snooping 让交换机监听 IGMP 报文,学习哪些端口有多播组成员,只将多播流量转发到有接收者的端口。典型场景:IPTV 组播、视频会议。没有 IGMP Snooping 的交换机在多播场景下会严重浪费带宽。
常见 Switch 规格参数
| 参数 | 说明 | 典型值 |
|---|---|---|
| 端口速率 | 千兆/万兆/25G/100G | 1/10 Gbps |
| 端口数 | 24/48 口最常见 | — |
| 背板带宽 | 内部交换容量 | 双向 ≥ 端口总数 × 速率 × 2 |
| 包转发率 | PPS (packets per second) | 10G 端口满速 ≈ 14.88M PPS |
| 缓存 | SRAM 缓冲丢包 | 几 MB ~ 几百 MB |
[!question] 思考 10G 端口满速为什么恰好是 14.88M PPS?因为最小以太网帧 64 字节 + 8 字节前导码 + 12 字节帧间距 = 84 字节,10Gbps / (84×8 bits) ≈ 14.88M。记住这个数字,面试常考。
交换模式:帧怎么被转发的?
交换机在转发帧时,有三种读取策略,它们在延迟和可靠性之间做出不同的取舍:
| 模式 | 行为 | 延迟 | 错误检测 | 适用场景 |
|---|---|---|---|---|
| Cut-through 直通转发 | 读完目标 MAC 就立刻开始转发 | 最低 | ❌ 不校验 | 对延迟极端敏感的高频交易 |
| Store-and-Forward 存储转发 | 完整接收帧 → CRC 校验 → 无误再转发 | 较高 | ✅ 完整校验 | 现代交换机默认模式 |
| Fragment-Free 无碎片转发 | 读取前 64 字节后转发(过滤冲突碎片) | 中等 | ⚠️ 部分 | 早期 Catalyst 交换机 |
[!info] 为什么 Fragment-Free 检查恰好 64 字节? 以太网规定最小帧长 64 字节。冲突产生的碎片(runt frame)一定小于 64 字节——如果一个帧在传输前 64 字节期间没发生冲突,后续碰撞的概率极低。Fragment-Free 通过检查前 64 字节,用较低代价过滤掉了绝大部分冲突碎片,是 Cut-through 和 Store-and-Forward 之间的折中方案。
[!tip] 为什么 Store-and-Forward 成为主流? 早期 ASIC 算力不够,Cut-through 有延迟优势。但现代 ASIC 做 CRC 校验几乎零开销,Store-and-Forward 的可靠性优势(能丢弃损坏帧、避免错误帧浪费带宽)远大于那点微秒级延迟差异。
STP:交换机环路的终结者
当交换机之间存在冗余链路时(高可用设计的标配),帧可能在环路中无限循环:
flowchart LR
SW1["SW1 根桥"] -->|"转发"| SW2["SW2"]
SW1 -->|"转发"| SW3["SW3"]
SW2 -->|"广播帧循环"| SW3
SW3 -->|"广播帧循环"| SW2
style SW1 fill:#98FB98,color:#000
style SW2 fill:#FFD700,color:#000
style SW3 fill:#FFD700,color:#000
环路会导致三大灾难:
- 广播风暴:广播帧被无限复制,瞬间耗尽带宽
- MAC 表抖动:同一帧从不同端口到达,交换机不断更新 MAC 表导致转发表不稳定
- 重复帧接收:终端收到多份相同帧,协议栈混乱
STP(Spanning Tree Protocol, 802.1D)的解决思路: 通过选举算法,逻辑上"阻塞"某些端口,让拓扑变成一棵无环的树。
flowchart TD
SW1["SW1 根桥 Root Bridge"] -->|"DP"| SW2["SW2"]
SW1 -->|"DP"| SW3["SW3"]
SW2 -->|"DP"| SW3
SW3 -.->|"BLK 阻塞"| SW2
style SW1 fill:#98FB98,color:#000
style SW2 fill:#DDA0DD,color:#000
style SW3 fill:#FFD700,color:#000
[!info] 图中端口角色
- DP(Designated Port):每个网段上负责转发的端口,由到根桥路径开销最小的交换机拥有。根桥的所有端口都是 DP(图中 SW1 的三个端口、SW2→SW3 链路上 SW2 的端口均为 DP)。
- RP(Root Port):每个非根桥上有且仅有一个到达根桥的最优端口。图中 SW2 面向 SW1 的端口 和 SW3 面向 SW1 的端口 就是各自 RP。比较规则:路径开销最小 → 对端 Bridge ID 最小 → 对端 Port ID 最小。
- BLK(Blocked):逻辑阻塞,不转发数据帧,仅接收 BPDU 以防拓扑变化。图中 SW3 面向 SW2 的端口被阻塞,从而打破环路。
STP 选举规则:
- 选根桥:Bridge ID(优先级 + MAC 地址)最小的交换机
- 选根端口(RP):每个非根桥选一个到根桥"最优路径"的端口(比较路径开销 → 对端 Bridge ID → 对端 Port ID)
- 选指定端口(DP):每个网段选一个负责转发的端口(通常是离根桥更近的一方)
- 阻塞其余端口:不转发数据帧,只接收 BPDU
[!tip] STP vs RSTP 经典 STP 收敛需要 30~50 秒(Blocking → Listening → Learning → Forwarding),这在现代网络中不可接受。RSTP(802.1w) 将收敛时间缩短到秒级,是当前生产环境的标准选择。
STP 安全增强机制
STP 本身没有认证,恶意设备可以伪造 BPDU 抢占根桥或制造环路。以下三个机制是生产环境必备:
| 机制 | 作用 | 应用位置 |
|---|---|---|
| BPDU Guard | 如果接收到 BPDU,立即 shutdown 端口 | 连接终端的 Access 端口(防止用户私接交换机) |
| Root Guard | 如果收到更优的 BPDU,将端口置为 root-inconsistent | 非信任方向端口(防止非法设备抢占根桥) |
| Loop Guard | 如果单向链路故障导致收不到 BPDU,将端口置为 loop-inconsistent | RP 和 Alternate 端口(防止单向故障引起环路) |
[!question] 思考 BPDU Guard 和 Root Guard 看起来很像,区别在哪?BPDU Guard 是"绝不允许 BPDU 出现"——一旦收到就关停,适用于接入层终端端口。Root Guard 是"允许 BPDU 但不允许更优的"——保护根桥地位不被篡改,适用于汇聚/核心层非信任方向端口。
EtherChannel:STP 的补丁
STP 阻塞冗余端口来防环,但代价是浪费了那条链路的带宽。EtherChannel(LACP/PAgP)将多条物理链路捆绑成一条逻辑链路,解决这个问题:
flowchart LR
SW1["SW1"] -->|"物理链路 x4 捆绑为 1 条逻辑链路"| SW2["SW2"]
Note1["STP 只看到 1 条逻辑链路, 不会阻塞"] -.-> SW1
| 特性 | 说明 |
|---|---|
| 带宽叠加 | 4 条 1G 链路 = 1 条 4G 逻辑链路 |
| STP 透明 | STP 将捆绑组视为单条链路,不阻塞任何成员 |
| 故障切换 | 某条物理链路断开,流量自动分配到剩余链路 |
| 协商协议 | LACP(802.3ad,开放标准)/ PAgP(Cisco 私有) |
[!info] 负载均衡哈希算法 EtherChannel 的"负载均衡"并非逐包轮询,而是基于流(per-flow)哈希——同一对源/目的通信始终走同一条物理链路,保证帧顺序不乱。哈希输入字段的选择直接影响均衡效果:
哈希模式 哈希字段 适用场景 src-mac源 MAC 服务器下行(多客户端 → 一服务器) dst-mac目的 MAC 多服务器场景 src-dst-ip(推荐)源 + 目的 IP 大多数场景,均衡效果最佳 src-dst-mac源 + 目的 MAC 二层环境 # Cisco 配置哈希算法 Switch(config)# port-channel load-balance src-dst-ip
[!question] 思考 既然 EtherChannel 这么好,为什么不把所有链路都捆绑?因为捆绑的成员链路必须连接相同的两端设备、相同速率/双工,且有数量上限(通常 8 条)。更重要的是——基于流的哈希意味着单条流仍然只能走一条物理链路,不能突破单链路速率上限。如果只有少数大流量流,可能出现"看似 4G 实际只用 1G"的不均衡。
CAM 表安全:当 Switch 退化成 Hub
交换机的 CAM 表(MAC 表)容量是有限的,通常为数千到数万条。攻击者可以利用这一点:
MAC 泛洪攻击原理:
sequenceDiagram
participant ATK as Attacker
participant SW as Switch CAM 8192 entries
participant V as Victim
ATK->>SW: 伪造 10万+ 个随机源 MAC 帧
SW->>SW: CAM 表溢出
Note over SW: 无法学习新 MAC, 退化为 Hub 模式, 所有未知流量泛洪到所有端口
V->>SW: 正常通信帧
SW->>ATK: 泄漏, 帧被泛洪到攻击者端口
防御措施:
| 措施 | 原理 |
|---|---|
| 端口安全 (Port Security) | 限制每个端口学习的最大 MAC 数,超限则触发违规动作(见下表) |
| DHCP Snooping | 构建 IP-MAC 绑定表,过滤非法 DHCP 响应 |
| Dynamic ARP Inspection (DAI) | 基于 DHCP Snooping 表校验 ARP 报文的合法性 |
| 802.1X 认证 | 端口级准入控制,未认证设备无法通信 |
[!info] 端口安全的三种违规模式
模式 超限行为 是否发送 SNMP Trap 是否递增 Violation 计数 端口状态 Protect 静默丢弃违规帧 ❌ ❌ 保持 UP(最容易被忽视) Restrict 丢弃违规帧 ✅ ✅ 保持 UP Shutdown(默认) 丢弃违规帧 ✅ ✅ err-disabled,需手动 shutdown/no shutdown恢复生产环境推荐 Shutdown 模式——故障暴露最明显,能迫使运维介入排查。如果担心影响可用性,可配合
errdisable recovery自动恢复。
[!question] 思考 为什么 MAC 泛洪攻击能让 Switch 退化成 Hub?因为 CAM 表满后,交换机无法学习新的 MAC-端口 映射关系,对于所有"未知目标"的帧只能泛洪——这恰恰就是 Hub 的行为。理解 Hub 的工作方式,才能理解这个攻击的本质。
ARP 欺骗:另一种 L2 攻击
MAC 泛洪是让交换机"退化",而 ARP 欺骗则是"欺骗"——攻击者直接篡改 ARP 映射关系,将流量劫持到自己手中。
ARP 欺骗原理:
sequenceDiagram
participant ATK as Attacker
participant GW as Gateway 192.168.1.1
participant V as Victim 192.168.1.10
ATK->>GW: 伪造 ARP Reply: 192.168.1.10 is at MAC_ATK
GW->>GW: ARP 表被污染, 192.168.1.10 → MAC_ATK
ATK->>V: 伪造 ARP Reply: 192.168.1.1 is at MAC_ATK
V->>V: ARP 表被污染, 网关 → MAC_ATK
Note over V,GW: 所有流量经过 Attacker, 实现中间人攻击
[!info] 为什么 ARP 协议如此脆弱? ARP 协议设计之初没有认证机制——任何设备都可以主动发送 ARP Reply(免费 ARP),接收方不会验证其真实性。在没有防护的网络中,攻击者可以随意声称"我就是网关"。这也是为什么 ARP 欺骗至今仍是内网渗透中最常用的手法之一。
ARP 欺骗 vs MAC 泛洪对比:
| 维度 | MAC 泛洪 | ARP 欺骗 |
|---|---|---|
| 攻击目标 | 交换机 CAM 表 | 终端 ARP 缓存 |
| 攻击效果 | Switch 退化成 Hub(泛洪) | 流量劫持到攻击者(精准定向) |
| 流量截获 | 被动嗅探泛洪流量 | 主动中间人,可篡改/重放 |
| 防御措施 | Port Security | DAI + DHCP Snooping(核心组合) |
[!tip] DAI + DHCP Snooping 的防御逻辑 DHCP Snooping 在交换机上建立一张"IP-MAC-端口"可信绑定表(信任表)。DAI(Dynamic ARP Inspection) 则拦截所有 ARP 报文,对照这张绑定表校验:如果 ARP 声称的 IP-MAC 映射不在表中,直接丢弃。两道防线配合,几乎可以完全封堵 ARP 欺骗。详见 hhs/NETWORK/08-网络安全/01-DDoS与MITM防御。
风暴控制:流量的最后一道闸门
MAC 泛洪攻击针对的是 CAM 表容量,而广播风暴针对的是带宽——当广播/多播帧因环路或恶意行为失控时,网络瞬间瘫痪。STP 防环是根本方案,但 Storm Control 是每个端口上的最后一道保险:
| 参数 | 说明 |
|---|---|
| 监控对象 | 广播帧、多播帧、未知单播帧(可分别配置) |
| 阈值方式 | 带宽百分比 / 帧速率(pps) / 绝对速率(bps) |
| 超限动作 | 阻塞(shutdown)/ 仅丢弃超限帧(drop)/ 发送 SNMP Trap 告警 |
# Cisco IOS 配置示例
interface GigabitEthernet0/1
storm-control broadcast level 20 # 广播流量超过带宽 20% 时触发
storm-control multicast level pps 1000 # 多播超过 1000 pps 时触发
storm-control action shutdown # 超限直接 shutdown 端口
[!question] 思考 STP 已经防环了,为什么还需要 Storm Control?因为 STP 只防"环路导致的"广播风暴,无法防护恶意终端主动发送大量广播帧。两者是不同层级的防护:STP 是拓扑级(防环),Storm Control 是端口级(限速),在生产环境中应同时启用。
Router(路由器)——跨网段互联
工作原理
Router 运行在 OSI 第三层,根据 IP 路由表做出转发决策,不同接口属于不同的子网和广播域。
flowchart TD
subgraph "LAN 1 - 192.168.1.0/24"
A["PC-A 192.168.1.10"]
S["Local Switch"]
end
subgraph "Router Gateway"
R["Router eth0 .1, eth1 .1"]
end
subgraph "LAN 2 - 192.168.2.0/24"
B["PC-B 192.168.2.10"]
S2["Local Switch"]
end
A --> S --> R
R --> S2 --> B
style A fill:#DDA0DD,color:#000
style B fill:#DDA0DD,color:#000
style R fill:#98FB98,color:#000
Router 转发动作详解
当 PC-A(192.168.1.10)要发数据给 PC-B(192.168.2.10)时:
sequenceDiagram
participant A as PC-A
participant R as Router
participant B as PC-B
Note over A: 判断 192.168.2.10 不在本地子网, 走默认网关
A->>R: Frame SrcMAC=A, DstMAC=Gateway, IP Src=192.168.1.10, Dst=192.168.2.10
Note over R: Step1 Strip Ethernet Header, Step2 校验 IP Checksum, Step3 TTL -1, 若 TTL=0 则丢弃并回 ICMP Time Exceeded, Step4 查路由表 via eth1, Step5 ARP 找 B 的 MAC, Step6 Rebuild Ethernet Header
R->>B: Frame SrcMAC=Gateway, DstMAC=B, IP Src=192.168.1.10, Dst=192.168.2.10
Note over R: MAC 改了, IP 没变
[!info] TTL 的作用:防止环路中的无限循环 路由器每转发一个包,TTL 减 1。当 TTL 降为 0 时,路由器丢弃该包并向源 IP 发送 ICMP Time Exceeded 消息——这就是
traceroute的工作原理。每一跳路由器都会返回一条 ICMP 消息,从而揭示完整路径。
关键规则:IP 不变,MAC 逐跳改
flowchart LR
A["原始帧 SrcMAC=A, DstMAC=R1-E0, SrcIP=A, DstIP=B"] -->|"通过 Router1"| M1["帧改写 SrcMAC=R1-E1, DstMAC=R2-E0, IP不变"]
M1 -->|"通过 Router2"| M2["帧改写 SrcMAC=R2-E1, DstMAC=B, IP不变"]
style A fill:#DDA0DD,color:#000
style M2 fill:#98FB98,color:#000
[!question] 思考 为什么要这样设计?因为 IP 地址是端到端的逻辑标识(告诉你"最终目的地"),而 MAC 地址是逐跳的物理标识(告诉你"下一跳该发给谁")。就像寄快递:收件人地址(IP)全程不变,但每个中转站的转运标签(MAC)都会换。
Router 的路由功能
路由器的核心能力是路由——根据路由表决定数据包的去向。路由来源分三种:
| 路由类型 | 说明 | 配置方式 |
|---|---|---|
| 直连路由 | 接口 UP 后自动学习 | 无需配置 |
| 静态路由 | 管理员手动指定 | ip route 10.0.0.0/8 192.168.1.1 |
| 动态路由 | 协议自动交换(OSPF/BGP) | 启动路由协议进程 |
# Linux 查看路由表
$ ip route show
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.10
10.0.0.0/8 via 192.168.1.254 dev eth0 # 静态路由
# Cisco IOS 查看路由表
Router# show ip route
S 10.0.0.0/8 [1/0] via 192.168.1.254 # S = Static
C 192.168.1.0/24 is directly connected # C = Connected
[!tip] 路由表中的"最长前缀匹配" 当多条路由都匹配目标 IP 时,路由器选择掩码最长的那条。例如同时有
10.0.0.0/8和10.1.0.0/16,发往10.1.2.3的包会走/16这条——越精确的路由越优先。
[!info] 管理距离(AD)和度量值(Metric) 当同一条路由从不同来源学到时(如 OSPF 和 RIP 都宣告了
10.0.0.0/16),路由器用两个维度做选择:
- 管理距离 AD(Administrative Distance):衡量路由来源的可信度。直连 = 0,静态 = 1,OSPF = 110,RIP = 120——AD 越小越优先。
- 度量值 Metric:同一协议内比较路径优劣。OSPF 看带宽(Cost),RIP 看跳数——Metric 越小越优先。
选择顺序:最长前缀匹配 → AD 最小 → Metric 最小。这个三步判定是路由选路的核心逻辑,面试和排障都会用到。
Router 的其他关键功能
路由转发只是路由器的一部分能力,现代路由器实际上身兼数职:
| 功能 | 说明 | 典型场景 |
|---|---|---|
| NAT | 将私有 IP 转换为公有 IP | 家庭路由器、企业出口 |
| ACL | 基于五元组的包过滤 | 禁止外部访问内网特定端口 |
| QoS | 流量优先级调度 | VoIP 优先于普通数据 |
| DHCP Server | 自动分配 IP 地址 | 小型网络无需独立 DHCP 服务器 |
| VPN | 加密隧道 | 远程办公接入企业内网 |
[!question] 思考 Switch 和 Router 的功能边界正在模糊——三层交换机可以做 VLAN 间路由,路由器也能做交换。在你的网络架构中,什么场景用纯 L2 Switch、什么场景用 L3 Switch、什么场景用 Router?带着这个问题继续学习后面的 VLAN 和路由章节。
L3 交换机:Switch 与 Router 的融合
传统的 L2 Switch 只看 MAC 转发,跨 VLAN 通信必须绕道路由器——这在大型企业网中成为性能瓶颈。L3 交换机将路由功能集成到交换机的 ASIC 硬件中,实现"线速路由":
flowchart TD
subgraph "传统方案 Router-on-a-Stick"
VA1["Host-A VLAN10"] -->|"所有跨VLAN流量上行"| TR["Trunk 链路"]
TR --> R["Router 子接口"]
R -->|"回传下行"| TR2["Trunk 链路"]
TR2 --> VB1["Host-B VLAN20"]
end
subgraph "L3 交换机方案"
VA2["Host-A VLAN10"] --> L3["L3 Switch 内部 SVI 路由"]
L3 --> VB2["Host-B VLAN20"]
end
| 对比 | Router-on-a-Stick | L3 交换机 |
|---|---|---|
| 转发方式 | CPU 软件路由 | ASIC 硬件路由 |
| 性能 | 受路由器 CPU 限制 | 线速转发 |
| 拓扑 | 需要 Trunk 到路由器 | 内部完成,无需外部设备 |
| 适用场景 | 小型网络 | 中大型企业网核心 |
[!tip] SVI(交换虚拟接口) L3 交换机通过 SVI 实现 VLAN 间路由——为每个 VLAN 创建一个虚拟三层接口(如
interface Vlan10,配置 IP192.168.10.1),充当该 VLAN 的网关。数据包在交换机内部直接完成路由,无需离开设备。
[!info] L3 交换机为什么比路由器快? 关键在于转发路径不同:
- 传统路由器:收到包 → CPU 查路由表 → CPU 执行 ARP → CPU 封装新帧 → 发出。每一步都经过 CPU,性能受主频限制。
- L3 交换机:预先从路由表构建硬件转发表(无需等待第一个包触发),所有数据包由 ASIC 直接在硬件层面完成查表 + 改写 MAC + 转发,完全绕过 CPU。这个通用理念称为"一次路由,多次交换"。Cisco 的实现叫 CEF(Cisco Express Forwarding),基于 FIB(Forwarding Information Base) + Adjacency Table 双表架构——FIB 由路由表预计算而来,存储目标前缀 → 下一跳映射;Adjacency Table 存储每一跳对应的 L2 封装头(源/目的 MAC),两者配合实现"查一次表,改两处数据,直接发出"。华为对应叫 快速转发,同样基于 FIB 硬件表。核心思路一致:把软件查表的结果预计算到硬件表中,实现线速转发。
打个比方:路由器像一个每次都走审批流程的公司,L3 交换机像一个把常规流程固化成自动化的公司——第一次走流程建模板,之后同类请求直接自动执行。
[!warning] FIB vs LFIB 易混淆 FIB 用于标准 IP 转发(本节讨论的场景);LFIB(Label FIB) 是 MPLS 标签转发的概念,两者不要混淆。
三者的协作关系
现实网络中,三者通常协同工作:
flowchart TD
PC["终端 PC"] --> H["Hub 旧时代遗留, 冲突域大, 已淘汰"]
PC --> SW["Switch 局域网核心, MAC 转发表驱动, 全双工"]
SW --> RT["Router 网关, IP 路由表驱动, 隔离广播域"]
RT --> ISP["ISP Router 接入 Internet"]
PC --> WAP["Wireless AP 接入 Switch, AP 本身不转发"]
style H fill:#FF6B6B,color:#fff
style SW fill:#98FB98,color:#000
style RT fill:#DDA0DD,color:#000
style ISP fill:#87CEEB,color:#000
排障速查
| 操作 | Switch | Router | Linux 对等命令 |
|---|---|---|---|
| 查看 MAC 表 | show mac-address-table |
— | bridge fdb show |
| 查看路由表 | — | show ip route |
ip route show |
| 查看 ARP 表 | show arp |
show arp |
ip neigh show |
| 查看接口状态 | show interfaces status |
show ip interface brief |
ip link show |
| 端口安全配置 | switchport port-security maximum 2 |
— | 无直接对等命令(可用 ebtables / tc 限制) |
[!tip] Linux 网络排障组合拳 快速定位 L2/L3 问题的三板斧:
ip link show # L1/L2: 接口是否 UP?速率/双工? ip neigh show # L2: ARP 解析是否正常?MAC 是否正确? ip route get <目标IP> # L3: 走哪条路由?下一跳是谁?
关联笔记
- hhs/NETWORK/02-链路层/03-MAC地址与广播域 — Switch 如何管理 MAC 表和广播
- hhs/NETWORK/02-链路层/05-VLAN与Trunk — 三层交换机如何实现 VLAN 间路由
- hhs/NETWORK/03-网络层/04-ARP协议完整流程 — ARP 如何解析 MAC 地址
- hhs/NETWORK/03-网络层/06-静态路由与默认网关 — Router 的路由表配置
- hhs/NETWORK/03-网络层/08-NAT原理与应用 — Router 的 NAT 功能详解
- hhs/NETWORK/08-网络安全/01-DDoS与MITM防御 — MAC 泛洪等 L2 攻击防御