3.1 数据链路层概述
3.1.1核心功能
在一段链路上传输帧,向上层网络层提供透明传输帧 的服务。 H1 经由路由器转发到 H2,在数据链路层视角分为多段独立链路(H1-R1、R1-R2、R21-R3、R3-H2),属于逻辑水平通信 ;各段链路可以运行不同协议(以太网、PPP 协议)。
3.1.2相关概念
-
链路:相邻节点之间一段物理线路,中间无交换节点;
-
数据链路
-
基于链路,由链路本身和相关的协议共同构成。
-
网卡(适配器)及其驱动程序实现链路层协议,网卡同时具备物理层、数据链路层功能。CPU 与存储器生成待发送数据,交付适配器;适配器给数据加上以太网帧首部、尾部,封装成帧,转换成串行比特流发送到局域网。

-
-
帧:数据链路层对等实体逻辑通信使用的协议数据单元 PDU。
3.1.3数据链路层三大基本问题
封装成帧
网络层IP分组前加首部、后加尾部,封装为帧。

-
首部:帧开始符、源链路地址、目的链路地址;
-
尾部:FCS 帧校验序列、帧结束符。
接收方处理流程: ① 通过帧起始、结束符完成帧定界,从连续比特流区分帧;

② 通过 FCS 检测传输误码; ③ 根据目的地址决定是否接收该帧。
帧格式规定属于协议三要素中的语法 。 为提升传输效率,帧载荷长度应远大于首尾控制字段;协议限定载荷最大长度 MTU(最大传送单元);以太网 MTU=1500 字节。 区分:MTU 属于链路层;MSS 是 TCP 传输层最大报文段载荷长度。
透明传输
含义:上层交付的数据内容不受任何限制,链路层对数据透明。
风险:若载荷内部出现帧定界标记 ,接收方发生帧定界错误。

两种实现方案:
-
字节填充(字符填充,面向字节链路,如 PPP 异步链路) 发送方遇见帧定界符,前方插入转义字符 ESC;若数据本身含有 ESC,同样前置 ESC;接收方向上交付前删除额外 ESC。

-
比特填充(面向比特同步链路) 发送方遇见连续 5 个比特 1,末尾插入 1 个 0;接收方遇见连续 5 个 1,删除其后跟随的 0。
以太网特殊规则 以太网帧本身无显式帧定界符,不需要字节 / 比特填充。 链路层封装以太网帧向下交付物理层;物理层额外添加 8 字节前导码: 前 7 字节前同步码(接收方时钟同步),最后 1 字节帧开始符。 依靠96 比特帧间间隔区分相邻帧(10M 以太网对应 9.6μs),无需帧结束符。
差错检测
真实信道存在失真,会产生误码,依靠校验码实现检错 / 纠错。 校验码由原始数据 + 冗余校验数据构成,冗余信息带来额外开销;出现误码会破坏编码规则,接收方能够识别。
码距(海明距离)
码距:两个等长二进制编码相异比特的数量。
编码集最小码距:集合内任意两个编码码距的最小值。
-
最小码距 d=1:无检错能力;
-
最小码距 d=2:可以检测 1 位误码。
核心结论:最小码距决定检错、纠错能力;增大码距需要增加冗余比特,提升开销。
码距 d、可检错数 e、可纠错数 t 关系

奇偶校验
原始数据增加 1 位校验位,使 1 的总数保持奇数 / 偶数。 特性:最小码距 d=2;可以检出 1 位误码,无法纠错 ;出现 2 位误码无法检测。
海明校验
基于多组奇偶校验,既检错又纠错。
约束公式:
,R = 校验位;
数据位越长编码效率越高;多用于内存单比特错误纠错。
规则:校验位放置在编号为
位置;数据位位置编号拆分为 2 的幂之和,归入对应校验组。
海明校验实例
原始数据 4 位:D₄ D₃ D₂ D₁ = 1 0 1 1,采用偶校验,求解完整海明校验码,并演示纠错过程。

| 海明码位置序号 | 1(P₁) | 2 | 3(D₄) | 4 | 5(D₃) | 6(D₂) | 7(D₁) |
|---|---|---|---|---|---|---|---|
| 码位类型 | P₁(校验位) | P₂(校验位) | D₄(数据位) | P₃(校验位) | D₃(数据位) | D₂(数据位) | D₁(数据位) |
| 位置二进制编号 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
| P₁校验组(第1位为1) | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ |
| P₂校验组(第2位为1) | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ |
| P₃校验组(第3位为1) | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ |

CRC 循环冗余校验(链路层主流)
网络差错大多为突发性多比特误码,CRC 对此检测效果好、开销小;
海明校验适合单比特纠错(内存场景)。链路层使用 CRC 检错,配合重传实现可靠传输。
运算规则:模二运算(等价异或,无进位、无借位)。
构建 CRC 校验码步骤:

