Files
cs-note/hhs/NETWORK/02-链路层/04-Switch与路由器.md
T

182 lines
5.9 KiB
Markdown
Raw Normal View History

2026-05-24 11:42:38 +08:00
---
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 的路由表配置