182 lines
5.9 KiB
Markdown
182 lines
5.9 KiB
Markdown
---
|
||
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 的路由表配置
|