计算机网络笔记(十四)——3.1数据链路层的几个共同问题
3.1.1数据链路和帧
数据链路层中的“数据链路”和“帧”是计算机网络的核心概念。
一、数据链路的基本概念
1. 链路 vs 数据链路
- 物理链路(链路):从一个节点到相邻节点的物理线路(双绞线、光纤等),只提供原始比特流传输能力。
- 数据链路:在物理链路上增加了通信协议(如成帧、差错控制等),形成能够逻辑传输数据的通道。
2. 数据链路层需要解决的问题
- 封装成帧:将网络层的数据打包为帧(Frame)。
- 透明传输:确保任意数据的传输不受特殊字符干扰。
- 差错控制:检测传输中的比特错误。
二、帧(Frame)
1. 帧的组成
帧由三部分组成:
- 帧头:包含源/目的地址、控制信息(如帧类型)。
- 数据部分:网络层传递的分组(Payload)。
- 帧尾:帧校验序列(如CRC)和帧结束标识。
2. 帧的定界
通过特殊标识符(如SOH
、EOT
)或比特填充实现帧的起点和终点识别。
三、数据链路的三个关键问题
1. 封装成帧
将比特流分割为固定大小或可变长的帧,添加控制信息:
2. 透明传输
避免数据中出现与帧定界符相同的字符,解决方案:
-
字节填充:在特殊字符前插入转义字符(如PPP协议)。
示例:原始数据中的
0x7E
→填充为0x7D 0x5E
。
3. 差错检测
使用循环冗余校验(CRC)检测比特错误:
四、帧传输图解
点对点通信的帧传输流程:
五、关键概念对比
概念 | 物理链路(物理层) | 数据链路(数据链路层) |
---|---|---|
功能 | 传输比特流 | 逻辑通道建立、帧传输 |
组成 | 电缆、接口卡 | 硬件 + 协议(如以太网、PPP) |
错误处理 | 不处理错误 | 检测错误(如CRC但不一定纠正) |
六、思考题
- 若数据中出现与帧定界符相同的比特流,如何解决传输透明性问题?
- 为何CRC校验不能保证100%检测错误?举出反例。
通过理解帧封装、透明传输和差错检测,可以掌握数据链路层的核心功能。
3.1.2三个基本问题
数据链路层的核心功能是为网络层提供可靠的点对点或点对多点数据传输服务。
一、封装成帧(Framing)
作用:为网络层传递的 IP 数据报添加首部和尾部,形成可识别的帧。
核心要点:
- 帧定界:通过首部和尾部的特殊标记(如
01111110
)标识帧的起止。 - MTU(最大传输单元):帧的数据部分长度上限,超过需分片。
- 结构:
- 首部:包含控制信息(如目的地址、源地址、协议类型)。
- 尾部:包含差错检测码(如 CRC)。
流程图示例(封装成帧):
帧结构图示:
二、透明传输(Transparent Transmission)
作用:保证任意字符的传输,避免数据中的特殊字符被误认为帧边界。
核心方法:
- 字节填充(例:PPP协议):
- 遇到
0x7E
(帧定界符)时,转义为0x7D 0x5E
。 - 遇到
0x7D
(转义符)时,转义为0x7D 0x5D
。
- 遇到
示例:
原始数据 | A B <ESC> 7E C D |
---|---|
处理后 | A B <ESC> 7D 5E C D |
透明传输流程图:
三、差错检测(Error Detection)
作用:检测传输过程中是否发生比特错误(如 0→1 或 1→0)。
常用方法:
- CRC(循环冗余校验):
- 发送方:生成冗余码(帧校验序列 FCS)附加到数据后。
- 接收方:重新计算 CRC,与 FCS 比对判断错误。
CRC算法流程:
局限性:
- 只能检测错误,无法纠错(纠错需更高层协议处理)。
- 可能漏检极低概率的同一位错误组合。
总结
基本问题 | 核心方法 | 关键目的 |
---|---|---|
封装成帧 | 添加首部/尾部,定义 MTU | 识别帧边界,控制传输 |
透明传输 | 转义特殊字符(如字节填充) | 传输任意数据无歧义 |
差错检测 | CRC校验和算法 | 检测比特错误 |
综合流程图: