MAC地址

以太网的 MAC 层(二):MAC 帧长什么样

作者 Tea-Sun · 2026年10月19日 · 约 5 分钟

视频讲解https://www.bilibili.com/video/BV1Nmnn6WEG3/#

一、五个字段#

┌────────┬────────┬──────┬──────────────┬────────┐
│ 目的地址│ 源地址 │ 类型 │    数据       │  FCS   │
│  6 字节 │ 6 字节 │2 字节│ 46 ~ 1500 字节│ 4 字节 │
└────────┴────────┴──────┴──────────────┴────────┘
        首部 14 字节                尾部 4 字节
字段 长度 作用
目的地址 6 字节 这一帧给谁
源地址 6 字节 这一帧谁发的
类型(type) 2 字节 标志上层用的是什么协议,好把数据交给对应协议
数据 46 ~ 1500 字节 上层交下来的数据(用 IP 时就是 IP 数据报)
FCS 4 字节 帧检验序列,用 CRC 检验,只查错不纠错

类型字段常见取值:

值 上层协议
0x0800 IP
0x8137 Novell IPX
0x86DD IPv6

二、三个数字的换算(本集核心)#

首部 14 字节(6 + 6 + 2) + 尾部 4 字节(FCS) = 18 字节
18 + 46   = 64     ← 最短有效帧长
18 + 1500 = 1518   ← 最长帧长

反过来看:

已知 推算 得到
最短帧长 64 64 − 18 数据最短 46
数据最长 1500(MTU) 1500 + 18 整帧最长 1518

46 不是拍出来的,是 64 − 18 算出来的。而 64 又是上一章 CSMA/CD 的硬规矩(保证"一撞就能被发现")。所以这条链是: 争用期 2τ → 最短帧长 64 → 数据字段至少 46。


三、数据不够 46 字节怎么办#

  • 发送端:数据后面加填充字段(padding),用整数字节补齐,把整帧撑到 64 字节。
  • 接收端怎么去掉填充:MAC 帧首部没有"数据长度"字段,所以剥掉首尾后,是把"数据 + 填充"一起交给上层的。
  • 上层自己算得出来:用 IP 时,IP 首部里有"总长度"字段,一比就知道真数据到哪儿结束,后面的都是填充。

记忆点:MAC 层不管长度,IP 层自己认账。


四、什么样的帧是无效帧#

IEEE 802.3 规定,三种情况之一即为无效的 MAC 帧:

# 判定条件
1 帧的长度不是整数个字节
2 用收到的 FCS 查出有差错(CRC 校验不通过)
3 数据字段长度不在 46 ~ 1500 字节之间(等价于整帧不在 64 ~ 1518 之间)

处理:简单丢弃,不做任何补救。

重点:以太网不负责重传丢弃的帧。可靠性交给上层(TCP),数据链路层只管"送到下一跳",送不到就算了。


五、补充:DIX Ethernet V2 与 IEEE 802.3 的区别#

以太网 V2 IEEE 802.3
第三个字段 类型(type) 长度/类型(length/type)
怎么区分 只表示上层协议 值 > 0x0600(1536)→ 当类型;值 ≤ 0x0600 → 当长度(数据字段长度)

实际抓到的帧绝大多数第三字段都大于 1536,两种格式完全兼容。但"1536 分界"是考试爱考的点。


六、本集易错点#

  1. 46 字节是算出来的:64 − 18 = 46,不是随意定的。
  2. 64 字节是"整帧"最短长度,含 18 字节首尾;数据部分最短是 46,别混。
  3. 1518 是整帧最长,其中数据 1500 —— 这 1500 就是以太网的 MTU。
  4. FCS 只查错不纠错,查出错的帧直接丢,不重传。
  5. MAC 帧首部没有"数据长度"字段,接收端靠上层(如 IP 的总长度字段)自己去掉填充。
  6. "帧长度不是整数个字节"也是无效帧——这条容易被忽略,它来自曼彻斯特编码的判定特性。
  7. 以太网不负责重传,可靠性由 TCP 保证,别把两层的职责搞混。

七、关键表述依据#

# 表述 依据
1 以太网 V2 MAC 帧五字段:目的地址 6 + 源地址 6 + 类型 2 + 数据 46~1500 + FCS 4 谢希仁 3.3.3
2 数据字段最小 46 字节 = 64 − 18;不足时加填充字段 同上
3 类型字段 0x0800 表示上层是 IP 协议 同上
4 类型字段 0x8137 表示 Novell IPX 同上
5 无效帧三种:长度非整数字节 / FCS 查出差错 / 数据字段不在 46~1500 同上
6 有效 MAC 帧长度为 64~1518 字节;无效帧简单丢弃,以太网不负责重传 同上
7 IEEE 802.3 第三字段为"长度/类型",> 0x0600 表示类型,否则表示长度 同上
8 以太网 MTU = 1500 字节 谢希仁第 4 章(IP 数据报分片)
9 接收端靠 IP 首部"总长度"字段识别有效数据、去掉填充 同上(教材明确说明)