🎯 课程摘要:本节课介绍以太网 V2(即 DIX Ethernet II)的 MAC 帧格式,详细讲解各字段(目的地址、源地址、类型、数据载荷、FCS)的作用与长度,推导最小帧长 64 字节、最大帧长 1518 字节的由来,并说明物理层前导码及无效帧的判定。
- 概念定义:以太网的 MAC 帧格式分为两种标准——DIX Ethernet II(以太网版本 2)的帧格式和 IEEE 802.3 的帧格式。
- 原理解析:
- 两种标准的 MAC 帧格式差别很小,仅类型字段有差别。
- 很多人并未严格区分这两种标准。
- 市场上流行的是以太网版本 2 的 MAC 帧,故本课只介绍以太网 V2 的 MAC 帧格式。
- ⚠️ 重点/考点:以太网 V2 与 IEEE 802.3 的唯一差别在类型字段;实际应用以 V2 格式为主。
- 概念定义:以太网 V2 的 MAC 帧由目的地址、源地址、类型、数据载荷、帧检验序列 FCS 五个字段组成。
- 原理解析(各字段说明):
| 字段 | 长度 | 作用 |
|---|
| 目的地址 | 6 字节 | 填入帧的目的 MAC 地址 |
| 源地址 | 6 字节 | 填入帧的源 MAC 地址 |
| 类型 | 2 字节 | 指明数据载荷字段由上一层哪个协议封装,以便收到的帧的数据载荷上交给该协议 |
| 数据载荷 | 46~1500 字节 | 承载上层协议数据单元 |
| FCS | 4 字节 | 使用循环冗余校验 CRC 生成的帧检验序列,用于检测传输误码 |
- 类型字段常见取值:
0x0800 → 数据载荷为 TCP/IP 网际层 IP 协议封装的 IP 数据报。0x8137 → Novell 网络层 IPX 协议封装的协议数据单元。
- ⚠️ 重点/考点:FCS 的 CRC 校验范围覆盖目的地址、源地址、类型、数据载荷四个字段(不包含 FCS 本身)。
- 概念定义:为满足以太网最小帧长 64 字节的规定,并兼顾差错处理效率,数据载荷字段长度有上下限。
- 原理解析:
- 帧首部与尾部共 18 字节(目的地址 6 + 源地址 6 + 类型 2 + FCS 4)。
- 最小帧长 64 字节:除去首部尾部 18 字节,数据载荷字段最小长度应为 46 字节。当数据载荷长度小于 46 字节时,数据链路层会在数据载荷字段后插入相应数量的填充字节,以确保 MAC 帧长度不小于 64 字节。
- 最大帧长:考虑差错处理等因素,数据载荷最大长度限制为 1500 字节(MTU)。
- 因此以太网 V2 的 MAC 帧最大长度 = 18 + 1500 = 1518 字节。
- ⚠️ 重点/考点:
- 最小帧长 64 字节(数据载荷 ≥ 46 字节,不足则填充)。
- 最大帧长 1518 字节(数据载荷 ≤ 1500 字节)。
- 填充字节计入 FCS 校验范围。
- 概念定义:以太网数据链路层将封装好的 MAC 帧交付物理层发送前,物理层会在其前面添加 8 字节的前导码。
- 原理解析:
| 组成 | 长度 | 作用 |
|---|
| 前同步码 | 7 字节 | 使接收方的时钟同步 |
| 帧开始定界符 SFD | 1 字节 | 表明其后面紧跟着的就是以太网帧 |
- ⚠️ 重点/考点:前导码(8 字节)由物理层添加,不计入 MAC 帧长度,因此最小/最大帧长(64/1518 字节)不含前导码。
- 概念定义:接收方可能收到的无效 MAC 帧包括以下几种情况。
- 原理解析:
- MAC 帧的长度不是整数个字节。
- 通过 MAC 帧的 FCS 字段值检测出帧有误码。
- MAC 帧的长度不在 64~1518 字节之间。
- ⚠️ 重点/考点:接收方收到无效的 MAC 帧时就简单地将其丢弃;以太网的数据链路层没有重传机制(重传由上层协议如 TCP 负责)。
- 以太网 V2 与 IEEE 802.3 MAC 帧仅类型字段不同,实际以 V2 为主。
- MAC 帧五字段:目的地址(6B) + 源地址(6B) + 类型(2B) + 数据载荷(46~1500B) + FCS(4B),首尾共 18B。
- 最小帧长 64B(数据载荷不足 46B 则填充),最大帧长 1518B(数据载荷上限 1500B)。
- 物理层添加 8B 前导码(7B 前同步码 + 1B 帧开始定界符),不计入帧长。
- 无效帧(非整字节/误码/长度越界)直接丢弃,数据链路层无重传机制。
- 以太网 V2 的 MAC 帧各字段长度和作用分别是什么?
- 为什么以太网最小帧长规定为 64 字节?数据载荷不足 46 字节时如何处理?
- 以太网最大帧长 1518 字节是如何得出的?为什么数据载荷要限制最大长度?
- 物理层添加的 8 字节前导码包含哪两部分?为何不计入 MAC 帧长度?
- 哪些情况下接收方判定 MAC 帧无效?收到无效帧后如何处理?