目录
[1.2 核心功能](#1.2 核心功能)
[二、 数据链路层的三个核心问题](#二、 数据链路层的三个核心问题)
[2.1.3 帧格式的核心字段](#2.1.3 帧格式的核心字段)
[2.2 透明传输](#2.2 透明传输)
[2.2.1 问题本质](#2.2.1 问题本质)
[2.2.2 实现方法](#2.2.2 实现方法)
[2.3 差错检测](#2.3 差错检测)
[2.3.1 差错类型](#2.3.1 差错类型)
[2.3.2 校验码](#2.3.2 校验码)
[3.1 奇偶校验](#3.1 奇偶校验)
[3.1.1 核心原理](#3.1.1 核心原理)
[3.1.2 检错能力](#3.1.2 检错能力)
[3.2 海明校验](#3.2 海明校验)
[3.2.1 核心特性](#3.2.1 核心特性)
[3.2.2 关键公式](#3.2.2 关键公式)
[3.2.3 编码步骤](#3.2.3 编码步骤)
[3.2.4 纠错步骤](#3.2.4 纠错步骤)
[3.3 循环冗余校验(CRC)](#3.3 循环冗余校验(CRC))
[3.3.1 核心特性](#3.3.1 核心特性)
[3.3.2 核心原理](#3.3.2 核心原理)
[3.3.3 生成多项式的规则](#3.3.3 生成多项式的规则)
[3.3.5 校验步骤](#3.3.5 校验步骤)
一、数据链路层基础概念与功能
1.1基本术语
|------|----------------------------------------|
| 术语 | 定义 |
| 链路 | 节点间的物理线路(有线/无线),无协议约束,仅负责比特传输 |
| 数据链路 | 物理链路 + 通信协议 + 软硬件(如网卡,含物理层+数据链路层功能) |
| 帧 | 数据链路层PDU,对等实体逻辑通信的基本单位,由首部+数据+尾部组成 |
| 透明传输 | 使数据链路层对上层交付的PDU内容无限制,可传输任意比特组合 |
1.2 核心功能
-
封装成帧:给网络层IP数据报添加首部和尾部,形成帧
-
透明传输:解决帧定界符与数据的冲突问题
-
差错检测:检测帧在传输过程中的比特错(误码)
-
可靠传输:可选功能,实现帧的无差错、不丢失、不重复、按序交付
-
链路管理:面向连接协议(如HDLC)的链路建立、维护与释放
1.3服务类型
为网络层提供两种服务:无确认的无连接服务(如以太网)、有确认的无连接服务(如无线局域网)
二、 数据链路层的三个核心问题
2.1封装成帧
2.1.1核心定义
给网络层PDU添加首部和尾部 ,实现帧的定界,区分连续传输的不同帧
2.1.2相关概念
最大传送单元(MTU)
帧的数据载荷(网络层PDU)的最大长度,由数据链路层协议规定(以太网MTU为1500字节,PPP协议MTU可配置)
最大报文段长度(MSS)
TCP报文段的数据部分的最大长度(不含TCP首部),由TCP层协商
2.1.3 帧格式的核心字段
|-------|---------------------------------|-------------------------------------|
| 协议 | 核心字段 | 功能 |
| 以太网V2 | 目的MAC地址、源MAC地址、类型字段、FCS序列 | 类型字段标识上层协议(如0x0800表示IP协议),FCS用于差错检测 |
| PPP | 标志字段(0x7E)、地址字段、控制字段、协议字段、FCS序列 | 标志字段用于帧定界,协议字段标识上层协议 |
2.2 透明传输
2.2.1 问题本质
解决帧定界符与数据内容冲突的问题(如数据中出现与帧标志字段相同的比特序列)
2.2.2 实现方法
-
字节填充(字符填充)
-
适用场景:面向字节的协议(如PPP协议)
-
定界符:0x7E(帧开始和结束标志)
-
填充规则:
-
发送方:数据中出现0x7E ,替换为0x7D 0x5E ;出现0x7D ,替换为0x7D 0x5D (即将原始的冲突字符减去0x2E, 再在前面加上0x7D)
-
接收方:反向替换,恢复原始数据

-
-
-
比特填充
-
适用场景:面向比特的协议(PPP协议)
-
定界符:01111110
-
填充规则:
-
发送方:扫描数据,每遇到5个连续的1 ,在其后插入1个0
-
接收方:扫描收到的帧,每遇到5个连续的1 ,删除其后的1个0

-
-
-
以太网的特殊处理
-
通过8字节前导码(7字节同步码+1字节帧开始符)实现帧定界,无需帧结束符
-
以太网还规定了帧间间隔时间为96比特时间
-
2.3 差错检测
2.3.1 差错类型
-
比特错(误码):信道失真导致比特翻转(1→0或0→1),数据链路层主要检测此类差错
-
分组丢失/失序/重复:由网络拥塞、链路故障等导致,数据链路层不处理,由上层(如TCP)负责
2.3.2 校验码
-
码距(海明距离)
-
定义:两个等长二进制编码中,对应位不同的位数
-
编码集的码距:任意两个编码的最小码距 ,记为

-
-
码距与检错、纠错能力的关系
-
检错能力:若要检测
位误码,需满足
-
纠错能力:若要纠正
位误码,需满足
-
同时检错纠错:若要检测
位误码并纠正
位误码(
),需满足
-
三、差错检测编码
3.1 奇偶校验
3.1.1 核心原理
在原始数据后添加1位校验位,使整个编码(数据位+校验位)中1的个数为奇数(奇校验)或偶数(偶校验)
3.1.2 检错能力
码距,可检测1位误码 ,无法检测偶数位误码,无纠错能力
3.2 海明校验
3.2.1 核心特性
-
基于奇偶校验改进,可检测2位误码,纠正1位误码 ,编码集码距
-
局限性:无法可靠纠正2位及以上误码,仅适用于1位误码场景
3.2.2 关键公式
设原始数据位为,校验位为
,需满足:
-
公式含义:
个状态中,1个状态表示无错,剩余
个状态用于标识
位中某一位出错
-
示例:
时,
(
),构成12位海明码
3.2.3 编码步骤
-
确定校验位位置 :校验位放在海明码中编号为2的幂次方 的位置,海明码编号从1开始
-
确定数据位位置:原始数据位依次填充海明码中除校验位外的剩余位置
-
分配校验组 :将每个数据位的位置编号拆分为校验位位置编号的和,该数据位即归属于对应校验位的校验组(一个数据位可属于多个校验组)

-
计算校验位值:每个校验位的值由其校验组内所有数据位的异或结果决定
3.2.4 纠错步骤
-
接收方根据校验组重新计算每个校验位的预期值
-
比较预期值与实际值,得到校验结果位(1表示出错,0表示无错)
-
将校验结果位按顺序排列,得到出错位置编号,若为0则无错,否则纠正该位置的比特
3.3 循环冗余校验(CRC)
3.3.1 核心特性
-
专门针对突发性多比特误码,开销小、检错效率高,以太网、PPP、802.11均采用
-
检错能力:与生成多项式
相关,可检测所有奇数位误码、所有长度小于等于
的突发误码(
为
最高次幂)
-
局限性:无纠错能力,若检测到误码,直接丢弃帧;一般需要结合重传机制进行重传
3.3.2 核心原理
基于二进制模2运算 (无进位加法、无借位减法,等价于异或运算)的多项式除法,收发双方预先约定生成多项式
3.3.3 生成多项式的规则
必须包含最高次项 和最低次项
(即多项式系数的最高位和最低位均为1)
3.3.4 编码步骤
-
多项式转换 :将原始数据
表示为多项式
,生成多项式
的最高次幂为
-
数据左移 :将
左移
位,得到
(即原始数据尾部添加
个0)
-
模2除法 :用
对
做模2除法,得到余数
(冗余码,长度为
位,不足则补0)
-
生成CRC码 :CRC校验码 = 原始数据
+ 冗余码
(该码能被
整除)
3.3.5 校验步骤
-
接收方将收到的CRC校验码表示为多项式
-
用
对
做模2除法
-
结果判断:余数为0则无错;余数不为0则存在误码,丢弃该帧
