以太网帧结构详解
在数据链路层中,以太网帧有三种主要格式:
- Ethernet II帧:这是当前局域网中最常用的帧格式,已成为以太网的事实标准。大部分TCP/IP协议栈的应用(例如HTTP、FTP、SMTP等)均基于此格式传输数据。
- IEEE 802.3 LLC帧:即IEEE 802.3 SAP帧,是由Ethernet II演变而来的正式标准。
- IEEE 802.3 SNAP帧:该格式旨在增强对上层协议的支持,并优化对IP协议的兼容性。
由于Ethernet II在实际网络环境中最为常见,本文将重点介绍其结构与特性。
Ethernet II帧结构
+-----------+-----------+-------------+--------------------+----------+
| DMAC | SMAC | Type | Payload | FCS |
| 6 Bytes | 6 Bytes | 2 Bytes | Variable length | 4 Bytes |
+-----------+-----------+-------------+--------------------+----------+
| |
| |
| |
| |
| |
| |
+-------------+-----------+----------------+-----------------+
| Interframe | Preamble | Start Frame | Ethernet Frame |
| ≥12 Bytes | 7 Bytes | Delimiter (1B) | Variable length |
+-------------+-----------+----------------+-----------------+
示例分析
IPv4通信示例:
Ethernet II, Src: cc:d8:1f:1f:8d:21, Dst: 98:ee:cb:cd:e0:52
Destination: 98:ee:cb:cd:e0:52
Source: cc:d8:1f:1f:8d:21
Type: IPv4 (0x0800)
LLDP协议示例:
Ethernet II, Src: c4:e2:87:9a:e3:41, Dst: 01:80:c2:00:00:0e
Destination: 01:80:c2:00:00:0e
Source: c4:e2:87:9a:e3:41
Type: LLDP (0x88cc)
Trailer: 000000
各字段含义
| 字段 | 长度 | 描述 |
|---|---|---|
| DMAC | 6字节 | 目标MAC地址。交换机会依据这个字段查找转发表。对于ARP请求、免费ARP以及探测包,该字段通常设为全1广播地址(ff-ff-ff-ff-ff-ff)。 |
| SMAC | 6字节 | 源MAC地址。 |
| Type | 2字节 | 标识上层协议类型。常见值包括0x0800(IPv4)、0x0806(ARP)、0x8100(VLAN标签)和0x88cc(LLDP)。 |
| Payload | 46~1500字节 | 有效载荷部分。整个帧长度需满足64至1518字节的要求,因此去除头部和尾部后得到该区间。 |
| FCS | 4字节 | 用于检测传输错误的校验码,通常采用CRC算法计算。 |
| Interframe Gap | ≥12字节 | 帧间间隔,确保物理介质恢复稳定状态。 |
| Preamble | 7字节 | 同步信号模式(10101010...),帮助接收方识别帧起始位置。 |
| SFD | 1字节 | 帧开始标志(10101011),标志着后续内容为帧正文。 |
常见疑问解答
为何Wireshark捕获的数据包不包含前导码和FCS字段?
这是因为当网卡接收到数据时,硬件会自动移除这些辅助信息并执行校验操作。Wireshark所记录的是经过初步处理后的净荷数据。
为什么某些ARP包小于最小帧长限制却被成功接收?
观察以下捕获片段:
Ethernet II, Src: 0c:84:dc:34:8d:4c, Dst: ff:ff:ff:ff:ff:ff
Destination: ff:ff:ff:ff:ff:ff
Source: 0c:84:dc:34:8d:4c
Type: ARP (0x0806)
Padding: 000000000000000000000000000000000000
出现这种情况的原因可能在于不同厂商设备或驱动实现差异。有些系统会在发送前填充数据达到最短长度要求,另一些则依赖底层硬件完成这一过程。
例如,在一个实验场景中,来自无线路由器的ARP请求为46字节,可被正常解析;而在其他情况下,即使原始包仅含42字节也能被正确处理,这表明可能存在动态填充机制或者过滤规则影响最终呈现结果。
进一步验证显示,若某次交互涉及双向通信且明确指向特定主机,则末端节点可能会选择性地保留或剔除填充字段,从而导致观察到的现象有所不同。
更多关于IP报文格式的信息,请参考:华为官方文档