4.8 KiB
4.8 KiB
tags, create time
| tags | create time | |||||
|---|---|---|---|---|---|---|
|
2026-05-17 22:50 |
Ethernet 帧结构
概述
Ethernet(以太网)是目前最主流的局域网技术,由 Xerox、DEC 和 Intel 在 1980 年联合制定(IEEE 802.3)。理解 Ethernet 帧结构是掌握网络底层通信的基础——每一帧都包含了足够的信息来让网卡判断"这是给我的吗?内容完整吗?上层协议是什么?"
Ethernet II 帧格式(最常见)
┌──────────┬──────────┬──────────┬─────────────┬──────────┐
│ Dest MAC │ Src MAC │ EtherType│ Payload │ FCS │
│ 6 bytes │ 6 bytes │ 2 bytes │ 46–1500 B │ 4 bytes │
│ aabb.ccdd│ dd.eeff. │ 0x0800 │ IP Packet │ crc32() │
│ ee.ff.00│ │ │ │ │
└──────────┴──────────┴──────────┴─────────────┴──────────┘
←──────── 14 bytes Header ───────→ ← Tail →
←──── Min Frame = 64B ────→
←──── Max Frame = 1518B ────→
字段详解
| 字段 | 大小 | 说明 |
|---|---|---|
| Dest MAC | 6 bytes | 目标 MAC 地址,ff:ff:ff:ff:ff:ff 表示广播 |
| Src MAC | 6 bytes | 源 MAC 地址,发出方的物理地址 |
| EtherType | 2 bytes | 上一层协议类型:0x0800=IPv4, 0x86DD=IPv6, 0x0806=ARP |
| Payload | 46–1500 bytes | 承载的上层数据包。最小 46 字节,不足则填充(Padding) |
| FCS | 4 bytes | CRC-32 校验和,网卡硬件自动计算,接收端验证错误则直接丢弃 |
为什么 Payload 最小 46 字节?
最早的以太网最大电缆长度 2500m,信号传播延迟需要至少 64 字节才能保证碰撞检测(CSMA/CD)生效。所以规定整个帧最小 64 字节,减去 14 字节头部和 4 字节 FCS,Payload 最少 46 字节。短包会补零填满。
现代 Gigabit+ 网卡已不用 CSMA/CD,但为了兼容仍保留此限制。
IEEE 802.3 / 802.3Q(VLAN Tagged)帧
当网络中使用 VLAN 时,帧中会插入一个 4 字节的 802.1Q Tag:
┌──────────┬──────────┬──────┬──────┬──────────┬─────────────┬──────────┐
│ Dest MAC │ Src MAC │ Type │ TPID │ TCI/VID │ Payload │ FCS │
│ 6 bytes │ 6 bytes │ 2B │2B │ 2B │ 46–1500 B │ 4 bytes │
└──────────┴──────────┴──────┴──────┴──────────┴─────────────┴──────────┘
新增字段:
- TPID (Tag Protocol Identifier):
0x8100— 标识这是带 VLAN Tag 的帧 - TCI (Tag Control Information): 包含 PCP(优先级,3 bit)、CFI(规范格式指示符,1 bit)、VID(VLAN ID,12 bit)
VID 取值范围 1–4094,共 4094 个可用 VLAN。
常见 EtherType 对照表
| EtherType | 十六进制 | 协议 |
|---|---|---|
| IPv4 | 0x0800 |
IP 数据包 |
| IPv6 | 0x86DD |
IPv6 数据包 |
| ARP | 0x0806 |
地址解析协议 |
| RARP | 0x8035 |
反向 ARP(历史遗留) |
| PPPoE | 0x8864 |
PPP over Ethernet |
| 802.1Q | 0x8100 |
VLAN 标记 |
| LACP | 0x8809 |
链路聚合控制协议 |
MAC 地址空间与 OUI
OUI(Organizationally Unique Identifier)
MAC 地址的前三个字节由 IEEE 统一分配给厂商,称为 OUI。查询 OUI 可以知道网卡的制造商:
$ ip link show
link/ether aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff
↑ 前三个字节 aa:bb:cc 就是 OUI
# 在线查询:https://www.wireshark.org/tools/oui-lookup.html
# Linux 也可以用 ethtool -P eth0 查看出厂 MAC
单播/多播位(LSB of First Byte)
第一个字节的最低比特位决定寻址类型:
| LSB | 类型 | 示例 |
|---|---|---|
| 0 | 单播 (Unicast) | aa:bb:cc:dd:ee:ff |
| 1 | 多播 (Multicast) | 01:00:5e:xx:xx:xx(IPv4 组播) |
| 1 | 广播 (Broadcast) | ff:ff:ff:ff:ff:ff |
[!tip] 如何快速判断?看 MAC 第一个字节的十六进制最后一位
a→ 1010 → LSB=0 → 单播3→ 0011 → LSB=1 → 多播/广播
关联笔记
- hhs/NETWORK/OSI与TCP-IP模型对比 — 以太网属于链路层
- hhs/NETWORK/MAC地址与广播域 — MAC 地址的工作范围
- hhs/NETWORK/Switch与路由器 — Switch 如何使用 MAC 表转发帧