Files
cs-note/hhs/NETWORK/02-链路层/04-Switch与路由器.md
T
2026-05-24 11:42:38 +08:00

182 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
tags: [计算机网络, Switch, Hub, Router, VLAN]
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)。收到任何端口的电信号,放大后复制到所有其他端口。
```mermaid
flowchart LR
A["PC-A 发送"] -->|"信号"| H[Hub]
H -->|"原样复制"| B["PC-B (收到!)"]
H -->|"原样复制"| C["PC-C (碰撞! 🔥)"]
style H fill:#FF6B6B,color:#fff
```
### 致命缺陷
1. **所有端口在同一冲突域**:两台同时发送 = 碰撞 → CSMA/CD 退避
2. **只能半双工**:同一时刻要么收要么发
3. **无法隔离故障**:一台 PC 中毒疯狂发包会影响所有人
4. **安全性差**:所有流量对所有端口可见
## Switch(交换机)——现代 LAN 核心
### 工作原理
Switch 为每个端口维护一张独立的 MAC 表,只将帧转发到目标端口,实现"点对点"通信。
```mermaid
flowchart TD
S["Switch<br/>MAC 表: mac_A→Port1, mac_B→Port2"]
PC_A["PC-A → Port1"] -->|"发给 Mac_B"| S
S -->|"仅从 Port2 发出"| PC_B["PC-B"]
PC_D["PC-D → Port4"] -->|"未知目标"| S
S -->|"泛洪到 Port1,2,3"| N["Port1~3 都收到<br/>只有正确的会处理"]
style S fill:#98FB98,color:#000
```
### MAC 表学习流程
```mermaid
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 → Port2 only ✅
```
### Switch 的关键优势
| 特性 | 说明 |
|------|------|
| **每个端口一个冲突域** | 端口间互不影响 |
| **全双工通信** | 收发光纤分开,可同时对发对收 |
| **硬件转发** | ASIC 芯片查 MAC 表,延迟 < 1ms |
| **背板带宽** | 交换机内部总线,决定交换能力上限 |
| **VLAN 支持** | 802.1Q 实现逻辑分割 |
### 常见 Switch 规格参数
| 参数 | 说明 | 典型值 |
|------|------|-------|
| 端口速率 | 千兆/万兆/25G/100G | 1/10 Gbps |
| 端口数 | 24/48 口最常见 | — |
| 背板带宽 | 内部交换容量 | 双向 ≥ 端口总数 × 速率 × 2 |
| 包转发率 | PPS (packets per second) | 10G 端口满速 ≈ 14.88M PPS |
| 缓存 | SRAM 缓冲丢包 | 几 MB ~ 几百 MB |
## Router(路由器)——跨网段互联
### 工作原理
Router 运行在 OSI 第三层,根据 **IP 路由表**做出转发决策,不同接口属于不同的子网和广播域。
```mermaid
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)时:
```mermaid
sequenceDiagram
participant A as PC-A
participant R as Router
participant B as PC-B
Note over A: 判断:192.168.2.10 不在本地子网?<br/>→ 走默认网关
A->>R: Frame{SrcMac=A, DstMac=Gateway}<br/>IP(Src=192.168.1.10,<br/> Dst=192.168.2.10)
Note over R: Step 1: Strip Ethernet Header<br/>Step 2: 校验 IP Checksum<br/>Step 3: 查路由表 → 下一跳 via eth1<br/>Step 4: ARP 找 B 的 MAC<br/>Step 5: Rebuild Ethernet Header
R->>B: Frame{SrcMac=Gateway, DstMac=B}<br/>IP(Src=192.168.1.10,<br/> Dst=192.168.2.10)
Note over R: ← MAC 改了 ← IP 没变
```
### 关键规则:IP 不变,MAC 逐跳改
```mermaid
flowchart LR
A["原始帧<br/>SrcMAC=A DstMAC=R1-E0<br/>SrcIP=A DstIP=B"] -->|"通过 Router1"| M1["帧改写<br/>SrcMAC=R1-E1 DstMAC=R2-E0<br/>SrcIP=A DstIP=B ← 不变!"]
M1 -->|"通过 Router2"| M2["帧改写<br/>SrcMAC=R2-E1 DstMAC=B<br/>SrcIP=A DstIP=B"]
style A fill:#DDA0DD,color:#000
style M2 fill:#98FB98,color:#000
```
> [!tip] 一句话记住区别
> **Switch 看 MAC 转发,Router 看 IP 转发。** Switch 是"同城快递",Router 是"跨省物流"。
## 三者的协作关系
现实网络中,三者通常协同工作:
```
PC ──┬── Hub(旧时代遗留) ← 冲突域大,已淘汰
├── Switch(局域网核心) ← MAC 转发表驱动,全双工
│ │
│ └── Router(网关) ← IP 路由表驱动,隔离广播域
│ │
│ └── ISP Router → Internet
│
└── Wireless AP → Switch (AP 本身不转发)
```
## 关联笔记
- [[hhs/NETWORK/MAC地址与广播域]] — Switch 如何管理 MAC 表和广播
- [[hhs/NETWORK/VLAN与Trunk]] — 三层交换机如何实现 VLAN 间路由
- [[hhs/NETWORK/静态路由与默认网关]] — Router 的路由表配置