# 3.2 组帧 ## 一、组帧的概念 ### 1.1 什么是组帧 **组帧**:将网络层传下来的数据封装成帧,添加首部和尾部,形成数据链路层的传输单位。 ### 1.2 帧的结构 ``` | 帧首部 | 数据(来自网络层) | 帧尾部 | ``` **帧首部**: - 包含控制信息 - 如:目的地址、源地址、类型 **数据**: - 来自网络层的IP数据报 - 长度有上限(最大传输单元MTU) **帧尾部**: - 包含差错检测信息 - 如:帧检验序列FCS ### 1.3 帧定界 **帧定界**: - 确定帧的开始和结束 - 接收方能够从比特流中识别出帧的边界 --- ## 二、组帧方法 ### 2.1 字符计数法 **原理**: - 在帧首部设置一个计数字段 - 表示帧的字符数(包括计数字段本身) **例子**: ``` | 5 | A | B | C | D | 4 | E | F | G | ... ↑帧1(5个字符) ↑帧2(4个字符) ``` **缺点**: - 计数字段出错,后续全部出错 - 很少使用 ### 2.2 字符填充法(字节填充法) **原理**: - 使用特殊的字符作为帧定界符 - 数据中出现定界符时进行转义 **定界符**: - **SOH(Start Of Header)**:0x01,帧开始 - **EOT(End Of Transmission)**:0x04,帧结束 **转义字符**: - **ESC(Escape)**:0x1B **填充规则**: - 数据中的SOH前插入ESC:ESC + SOH - 数据中的EOT前插入ESC:ESC + EOT - 数据中的ESC前插入ESC:ESC + ESC **例子**: ``` 原始数据:A SOH B EOT C 封装后:SOH A ESC SOH B ESC EOT C EOT ``` **缺点**: - 只能用于面向字符的传输 - 依赖于字符编码 ### 2.3 零比特填充法(比特填充法) **原理**: - 使用特殊的比特模式作为帧定界符 - 数据中出现定界符模式时进行填充 **定界符**: - **01111110**:帧的开始和结束 **填充规则**: - 发送方:数据中每出现5个连续的1,后面插入一个0 - 接收方:每收到5个连续的1,后面的0删除 **例子**: ``` 原始数据:01111110 11111011111 01111110 ↑定界符 ↑5个1 ↑定界符 填充后: 01111110 111110111110 01111110 ↑定界符 ↑5个1+填充0 ↑定界符 ``` **优点**: - 面向比特,不依赖于字符编码 - 通用性强 - HDLC、PPP协议使用 ### 2.4 违规编码法 **原理**: - 使用编码中的违规模式作为定界符 - 正常编码不会出现违规模式 **例子(曼彻斯特编码)**: - 正常:高-低(1),低-高(0) - 违规:高-高,低-低 - 用高-高和低-低作为定界符 **优点**: - 不需要填充 - 实现简单 **缺点**: - 只适用于特定编码 --- ## 三、最大传输单元(MTU) ### 3.1 什么是MTU **MTU(Maximum Transmission Unit)**: - 帧中数据部分的最大长度 - 由硬件和协议决定 ### 3.2 常见MTU值 | 网络类型 | MTU | |---------|-----| | 以太网 | 1500字节 | | PPPoE | 1492字节 | | 令牌环 | 4464字节 | | FDDI | 4352字节 | ### 3.3 MTU与IP分片 **IP分片**: - 如果IP数据报长度 > MTU,需要分片 - 每片都小于等于MTU --- ## 四、透明传输 ### 4.1 什么是透明传输 **透明传输**: - 不管数据是什么样的比特组合 - 都能传输 - 数据中的特殊比特不会干扰帧的定界 ### 4.2 实现透明传输的方法 - 字符填充法 - 零比特填充法 --- ## 五、考研重点 1. **组帧的概念**:什么是组帧、帧的结构 2. **组帧方法**: - 字符计数法:原理、缺点 - 字符填充法:定界符、转义字符、填充规则 - 零比特填充法:定界符、填充规则、优点 - 违规编码法:原理 3. **MTU**:概念、常见值、与IP分片的关系 4. **透明传输**:概念、实现方法 --- *下一节:3.3 差错控制*