接收方校验:收到的校验码模二除以
;余数≠0 代表存在误码。 注意:CRC校验与FCS生成 由硬件高速完成。
3.2 可靠传输基础与三大 ARQ 协议
差错检测仅能发现错误,后续处理方式取决于链路层服务类型:
-
不可靠传输:出错帧直接丢弃,不采取补救措施;有线链路误码率低常采用;
-
可靠传输:通过机制保证接收方最终收到正确帧;无线链路误码高常需要。
传输差错不止比特误码,还包括:帧丢失、帧失序、帧重复;可靠传输并非链路层独有,多层均可实现。 三类 ARQ 自动重传请求协议:停止等待、回退 N 帧 GBN、选择重传 SR。
1. 停止等待协议 Stop-and-Wait
发送一帧后暂停,等待接收方反馈。 基础流程:无错返回 ACK;出错返回 NAK。

缺陷:帧、ACK、NAK 丢失时协议失效;引入超时重传解决。 优化方案:增加超时重传后可舍弃 NAK,协议更简洁;NAK 优势是提前触发重传。
1.解决帧重复
帧携带序号;停止等待仅需 1 比特序号(0、1)。 接收方收到重复序号帧:丢弃重复帧,依旧回复 ACK。
2.缓存机制
发送方发送帧后保留副本,收到 ACK 才可删除。
3.信道利用率


适用特点:卫星链路 RTT 极大,利用率很低,不适合;无线局域网 RTT 远小于发送时延,表现尚可。
2. 流水线传输
无需等待 ACK,可以连续发送多个帧;不能无限发送,因此引入滑动窗口机制。

3.回退 N 帧 GBN(Go-Back-N)
发送窗口:窗口内序号帧可连续发送;接收窗口
。
采用累计确认:ACK N 代表 N 及之前所有帧全部正确接收。
窗口约束(n = 序号比特数)
目的:防止新旧帧混淆。
工作特点:一旦某一帧出错,该帧后续所有已发送帧全部重传(协议名称由来)。
性能:无差错时信道利用率很高;信道质量差、误码多时,大量重传,效率可能低于停止等待。
4. 选择重传 SR Selective Repeat
目标:只重传出错帧。
条件:接收窗口
,接收方缓存失序但无差错、序号落在窗口内的帧;
不使用累计确认,采用逐个确认。 窗口约束:
。 可配合 NAK 分组,收到 NAK 立刻重传,不必等待超时。
性能对比: 理想无差错时,GBN 与 SR 理论最大利用率相同;存在误码时 SR 性能远优于 GBN;停止等待利用率最低。
3.3 PPP 点对点协议
3.3.1典型应用
-
因特网用户的计算机通过点对点协议接入到某个 ISP,进而接入到因特网。用户计算机与 ISP 所采用的数据链路层协议一般就是 PPP 协议。

-
广泛用于广域网路由器之间的专用线路。
3.3.2PPP 三大组成
-
LCP 链路控制协议:链路建立、配置、测试、释放;
-
网络层 PDU 串行链路封装方式,载荷长度受 MTU 限制(默认 1500 字节);同时支持异步面向字节链路、同步面向比特链路;
-
NCP 网络控制协议:一组子协议,分别协商配置不同网络层协议(IPCP 用于 IPv4)。
3.3.3PPP 帧关键字段

-
标志字段 F(0x7E):帧定界符;相邻帧可共用一个 F;连续两个 F 为空帧,丢弃。
-
协议字段:
0x0021IPv4 报文;0xC021LCP 分组;0x8021IPCP 分组(NCP) -
FCS 字段:CRC 校验;运算范围:地址字段至信息字段。 执行顺序:发送方先算 FCS,再填充;接收方先去除填充,再校验 FCS。
3.3.4PPP 透明传输实现
-
异步链路(字节填充)

需要填充的字符类型 原始数据载荷 字节填充后发送内容 ① 帧界定符 0x7E 0x7E 0x7D 0x5E ② 转义符 0x7D 0x7D 0x7D 0x5D ③ 控制字符(例:0x01) 0x01 0x7D 0x21 普通字符(无需填充:0x20及以上非特殊字符) 0x30 0x30 -
同步链路(零比特填充) 发送方遇见连续 5 个比特 1,后面插入 0;接收方删除该额外 0。

3.3.5PPP 协议工作状态(以 PC 拨号接入 ISP 为例)

-
PPP 链路初始与最终状态均为链路静止(Link Dead)。此时用户主机与 ISP 拨号服务器之间不存在物理层连接。
-
ISP 拨号服务器检测到主机经由调制解调器发来的载波信号,建立物理连接后,PPP 进入链路建立状态(Link Establishment)。
-
协商成功:进入鉴别状态(Authentication);
-
协商失败:退回链路静止状态。
-
-
进行鉴别
-
无需身份鉴别,或身份鉴别成功:进入网络层协议状态(Network Layer Protocol);
-
身份鉴别失败:直接进入链路终止状态。
-
-
网络层协议状态:通信双方交互对应 NCP 分组,完成网络层参数配置(如 IPCP 协商 IPv4 地址)。 NCP 配置完成,链路进入打开状态(Open),两端可以正常传输数据帧。
-
当链路发生故障,或任意一端发送链路终止请求时,进入链路终止状态;载波信号断开之后,链路回到链路静止状态,一次 PPP 会话结束。