以太网帧格式和802.1q帧格式
时间: 2025-03-22 22:12:00 浏览: 124
### 以太网帧格式与IEEE 802.1Q VLAN标记帧格式的结构与区别
#### 一、以太网帧格式概述
以太网常用的两种帧格式分别为 **Ethernet II** 和 **IEEE 802.3**。其中,Ethernet II 是目前最广泛使用的帧格式[^1]。
- Ethernet II 帧的关键特征在于其包含一个 `Type` 字段,用于指示后续数据包的具体协议类型。例如:
- 当 `Type=0x8000` 表示 IP 协议包;
- 当 `Type=0x8060` 则表示 ARP 协议包。
- 而 IEEE 802.3 的主要差异体现在它不使用 `Type` 字段,而是通过一个长度字段来指定数据部分的实际大小。
以下是 Ethernet II 的典型结构:
| 领域 | 长度 (字节) |
|--------------|-------------|
| 目标地址 | 6 |
| 源地址 | 6 |
| 类型/长度 | 2 |
| 数据 | 可变 |
| FCS | 4 |
---
#### 二、IEEE 802.1Q VLAN 标记帧格式概述
为了支持虚拟局域网(VLAN),IEEE 定义了 **802.1Q** 封装标准,在传统以太网帧的基础上增加了 VLAN 标签信息[^3]。
- VLAN 标签由四个字段组成,总长度为 4 字节:
- **TPID (Tag Protocol Identifier)**: 2 字节,固定值为 `0x8100`,表明这是一个带有 VLAN 标志的数据帧。
- **TCI (Tag Control Information)**: 2 字节,进一步细分为以下子字段:
- **Priority Code Point (PCP):** 3 比特,定义优先级级别。
- **Canonical Format Indicator (CFI):** 1 比特,通常设置为 0。
- **VLAN ID:** 12 比特,唯一标识所属的 VLAN 编号(范围为 0 至 4095)。
以下是带 VLAN 标记的标准以太网帧结构:
| 领域 | 长度 (字节) |
|--------------|-------------|
| 目标地址 | 6 |
| 源地址 | 6 |
| TPID | 2 |
| TCI | 2 |
| Type/Length | 2 |
| 数据 | 可变 |
| FCS | 4 |
---
#### 三、两者的区别总结
1. **基本功能上的不同**
- Ethernet II 主要关注于区分不同的上层协议类型,因此引入了 `Type` 字段。
- IEEE 802.1Q 更侧重于实现网络分隔和流量管理的功能,为此扩展出了 VLAN 标识机制。
2. **头部插入位置的不同**
- 在原始 Ethernet II 或者 IEEE 802.3 基础之上,802.1Q 插入了一组额外的标签字段位于源 MAC 地址之后以及原有的 `Type/Length` 字段之前。
3. **适用场景的区别**
- Ethernet II 广泛应用于普通的局域网通信环境之中。
- 对于需要精细化控制访问权限或者跨多个物理交换机共享同一逻辑广播域的情况,则更适合采用基于 802.1Q 的解决方案[^2]。
---
```python
# Python 示例:构建简单的802.1Q VLAN帧
def create_vlan_frame(src_mac, dst_mac, vlan_id, payload):
from scapy.all import Ether, Dot1Q
ether = Ether(dst=dst_mac, src=src_mac)
vlan_tagged = Dot1Q(vlan=vlan_id)
frame = ether / vlan_tagged / payload
return frame
frame_example = create_vlan_frame("00:11:22:33:44:55", "ff:ff:ff:ff:ff:ff", 100, b"Test Payload")
print(frame_example.show())
```
---
#### 四、结论
综上所述,虽然两者都属于以太网技术范畴内的组成部分,但是它们各自侧重点有所不同——前者更偏向基础传输层面的设计理念;后者则是在此基础上增添了高级别的管理和隔离能力。
阅读全文
相关推荐




















