视频讲解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 分界"是考试爱考的点。
六、本集易错点#
- 46 字节是算出来的:64 − 18 = 46,不是随意定的。
- 64 字节是"整帧"最短长度,含 18 字节首尾;数据部分最短是 46,别混。
- 1518 是整帧最长,其中数据 1500 —— 这 1500 就是以太网的 MTU。
- FCS 只查错不纠错,查出错的帧直接丢,不重传。
- MAC 帧首部没有"数据长度"字段,接收端靠上层(如 IP 的总长度字段)自己去掉填充。
- "帧长度不是整数个字节"也是无效帧——这条容易被忽略,它来自曼彻斯特编码的判定特性。
- 以太网不负责重传,可靠性由 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 首部"总长度"字段识别有效数据、去掉填充 | 同上(教材明确说明) |