数据链路层核心知识点(一)
一、数据链路层概述
1.1 基本概念
数据链路层位于OSI模型的第二层,介于物理层和网络层之间,主要负责在相邻节点之间传输和识别数据帧。
1.2 主要功能
- 帧同步:识别帧的开始和结束
- 差错控制:检测和纠正传输错误
- 流量控制:协调发送方和接收方的速率
- 链路管理:建立、维护和释放数据链路
- 透明传输:确保任何比特组合都能传输
1.3 两种信道类型
- 点对点信道:一对一通信(如PPP协议:点对点协议)
- 广播信道:一对多通信(如以太网)
二、数据链路层的三个重要问题
2.1 封装成帧
基本概念
将网络层传下来的IP数据报添加首部和尾部,形成帧。
帧结构
| 帧首部 | 数据部分 | 帧尾部 |
- 帧定界:通过特殊字符标识帧的开始和结束
- 最大传输单元(MTU):帧中数据部分的最大长度
常用方法
(1)字符计数法(Character Count)
基本原理
在帧首部使用固定长度字段(通常1字节)标明帧中**字符(byte)**的总数。
帧格式示例
| 计数字段(1字节) | 数据部分 |
示例:'\x06''H''E''L''L''O' 表示包含(包括自己的)6个字符的帧
特点
- 优点:实现简单
- 缺点 :
- 计数字段出错会导致后续所有帧错位(灾难性错误传播)
- 无法支持变长帧(受限于计数字段长度)
应用场景
早期网络协议(如DECNET),现代网络已基本淘汰
(2) 字符填充法(Character Stuffing)
基本原理
使用特定字符作为帧定界符:
- 开始符:ASCII字符DLE STX(0x02)
- 结束符:ASCII字符DLE ETX(0x03)
- 转义字符:DLE(Data Link Escape,0x10)
处理规则
- 数据中出现DLE时,插入额外DLE实现透明传输
示例:传输的数据"DLE" → 传输时运输的数据"DLE DLE"
- 接收方遇到连续两个DLE时删除一个,只解析第一个DLE转移字符后的数据部分
帧格式示例
| DLE STX | 数据部分(填充后) | DLE ETX |
特点
- 优点:兼容性强(支持任意字符传输)
- 缺点 :
- 效率低(需插入额外字符)
- 仅适用于文本传输(不适用于二进制数据)
典型协议
BISYNC协议(IBM二进制同步通信协议)
(3) 比特填充法(Bit Stuffing)
基本原理
使用特定比特模式作为帧定界标志:
- 帧定界符:01111110(0x7E)
- 填充规则:数据中出现连续5个1时自动插入1个0
防止数据中传输的数据可能会出现判定帧定界符错误的问题
工作流程
- 发送方:
- 遇到
11111
时插入0
→ 发送111110
- 始终保持帧间隔符
01111110
的唯一性
- 遇到
- 接收方:
- 删除连续5个1后的0
- 遇到
01111110
识别为帧边界
帧格式示例
01111110 | 数据部分(填充后) | 01111110
特点
- 优点 :
- 高效(比特级操作)
- 完美支持二进制数据传输
- 缺点:实现复杂度较高
典型协议
HDLC、PPP协议
(4) 违规编码法(Physical Layer Violation)
基本原理
利用物理层冗余编码规则实现帧定界:
- 使用物理层未定义的信号状态作为标志
- 示例:曼彻斯特编码中的"高-高"或"低-低"电平组合
实现方式
编码类型 | 正常信号 | 违规信号 |
---|---|---|
曼彻斯特 | 位中间跳变 | 持续高/低电平 |
差分曼彻斯特 | 位开始跳变 | 无跳变 |
帧格式示例
[违规信号] | 正常编码数据 | [违规信号]
特点
- 优点 :
- 无需占用数据位
- 定界信号100%可靠
- 缺点:依赖特定物理层编码方式
典型应用
IEEE 802.3以太网(前导码使用7字节0xAA+1字节0xAB)
四种方法对比总结
方法 | 定界方式 | 透明传输方案 | 效率 | 复杂度 | 适用场景 |
---|---|---|---|---|---|
字符计数法 | 首部长度字段 | 无 | 高 | 低 | 已淘汰 |
字符填充法 | 特定字符 | DLE(SEC)转义 | 低 | 中 | 文本传输 |
比特填充法 | 特殊比特模式 | 零比特插入 | 高 | 高 | 二进制数据传输 |
违规编码法 | 物理层违规信号 | 物理层区分 | 最高 | 中 | 特定编码系统 |
考研高频考点
-
比特填充法流程(必考计算/简答)
- 给出数据部分,要求写出填充后的帧
- 示例 :数据
011011111011111101
→ 填充后0110111110
0111110
01
-
透明传输问题分析
- 判断给定场景应使用哪种方法
- 典型题干 :"当数据中出现大量0x7E时,应采用___实现透明传输"
(比特填充)
-
方法缺陷比较
- 字符计数法的错误传播问题
- 字符填充法的效率瓶颈
-
协议与方法对应关系
- PPP协议 → 比特填充法
- BISYNC协议 → 字符填充法
- 以太网 → 违规编码法(前导码)+ 比特填充法(MAC帧内)
2.2 透明传输
问题描述
当数据部分出现与帧定界符相同的比特组合时,如何区分是数据还是控制信息。
解决方案
- 字节填充:在特殊字符前插入转义字符
- 比特填充:在连续5个1后插入0
2.3 差错控制
差错类型
- 位错:比特位翻转(1变0或0变1)
- 帧错:帧丢失、重复或失序
检错技术
(1) 奇偶校验(Parity Check)
基本原理:
- 在数据位后添加1位校验位,使整个码字中"1"的个数满足特定奇偶性
- 奇校验:1的总数为奇数
- 偶校验:1的总数为偶数
实现步骤:
- 发送方计算数据位中1的个数
- 根据校验类型(奇/偶)设置校验位
- 奇校验:若数据中1的个数为偶数,校验位置1
- 偶校验:若数据中1的个数为奇数,校验位置1
- 接收方验证1的总数是否符合约定
示例:
- 数据
10100011
(4个1)- 奇校验码:
10100011
1(总1数=5,奇数) - 偶校验码:
10100011
0(总1数=4,偶数)
- 奇校验码:
特点:
- 优点:实现简单,开销小(仅1位校验)
- 缺点:
- 只能检测奇数位错误
- 无法定位错误位置
- 漏检率高达50%(偶数位错误无法检测)
应用场景:
- 低速串行通信(如UART)
- 内存错误检测(早期RAM)
(2) 循环冗余校验(CRC, Cyclic Redundancy Check)
核心思想:
- 将数据位串 视为多项式系数 (如
1101
→ ( x3 + x2 + 1 )) - 通过模2除法计算校验码(余数作为FCS)
关键参数:
- 生成多项式 :预先约定的除数(如CRC-16:( x16 + x15 + x2 + 1 ))
- 校验位长度:生成多项式最高次幂(如CRC-16为16位,r=16)
计算步骤:
- 数据左移n位低位补0(n=生成多项式次数)
- 用生成多项式(数据位串)作除数对扩展后的数据做模2除法
- 将余数(r位)作为FCS附加到原数据后
示例:
- 数据:
1101011011
- 生成多项式:( x4 + x + 1 )(
10011
)(最高次幂为4)
-
数据左移4位:
11010110110000
-
模2除法(不进位借位的异或运算):
____1100001010_ 10011 /11010110110000 10011 -------------- 10011 10011 --------------- 00001 00000 ------------- 00010 00000 ------------ 00101 00000 ----------- 01011 00000 ---------- 10110 10011 --------- 01010 00000 -------- 10100 10011 ------- 01110 00000 ------ 1100
-
发送帧:
1101011011
1110
检错能力:
- 可检测所有奇数位错误
- 可检测所有双比特错误
- 可检测所有长度≤r的突发错误(r为校验位长度)
- 漏检率:1/2r
典型标准:
标准 | 生成多项式 | 应用场景 |
---|---|---|
CRC-8 | ( x8 + x2 + x + 1 ) | ATM信头 |
CRC-16 | ( x16+ x15 + x2 + 1 ) | Modbus协议 |
CRC-32 | ( x32 + ... + 1 ) | 以太网、ZIP文件 |
纠错技术:海明码(Hamming Code)
1. 基本原理
- 在数据位中插入多个校验位 ,构建冗余关系
- 通过校验方程定位错误位置并纠正
2. 校验位计算
-
设数据位为m,校验位为r,满足:
2r ≥ m + r + 1
-
校验位位置:位于2的幂次方位(1,2,4,8,...)
3. 编码步骤(以4位数据1011
为例)
-
确定校验位数:
- m=4 → 最小r=3(因( 23=8 ≥ 4+3+1 )
-
构建码字位置:
位置: 1(校验) 2(校验) 3 4(校验) 5 6 7 值: _ _ 1 _ 0 1 1
-
计算校验位:
-
P1(位置1):覆盖所有位置号第0位为1的位(1,3,5,7)
P1 = D3 ⊕ D5 ⊕ D7 = 1⊕0⊕1 = 0
-
P2(位置2):覆盖所有位置号第1位为1的位(2,3,6,7)
P2 = D3 ⊕ D6 ⊕ D7 = 1⊕1⊕1 = 1
-
P4(位置4):覆盖所有位置号第2位为1的位(4,5,6,7)
P4 = D5 ⊕ D6 ⊕ D7 = 0⊕1⊕1 = 0
-
-
完整码字:
位置: 1 2 3 4 5 6 7 值: 0 1 1 0 0 1 1
4. 检错与纠错
-
接收方重新计算校验方程:
- ( S1 = P1 ⊕ D3 ⊕ D5⊕ D7 )
- ( S2 = P2 ⊕ D3 ⊕ D6 ⊕ D7 )
- ( S4 = P4 ⊕ D5 ⊕ D6 ⊕ D7 )
-
错误位置:
错误位置 = S4 S2 S1 (二进制)
- 示例:若
D3
出错(位置3):- ( S1=1, S2=1, S4=0 ) →
011
=3
- ( S1=1, S2=1, S4=0 ) →
- 示例:若
5. 特点
- 纠错能力 :仅能纠正单比特错误
- 检错能力:可检测双比特错误(无法纠正)
- 效率:校验位占比随数据长度增加而降低
6. 海明距离
- 定义:两个等长码字间不同位的个数
- 关系 :
- 检测e个错误:码距 ≥ e+1
- 纠正t个错误:码距 ≥ 2t+1
技术对比
技术 | 类型 | 冗余度 | 能力 | 复杂度 | 典型应用 |
---|---|---|---|---|---|
奇偶校验 | 检错 | 1位 | 检测奇数位错误 | 低 | 串口通信 |
CRC | 检错 | 16-32位 | 检测多种错误模式 | 中 | 以太网/磁盘存储 |
海明码 | 纠错 | log₂n位 | 纠正单比特错误 | 高 | ECC内存/卫星通信 |
考研真题示例
真题1(2016年-35)
题目:采用CRC校验,生成多项式为( x^3 + 1 ),数据为101001
,求校验码。
解答:
-
生成多项式
1001
(( x^3 + 1 )) -
数据左移3位:
101001000
-
模2除法:
101001000 ⊕ 1001 -------- 001101 ⊕ 1001 -------- 1110 → 余数`110`
-
校验码:
110
真题2(2020年-37)
题目:海明码编码,信息位1010
,求编码后的码字。
解答:
-
m=4 → r=3(( 2^3 \geq 4+3+1 ))
-
码位布局:
位置:1 2 3 4 5 6 7 数据:_ _ 1 _ 0 1 0
-
计算校验位:
- P1 = D3⊕D5⊕D7 = 1⊕0⊕0 = 1
- P2 = D3⊕D6⊕D7 = 1⊕1⊕0 = 0
- P4 = D5⊕D6⊕D7 = 0⊕1⊕0 = 1
-
完整码字:
1 0 1 1 0 1 0
三、可靠传输机制
3.1 停止-等待协议(Stop-and-Wait)
基本原理
- 发送方发送一帧后停止,等待接收方确认
- 收到确认后再发送下一帧
关键问题
- 超时重传:设置合理的超时计时器
- 确认丢失:重复帧处理
- 确认迟到:序列号机制
信道利用率
U = TD / (TD + RTT + TA)
- TD:发送数据时间
- RTT:往返时间
- TA:发送确认时间
3.2 后退N帧协议(GBN)
基本原理
- 发送窗口大小WT:1 < WT ≤ 2n - 1
- 接收窗口大小WR:1
- 累计确认机制
特点
- 发送方可以连续发送多个帧
- 接收方只按序接收
- 出错时重传所有未确认帧
3.3 选择重传协议(SR)
基本原理
- 发送窗口大小WT = 接收窗口大小WR = 2(n-1)(一般情况下)
- 单独确认机制
特点
- 接收方可以缓存乱序到达的帧
- 只重传真正丢失的帧
- 效率高但实现复杂
四、考研真题示例
真题1(2015年-36)
题目 :
若数据链路层采用后退N帧协议发送数据,发送窗口尺寸为4,帧编号为3位,则发送方最多可发送多少帧?
解析 :
对于后退N帧协议,发送窗口大小WT ≤ 2n - 1 = 7。
题目给定WT=4,因此最多可连续发送4帧。
真题2(2018年-37)(下节讲解知识)
题目 :以太网中,若最短帧长为64B,信号传播速率为2×10^8m/s,网络带宽为100Mbps,求最大网络跨距。
解析:
- 发送最短帧时间 = (64×8)/108 = 5.12μs
- 争用期 = 2τ = 5.12μs → τ = 2.56μs
- 最大跨距 = 2.56×10-6 × 2×108 = 512m
附:重要公式速查
-
海明码校验位数 :
2^r ≥ k + r + 1
-
CRC校验 :
FCS = 数据 × 2^n mod 生成多项式
-
信道利用率(停止等待) :
U = T_D / (T_D + RTT + T_A)
-
最小帧长(以太网) :(下节讲解)
L_min = 2τ × 带宽
上文链接
:https://blog.csdn.net/weixin_73492487/article/details/146455322