vault backup: 2026-05-27 11:24:47
This commit is contained in:
@@ -13,27 +13,47 @@ MAC(Media Access Control)地址是数据链路层的物理地址,为全球
|
||||
|
||||
### OUI + NIC Serial
|
||||
|
||||
```
|
||||
┌───────────────┬───────────────┐
|
||||
│ OUI (3B) │ NIC Serial │
|
||||
│ IEEE 分配 │ 厂商自定 │
|
||||
│ │ │
|
||||
│ AA:BB:CC │ DD:EE:FF │
|
||||
└───────────────┴───────────────┘
|
||||
```mermaid
|
||||
flowchart LR
|
||||
subgraph OUI["OUI — 前 3 字节 (IEEE 分配)"]
|
||||
B1["AA"] --- B2["BB"] --- B3["CC"]
|
||||
end
|
||||
subgraph NIC["NIC Serial — 后 3 字节 (厂商自定)"]
|
||||
B4["DD"] --- B5["EE"] --- B6["FF"]
|
||||
end
|
||||
OUI --- NIC
|
||||
```
|
||||
|
||||
- **OUI** (Organizationally Unique Identifier): 前 3 字节由 IEEE 分配给厂商
|
||||
- **NIC Serial**: 后 3 字节由厂商自行分配给具体网卡
|
||||
|
||||
> [!tip] 48 位,全球唯一
|
||||
> MAC 地址共 6 字节 = 48 位,理论上可表示 2^48(约 281 万亿)个地址。日常中你看到的 `aa:bb:cc:dd:ee:ff` 或 `aa-bb-cc-dd-ee-ff` 只是两种书写格式,完全等价。
|
||||
|
||||
### 寻址类型位
|
||||
|
||||
第一个字节的最低比特位(LSB)决定类型:
|
||||
第一个字节的最低两位比特承载了关键的语义信息(它们属于 OUI 的一部分,但具有特殊含义):
|
||||
|
||||
| 位模式 | 类型 | 示例 |
|
||||
| 比特位 | 名称 | 作用 |
|
||||
|--------|------|------|
|
||||
| `xx:xx:xx:xx:xx:xx` — LSB=0 | 单播 (Unicast) | `a0:88:b4:12:34:56` |
|
||||
| `01:00:5e:xx:xx:xx` — LSB=1 | IPv4 组播 | 特定多播组 |
|
||||
| `ff:ff:ff:ff:ff:ff` | 广播 (Broadcast) | 全网段广播 |
|
||||
| Bit 0(最低位) | **I/G** (Individual/Group) | 0 = 单播,1 = 组播/广播 |
|
||||
| Bit 1 | **U/L** (Universal/Local) | 0 = 厂商全局唯一,1 = 本地管理 |
|
||||
|
||||
> [!question] 思考一下
|
||||
> 为什么 IEEE 要在 OUI 里预留两个"控制位",而不是把 48 位全部用来编号?
|
||||
|
||||
完整的类型判定:
|
||||
|
||||
| I/G | U/L | 类型 | 说明 | 示例 |
|
||||
|-----|-----|------|------|------|
|
||||
| 0 | 0 | **厂商单播** | 最常见,网卡出厂烧录 | `a0:88:b4:12:34:56` |
|
||||
| 0 | 1 | **本地单播** | 管理员/软件自定义(见下文) | `02:42:ac:11:00:02` |
|
||||
| 1 | 0 | **标准组播** | IPv4 组播 MAC | `01:00:5e:00:00:fb`(mDNS) |
|
||||
| 1 | 1 | **本地组播** | 较少见 | — |
|
||||
| 1 | 1 | **广播** | 特例:全 1 地址 | `ff:ff:ff:ff:ff:ff` |
|
||||
|
||||
> [!tip] 简化记忆
|
||||
> 看第一个字节的十六进制最低位:**偶数** → 单播,**奇数** → 组播/广播。例如 `a0`(偶)= 单播,`01`(奇)= 组播。
|
||||
|
||||
## 广播域(Broadcast Domain)
|
||||
|
||||
@@ -65,6 +85,18 @@ flowchart LR
|
||||
|
||||
**结论:** Switch 内部不隔离广播域,只有 Router(或三层交换机)的 VLAN 接口才能隔离广播。这就是为什么大型网络需要划分 VLAN。
|
||||
|
||||
> [!question] 冲突域 vs 广播域——你能分清吗?
|
||||
> 这两个概念经常被混淆,它们是两个**不同维度**:
|
||||
>
|
||||
> | | 冲突域 (Collision Domain) | 广播域 (Broadcast Domain) |
|
||||
> |---|---|---|
|
||||
> | **定义** | 同一时刻只能有一台设备发送数据的网络范围 | 广播帧能到达的所有设备集合 |
|
||||
> | **被 Hub 扩大** | ✅ 是 | ✅ 是 |
|
||||
> | **被 Switch 隔离** | ✅ 每个端口一个冲突域 | ❌ 同 VLAN 内不隔离 |
|
||||
> | **被 Router 隔离** | ✅ 是 | ✅ 是 |
|
||||
>
|
||||
> 简记:**Switch 隔离冲突域,Router 隔离广播域**。面试高频考点。
|
||||
|
||||
## 二层转发 vs 三层转发
|
||||
|
||||
### ARP 解析流程(跨网段的情况)
|
||||
@@ -126,6 +158,43 @@ $ ip neigh # 等价于 arp,更现代
|
||||
|
||||
MAC 表条目有超时时间(通常 300 秒),超时后自动删除,等待下一帧到来重新学习。这防止了表中堆积无效条目。
|
||||
|
||||
## 本地管理地址(LAA)与 MAC 欺骗
|
||||
|
||||
### 什么是 LAA?
|
||||
|
||||
当 U/L 位 = 1 时,该地址不再是 IEEE 全局分配的,而是由**管理员或软件自行设定**,称为 Locally Administered Address (LAA)。
|
||||
|
||||
### 谁在用 LAA?
|
||||
|
||||
| 场景 | 说明 |
|
||||
|------|------|
|
||||
| Docker 容器 | 容器的 veth 接口 MAC 通常以 `02:42:` 开头 |
|
||||
| 虚拟机 (KVM/QEMU) | 虚拟网卡 MAC 以 `52:54:` 开头 |
|
||||
| 隐私保护 | iOS/Android 的 Wi-Fi 随机 MAC 地址 |
|
||||
| MAC 欺骗攻击 | 攻击者伪造目标 MAC 以实施中间人攻击 |
|
||||
|
||||
### MAC 欺骗原理
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant Attacker as 攻击者
|
||||
participant Switch as Switch
|
||||
participant Victim as 受害者
|
||||
participant GW as 网关
|
||||
|
||||
Note over Switch: MAC表: GW_mac → Port3
|
||||
Attacker->>Switch: 发送伪造帧 (Src MAC = GW_mac)
|
||||
Note over Switch: 更新MAC表: GW_mac → Port1(攻击者)!
|
||||
GW->>Switch: 发往受害者的数据
|
||||
Switch->>Attacker: 转发到 Port1(攻击者端口)
|
||||
Attacker->>Victim: 转发给受害者(无感知)
|
||||
```
|
||||
|
||||
> [!warning] 防御 MAC 欺骗
|
||||
> - **Port Security**:限制每个端口可学习的 MAC 数量
|
||||
> - **Dynamic ARP Inspection (DAI)**:校验 ARP 报文合法性
|
||||
> - **802.1X 认证**:端口级准入控制,未认证设备无法通信
|
||||
|
||||
## 广播风暴与防范
|
||||
|
||||
### 什么是广播风暴?
|
||||
|
||||
Reference in New Issue
Block a user