封装成帧
本文最后更新于:2025年11月10日 下午
一、封装成帧核心定义
封装成帧是数据链路层的核心功能之一,指该层为上层(网络层)交付的协议数据单元(PDU)添加帧头和帧尾,最终形成可在链路中传输的 “帧”。其中,帧头和帧尾包含关键控制信息,核心作用之一是帧定界—— 帮助接收方数据链路层从物理层传递的连续比特流中准确提取出单个帧。
二、典型帧结构
该文档重点介绍了两种主流帧格式,具体结构如下:
1. 以太网 V2 的 MAC 帧
- 总长度限制:最大长度为 1518 字节(含帧头、数据载荷、帧尾)。
- 字段构成(按顺序):
| 字段名称 | 长度(字节) | 核心作用 |
|---|---|---|
| 目的地址 | 6 | 标识帧的接收设备(MAC 地址) |
| 源地址 | 6 | 标识帧的发送设备(MAC 地址) |
| 类型 | 2 | 指明上层使用的协议(如 IP 协议) |
| 数据载荷 | 46~1500 | 承载上层(网络层)交付的协议数据单元 |
| FCS | 4 | 帧检验序列,用于检测帧在传输中的差错 |
- 补充说明:实际传输时,MAC 帧前会附加 “前导码”(7 字节,用于同步时钟)和 “帧开始定界符”(1 字节,标识帧开始),且帧之间需保留 “帧间间隔”(96 比特时间,避免帧冲突)。
2. PPP 帧(点对点协议帧)
- 字段构成(按顺序):
| 字段名称 | 长度(字节) | 核心作用 |
|---|---|---|
| 标志(Flag) | 1 | 帧定界符,固定值为01111110,标识帧的开始与结束 |
| 地址 | 1 | PPP 为点对点链路,通常设为固定值FF(广播地址) |
| 控制 | 1 | 用于流量控制和差错控制,默认值为03 |
| 协议 | 2 | 指明上层协议(如 IP 协议对应0021) |
| 数据载荷 | ≤1500 | 承载上层协议数据单元 |
| FCS | 2 | 帧检验序列,检测传输差错 |
| 标志(Flag) | 1 | 与帧头标志一致,标识帧结束 |
三、透明传输技术
1. 透明传输定义
数据链路层对上层交付的传输数据无任何限制(即数据中可包含任意比特组合),上层无需关注链路层细节,如同链路层 “不存在”,这一特性称为透明传输。
2. 实现方式(按链路类型分类)
(1)面向字节的物理链路:字节填充(字符填充)
- 核心逻辑:若数据中出现与 “标志字段(Flag,
01111110)” 或 “转义字符(ESC,1B)” 相同的字节,需在其前插入转义字符ESC,避免被误识别为帧定界符或转义符。 - 示例:
- 原始数据含
Flag(01111110)→ 填充后变为ESC + Flag; - 原始数据含
ESC(1B)→ 填充后变为ESC + ESC; - 接收方收到后,删除
ESC即可恢复原始数据。
- 原始数据含
(2)面向比特的物理链路:比特填充(零比特填充法)
- 核心逻辑:以 HDLC 协议为例,帧定界符为
01111110(含 6 个连续 1)。发送方在数据部分检测到 “5 个连续 1” 时,自动插入 1 个 “0”;接收方检测到 “5 个连续 1+1 个 0” 时,删除该 “0”,恢复原始数据。 - 真题示例(2013 年题 37):
- 原始比特串:
011111000111111; - 填充规则:5 个连续 1 后插 0,处理后为
011111000011111010(对应选项 A); - 最终帧结构:前后附加
01111110(标志字段),完整帧为01111110 011111000011111010 01111110。
- 原始比特串:
四、最大传送单元(MTU)
- 定义:为平衡传输效率与差错控制(帧越长,差错重传代价越高),每种数据链路层协议均规定 “帧的数据部分长度上限”,即最大传送单元 MTU。
- 核心作用:限制帧的数据载荷大小(如以太网 V2 的 MAC 帧数据载荷上限为 1500 字节),避免帧过长导致传输效率下降或差错风险增加。
- 关系公式:
帧总长度 = 帧头长度 + 数据载荷长度(≤MTU) + 帧尾长度。
五、关键总结
| 核心概念 | 核心内容 |
|---|---|
| 封装成帧 | 数据链路层添加帧头 / 帧尾形成帧,实现帧定界 |
| 典型帧结构 | 以太网 V2 MAC 帧(1518 字节上限)、PPP 帧(标志字段定界) |
| 透明传输 | 数据无限制,通过字节填充(面向字节链路)或比特填充(面向比特链路)实现 |
| MTU | 帧数据部分长度上限,平衡传输效率与差错控制 |
封装成帧
https://hellowydwyd.github.io/2025/10/06/封装成帧/