【408计算机网络|第03章·上|408-CN-03A】数据链路层(上):组帧、差错控制与可靠传输

系列编号:408-CN-03A

所属科目:408计算机网络

章节名称:第三章 数据链路层(上篇)

检索关键词:408计网第三章、数据链路层、组帧、CRC、海明码、停止等待协议、GBN、SR、滑动窗口、信道利用率

前言

数据链路层是408计算机网络中最容易出现"概念题和计算题连着考"的章节。

本章内容较多,如果把组帧、差错控制、滑动窗口、介质访问控制、以太网、无线局域网、VLAN、PPP和交换机全部塞进一篇文章,会导致篇幅过长,也不利于后续检索。因此第三章拆成两篇:

  • 上篇:组帧、差错控制、流量控制、可靠传输、滑动窗口、停止等待、GBN和SR;

  • 下篇:介质访问控制、CSMA/CD、CSMA/CA、以太网、无线局域网、VLAN、PPP和交换机。

按照2026年408考试大纲,数据链路层需要掌握:数据链路层的功能、组帧、检错与纠错编码、流量控制、可靠传输与滑动窗口机制,以及停止等待、GBN和SR协议。

根据历年真题考频表,2009---2026年间:

  • "流量控制、可靠传输和滑动窗口"出现于12个年份,是本章最稳定的高频考点之一;

  • "差错控制"近年明显升温,2023年考CRC,2025年考最小码距与检错纠错能力;

  • 题型不仅要求背窗口上限,还会结合传播时延、帧长、确认帧、超时和序号循环进行计算。

本篇的核心目标是:看到可靠传输题时,能够先判断协议,再画窗口,再算时间,而不是只背公式。


一、本篇知识框架

本篇可以分为六个模块:

  1. 数据链路层的功能与基本概念;

  2. 组帧方法与透明传输;

  3. 差错检测和差错纠正;

  4. 流量控制与可靠传输;

  5. 停止等待协议;

  6. 滑动窗口、GBN和SR协议。

真题中最容易失分的地方有四类:

  • 把"帧序号位数"和"窗口大小"混为一谈;

  • GBN超时后只重传出错帧,或SR超时后把后续帧全部重传;

  • 信道利用率公式中漏掉确认帧发送时延或往返传播时延;

  • CRC计算时使用普通除法,而不是模2除法。


二、数据链路层解决什么问题

物理层只负责传输原始比特流。数据链路层在物理层提供的比特传输能力之上,将网络层交付的数据组织成帧,并尽可能把帧正确地交付给相邻结点。

1. 数据链路与链路

链路是从一个结点到相邻结点的一段物理线路,中间通常没有其他交换结点。

数据链路是在物理链路基础上,加入实现数据传输所需的协议、硬件和软件后形成的逻辑链路。

可以简化理解为:

  • 链路:物理通路;

  • 数据链路:物理通路加链路层协议。

2. 数据链路层的数据单位

数据链路层传输的数据单位是:

帧,Frame。

发送方把网络层分组封装成帧,接收方从帧中取出网络层分组后上交。

3. 数据链路层的主要功能

数据链路层通常承担以下功能:

  • 为网络层提供服务;

  • 链路管理;

  • 组帧;

  • 透明传输;

  • 差错控制;

  • 流量控制;

  • 在需要时实现可靠传输;

  • 共享信道中的介质访问控制。

本篇重点处理前七项,介质访问控制放在下篇。

4. 数据链路层提供的服务

理论上可以提供三类服务:

4.1 无确认的无连接服务

发送前不建立连接,接收方不逐帧确认。

适合误码率较低、上层能够处理丢失的网络。例如传统以太网向上提供的就是无连接、不可靠服务。

4.2 有确认的无连接服务

发送前不建立连接,但每个帧需要确认。

常用于误码率较高的链路,例如无线链路。

4.3 有确认的面向连接服务

通信前先建立连接,传输过程中编号和确认,结束后释放连接。

注意:

数据链路层"可以"实现可靠传输,不等于所有链路层协议都必须可靠。以太网链路层就不负责重传和可靠交付。


三、组帧与透明传输

1. 为什么需要组帧

物理层只提供连续的比特流,接收方必须知道:

  • 一帧从哪里开始;

  • 一帧在哪里结束;

  • 哪些比特属于帧首部;

  • 哪些比特属于数据;

  • 哪些比特属于校验字段。

组帧就是给连续比特流划分边界。

2. 字符计数法

在帧首部设置一个长度字段,表示本帧包含的字符数或字节数。

优点:实现简单。

缺点:如果长度字段本身发生错误,接收方会错误识别本帧结尾,并可能进一步破坏后续帧的同步。

考试判断:

字符计数法对计数字段错误非常敏感。

3. 字节填充法

使用特殊字节表示帧开始和帧结束。如果数据部分出现与控制字节相同的内容,则发送方在其前面插入转义字节ESC。

接收方看到ESC后,将其后的字节当作普通数据,并删除ESC。

若数据中本来就出现ESC,也需要再插入一个ESC进行转义。

这种方法常用于面向字节的协议。

4. 零比特填充法

典型帧定界符为:

复制代码
01111110

发送方扫描数据部分,只要发现连续5个1,就自动插入一个0。

接收方扫描帧内容,只要发现连续5个1后紧跟0,就删除这个0。

示例:

复制代码
原始数据:01111100 01111110
发送数据:011111000 011111010

关键规则:

只看连续1的个数。出现5个连续1就填0,不需要等到6个1。

2013年真题曾直接考查HDLC零比特填充。此类题最稳妥的做法是从左到右逐位扫描,数到5个1立即插0,然后重新计数。

5. 违规编码法

某些物理编码中存在不会用于正常数据的信号组合,可以把这些"非法信号"用作帧边界。

优点:不需要额外填充字符或比特。

限制:依赖底层编码方案中存在未使用的编码状态。

6. 透明传输

透明传输不是"看不见数据",而是:

无论数据部分出现什么比特或字节组合,都能够被原样传输,不会被误认为控制信息或帧边界。

字节填充和零比特填充的本质,都是实现透明传输。


四、差错控制的基本概念

1. 差错产生原因

数据在传输过程中可能受到噪声、衰减、串扰和设备故障影响,从而发生比特翻转。

常见差错形式:

  • 单比特差错:一个比特发生变化;

  • 突发差错:一段连续范围内出现若干错误比特。

突发差错的"长度"从第一个错误比特算到最后一个错误比特,中间比特不一定全部错误。

2. 差错控制的两种思路

2.1 前向纠错FEC

接收方根据冗余信息直接定位并纠正错误,不要求发送方重传。

适合重传成本高或时延要求严格的场景。

2.2 检错重传ARQ

接收方检测出错误后丢弃错误帧,并通过确认、否认或超时机制要求发送方重传。

停止等待、GBN和SR都属于ARQ思想。


五、码距与检错、纠错能力

1. 海明距离

两个等长码字对应位置不同的比特数量,称为这两个码字的海明距离。

例如:

复制代码
码字A:101101
码字B:100001

第3位和第4位不同,因此距离为2。

2. 最小码距

一个编码集中,任意两个合法码字之间海明距离的最小值,称为最小码距d_min。

最小码距决定编码能够检测和纠正多少位错误。

3. 必背结论

若要保证检测不超过e位错误,需要:

复制代码
d_min ≥ e + 1

因此最多保证检测:

复制代码
e_max = d_min - 1

若要保证纠正不超过t位错误,需要:

复制代码
d_min ≥ 2t + 1

因此最多保证纠正:

复制代码
t_max = floor((d_min - 1) / 2)

若要求同时纠正t位错误,并检测e位错误,通常需要:

复制代码
d_min ≥ t + e + 1

其中e不小于t。

4. 典型例题

某编码集的最小码距为4,则:

  • 最多保证检测3位错误;

  • 最多保证纠正1位错误。

因为:

复制代码
检测能力 = 4 - 1 = 3
纠错能力 = floor((4 - 1) / 2) = 1

2025年真题即采用给出若干合法码字、计算两两距离、再判断检错纠错能力的形式。

5. 高频陷阱

  • "能检测3位错误"不代表能纠正3位错误;

  • 最小码距必须在所有码字对中取最小值,不能只算一组;

  • d_min=4不能保证纠正2位错误,因为纠正2位至少要求d_min≥5。


六、奇偶校验

1. 奇校验与偶校验

奇偶校验在数据后增加一个校验位,使码字中1的总数满足约定。

  • 偶校验:1的总数为偶数;

  • 奇校验:1的总数为奇数。

2. 检错能力

单个奇偶校验位可以检测所有奇数个比特错误,但不能检测所有偶数个比特错误。

原因是偶数次翻转不会改变1的总数奇偶性。

3. 二维奇偶校验

把数据排成矩阵,同时对行和列设置校验位,可以提高检错能力,并在某些情况下定位单比特错误。

考试重点仍然是:普通奇偶校验不能保证检测偶数位错误。


七、循环冗余校验CRC

CRC是408差错控制中最重要的计算方法。

1. 基本思想

发送方和接收方预先约定一个生成多项式G(x)。发送方根据数据计算冗余码,并把冗余码附在数据后形成发送码字。

接收方用同一个生成多项式对收到的码字做模2除法:

  • 余数为0:未检测到错误;

  • 余数不为0:检测到错误。

注意:

余数为0只能说明"没有检测出错误",不能绝对证明传输一定无错。

2. 多项式与二进制串的转换

例如:

复制代码
G(x) = x⁴ + x + 1

从x⁴到x⁰依次看系数:

复制代码
1 0 0 1 1

所以生成多项式对应:

复制代码
10011

最高次数为4,因此冗余码长度r=4位。

3. CRC发送端计算步骤

假设原始数据为M,生成多项式最高次数为r。

第一步:在M后补r个0。

第二步:用补0后的比特串除以生成多项式,采用模2除法。

第三步:得到r位余数R,不足r位时在左侧补0。

第四步:把原数据M后的r个0替换为余数R。

最终发送码字:

复制代码
M + R

4. 模2除法规则

模2加减法都等价于异或XOR:

复制代码
0 XOR 0 = 0
0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0

没有借位,也没有进位。

5. CRC做题模板

遇到CRC题时按下面顺序写:

  1. 写出生成多项式对应的二进制除数;

  2. 确定最高次数r;

  3. 数据后补r个0;

  4. 按模2长除法求余数;

  5. 发送端把余数附在原数据后;

  6. 接收端直接用收到的完整码字除以生成多项式。

6. 高频陷阱

  • 生成多项式有r+1位,但CRC余数只有r位;

  • 发送端需要先补r个0,接收端不能再补0;

  • 模2除法使用异或,不是普通减法;

  • 余数位数不足时,需要在左侧补0;

  • CRC主要负责检错,不负责自动纠错。


八、海明码

1. 海明码的作用

海明码利用多个校验位构造不同的校验组,使接收方能够通过校验结果定位错误位置。

标准海明码的最小码距为3,可以纠正1位错误,也可以检测不超过2位错误,但不能在一般情况下同时区分"双错"和"已纠正单错"。

扩展海明码增加一个总奇偶校验位,可以实现SEC-DED:

  • Single Error Correction:纠正1位错误;

  • Double Error Detection:检测2位错误。

2. 校验位数量

若数据位数量为m,校验位数量为r,为了能够表示"无错"以及m+r个可能的单比特错误位置,需要满足:

复制代码
2ʳ ≥ m + r + 1

例如数据位m=4:

复制代码
r=2时:4 < 4+2+1,不满足
r=3时:8 ≥ 4+3+1,满足

因此至少需要3个海明校验位。

3. 校验位位置

校验位放在序号为2的幂的位置:

复制代码
1,2,4,8,16......

其他位置放数据位。

例如7位海明码:

复制代码
位置:1 2 3 4 5 6 7
内容:P1 P2 D1 P4 D2 D3 D4

4. 校验组划分

把位置编号写成二进制:

  • P1检查最低位为1的位置;

  • P2检查倒数第2位为1的位置;

  • P4检查倒数第3位为1的位置;

  • 依此类推。

例如:

  • P1检查1、3、5、7;

  • P2检查2、3、6、7;

  • P4检查4、5、6、7。

5. 综合校验结果

接收端重新计算每组校验值,将结果按P4P2P1组合成二进制数,该数就是错误位置编号。

若结果为:

复制代码
101₂ = 5

说明第5位发生错误,翻转第5位即可纠正。

6. 高频陷阱

  • 校验位数量公式中的"+1"表示无错误状态;

  • 校验位位置从1开始编号,不从0开始;

  • 校验组由位置编号的二进制位决定;

  • 标准海明码不能可靠区分所有双比特错误和单比特错误,需要扩展总体校验位。


九、流量控制、差错控制与拥塞控制

这三个概念经常混在一起。

1. 流量控制

流量控制解决:

发送方太快,接收方来不及处理。

它关注通信双方能力是否匹配。

2. 差错控制

差错控制解决:

帧发生错误、丢失、重复或失序时,如何检测和恢复。

常用机制包括检错码、序号、确认、超时和重传。

3. 拥塞控制

拥塞控制解决:

网络中注入的数据过多,超过中间结点和链路的承载能力。

拥塞控制通常是网络整体问题,TCP拥塞控制属于传输层内容。

4. 对比总结

概念 主要矛盾 典型位置
流量控制 发送方与接收方速度不匹配 数据链路层、传输层
差错控制 数据错误、丢失、重复 数据链路层、传输层
拥塞控制 网络整体负载过高 网络层、传输层

十、可靠传输需要哪些机制

要在不可靠链路上实现可靠传输,通常需要:

1. 差错检测

接收方通过CRC等方法判断帧是否损坏。

2. 帧序号

用于区分:

  • 新帧;

  • 重传帧;

  • 重复帧;

  • 序号循环后的帧。

3. 确认帧ACK

接收方通知发送方某些帧已经正确接收。

4. 否认帧NAK

接收方可明确要求发送方重传某帧。并非所有协议都必须使用NAK,超时也可以触发重传。

5. 超时计时器

若发送方在规定时间内没有收到确认,则认为数据帧或确认帧可能丢失,并进行重传。

6. 重复帧处理

确认帧可能丢失,发送方会重传已经被正确接收的帧。接收方必须利用序号识别重复帧,丢弃重复数据,但通常仍需再次发送确认。


十一、停止等待协议

1. 工作流程

停止等待协议一次只允许发送一个未确认的数据帧。

流程如下:

  1. 发送方发送数据帧;

  2. 启动计时器;

  3. 发送方停止发送并等待确认;

  4. 接收方正确收到后返回ACK;

  5. 发送方收到ACK后发送下一帧;

  6. 若超时,则重传当前帧。

2. 为什么需要序号

如果接收方正确收到帧,但ACK丢失,发送方超时后会重传该帧。

接收方必须判断这个帧是:

  • 新数据;

  • 还是之前帧的重复副本。

由于停止等待中最多只有一个未确认帧,只需要1位序号,即0和1交替编号。

3. 确认号的含义

不同教材可能采用两种定义:

  • ACK号表示"已经正确收到的帧号";

  • ACK号表示"下一次期待收到的帧号"。

做题时必须根据题目协议定义判断,不能脱离题意死背。

4. 信道利用率

设:

  • 数据帧发送时延为T_D;

  • 单向传播时延为T_P;

  • 确认帧发送时延为T_A;

  • 忽略处理时延。

一个发送周期为:

复制代码
T_D + 2T_P + T_A

停止等待的发送方信道利用率为:

复制代码
U = T_D / (T_D + 2T_P + T_A)

若确认帧发送时延可以忽略:

复制代码
U = T_D / (T_D + 2T_P)

定义:

复制代码
a = T_P / T_D

则:

复制代码
U = 1 / (1 + 2a)

5. 典型例题

数据帧和确认帧长度均为1000B,链路速率为10kb/s,单向传播时延为200ms。

数据帧发送时延:

复制代码
T_D = 1000×8 / 10000 = 0.8s

确认帧发送时延:

复制代码
T_A = 0.8s

往返传播时延:

复制代码
2T_P = 0.4s

利用率:

复制代码
U = 0.8 / (0.8 + 0.4 + 0.8)
  = 0.4
  = 40%

此题的关键是:确认帧与数据帧等长,不能忽略确认帧发送时延。

6. 停止等待协议特点

优点:

  • 实现简单;

  • 缓冲区需求小;

  • 序号只需1bit。

缺点:

  • 传播时延较大时利用率很低;

  • 发送方大量时间处于等待状态。


十二、滑动窗口机制

停止等待一次只允许一个未确认帧。滑动窗口允许发送方连续发送多个帧,从而构成流水线。

1. 发送窗口

发送窗口中的序号表示发送方当前允许发送但可能尚未被确认的帧。

窗口左边界表示最早未确认帧。

2. 接收窗口

接收窗口中的序号表示接收方当前愿意接收的帧。

接收方窗口大小决定是否能够缓存失序帧。

3. 窗口滑动

当确认到达后,发送方将已经确认的帧移出窗口,并在右侧加入新的可发送序号。

窗口的移动不是简单"每收到一个ACK就移动一格",具体取决于协议是否使用累计确认,以及ACK确认了哪些帧。

4. 序号循环

若帧序号字段为k位,则序号空间大小为:

复制代码
N = 2ᵏ

序号范围:

复制代码
0,1,2,......,2ᵏ-1

之后重新回到0。

窗口上限必须受到序号空间约束,否则新帧可能与旧帧的重传副本发生混淆。

5. 一般窗口约束

若发送窗口为W_S,接收窗口为W_R,序号空间为2ᵏ,通常应满足:

复制代码
W_S + W_R ≤ 2ᵏ

GBN和SR的窗口公式,都可以由这个基本约束理解。


十三、后退N帧协议GBN

GBN全称Go-Back-N。

1. 窗口大小

若序号字段为k位:

复制代码
1 ≤ W_S ≤ 2ᵏ - 1
W_R = 1

接收窗口等于1,表示接收方只接收当前期待的那个帧。

2. 接收规则

接收方:

  • 只接收按序到达的帧;

  • 对失序帧直接丢弃;

  • 通常不缓存失序帧;

  • 使用累计确认。

3. 累计确认

累计ACK表示某个序号之前的帧都已经正确收到。

例如,若ACK5表示"已经正确收到0~5号帧",发送方可以一次性将这些帧移出窗口。

但若题目规定ACK5表示"下一帧期待5",则含义不同。因此仍要看题目定义。

4. 超时重传

发送方通常只为最早未确认帧设置计时器。

若该帧超时,则从该帧开始,把窗口中所有已经发送但尚未确认的帧全部重传。

这就是"后退N帧"。

5. 例子

发送方已发送0、1、2、3、4号帧,接收方正确收到0、1,2号帧丢失,3、4号帧到达。

GBN接收方:

  • 接收0、1;

  • 因为期待2,丢弃失序的3、4;

  • 发送方2号帧超时后,重传2、3、4。

6. GBN特点

优点:

  • 接收方简单;

  • 接收缓冲区需求小;

  • 累计确认减少确认开销。

缺点:

  • 一个帧出错可能导致多个正确帧被重传;

  • 链路误码率高时效率下降明显。


十四、选择重传协议SR

SR全称Selective Repeat。

1. 窗口大小

若序号字段为k位,通常取:

复制代码
W_S = W_R

最大窗口满足:

复制代码
W_S = W_R ≤ 2ᵏ⁻¹

也可以由一般约束得到:

复制代码
W_S + W_R ≤ 2ᵏ

当发送窗口和接收窗口相等时,每个窗口最大为序号空间的一半。

2. 接收规则

SR接收方:

  • 可以接收窗口内的失序帧;

  • 为失序帧保留缓冲区;

  • 对每个正确帧单独确认;

  • 当窗口左边界对应帧到达后,把连续的已接收帧上交并滑动窗口。

3. 超时重传

SR对每个未确认帧分别管理计时器。

某个帧超时,只重传该帧,而不是把其后的所有帧全部重传。

4. 例子

发送方已发送0、1、2、3号帧,1号帧已经确认,0号帧和2号帧依次超时。

SR中只需要重传:

复制代码
0号帧和2号帧

不需要重传1号和3号帧。

这正是2011年真题的典型问法。

5. 为什么窗口不能超过序号空间一半

假设序号空间为0~7,接收窗口也达到5。

当序号循环后,接收方可能无法判断窗口中的0号帧是:

  • 新一轮的0号帧;

  • 还是上一轮0号帧的迟到副本。

把窗口限制在序号空间的一半以内,可以避免新旧帧混淆。

6. SR特点

优点:

  • 只重传出错或丢失帧;

  • 链路误码率较高时通常优于GBN。

缺点:

  • 接收方需要缓存失序帧;

  • 每个帧需要独立确认和计时器;

  • 协议状态更复杂。


十五、停止等待、GBN和SR对比

|---------|--------|-------------|-----------|
| 项目 | 停止等待 | GBN | SR |
| 发送窗口 | 1 | 最大2ᵏ-1 | 最大2ᵏ⁻¹ |
| 接收窗口 | 1 | 1 | 通常与发送窗口相同 |
| 失序帧 | 不涉及流水线 | 丢弃 | 缓存 |
| 确认方式 | 单帧确认 | 累计确认 | 单独确认 |
| 超时重传 | 当前帧 | 从超时帧起全部未确认帧 | 只重传超时帧 |
| 接收缓存 | 小 | 小 | 较大 |
| 实现复杂度 | 低 | 中 | 高 |
| 高误码链路效率 | 低 | 较低 | 较高 |

必背结论:

复制代码
GBN:W_S最大为2ᵏ-1,W_R=1
SR:若W_S=W_R,则最大为2ᵏ⁻¹

十六、滑动窗口的信道利用率

1. 流水线利用率公式

设窗口大小为W,数据帧发送时延为T_D,确认帧发送时延为T_A,单向传播时延为T_P。

在一个发送与确认周期中,发送方可以连续发送W个数据帧。

发送方利用率近似为:

复制代码
U = min(1,W×T_D / (T_D + 2T_P + T_A))

若确认帧发送时延忽略:

复制代码
U = min(1,W×T_D / (T_D + 2T_P))

2. 达到满利用率的条件

要使发送方无需等待确认即可持续发送,需要:

复制代码
W×T_D ≥ T_D + 2T_P + T_A

因此最小窗口:

复制代码
W ≥ (T_D + 2T_P + T_A) / T_D

结果不是整数时向上取整。

3. 帧序号位数

先根据利用率要求算出窗口W,再根据协议确定序号位数k。

对于GBN:

复制代码
W ≤ 2ᵏ - 1

所以:

复制代码
2ᵏ ≥ W + 1

对于SR且收发窗口相等:

复制代码
W ≤ 2ᵏ⁻¹

所以:

复制代码
2ᵏ ≥ 2W

4. 高频陷阱

  • 题目问"至少多少位序号"时,要先算窗口,再套协议窗口公式;

  • GBN不能直接用W≤2ᵏ⁻¹;

  • SR不能直接用W≤2ᵏ-1;

  • 确认帧不一定可以忽略;

  • 如果数据帧长度有范围,要根据题目目标选择最短或最长帧;

  • 窗口大小为小数计算结果时必须向上取整。


十七、真题常见命题方式

1. 直接判断协议行为

常见问题:

  • 哪些帧需要重传;

  • 失序帧是缓存还是丢弃;

  • 使用累计确认还是独立确认;

  • 哪个计时器超时;

  • 窗口何时滑动。

解题原则:先写出协议特征,再模拟帧状态。

2. 序号位数与窗口大小

常见组合:

  • 已知序号位数,求发送窗口或接收窗口上限;

  • 已知发送窗口,求接收窗口最大值;

  • 已知利用率要求,求窗口和序号字段长度。

做题前先写:

复制代码
序号空间N=2ᵏ

然后确定是GBN还是SR。

3. 信道利用率

常见信息:

  • 数据帧长度;

  • ACK长度;

  • 数据传输速率;

  • 单向传播时延;

  • 窗口大小;

  • 是否忽略处理时间。

必须分别计算:

复制代码
数据帧发送时延 = 数据帧比特数 / 数据速率
ACK发送时延 = ACK比特数 / 数据速率

4. CRC运算

常见问法:

  • 求CRC余数;

  • 求发送码字;

  • 判断某个接收码字是否被检测为错误;

  • 从生成多项式写出二进制除数。

5. 码距题

常见问法:

  • 给定合法码字集合,求最小码距;

  • 判断最多检错位数;

  • 判断最多纠错位数;

  • 判断某编码能否同时检错和纠错。


十八、做题标准流程

1. 可靠传输状态图题

第一步:确认协议是停止等待、GBN还是SR。

第二步:写出序号空间、发送窗口和接收窗口。

第三步:标出已发送、已确认、已接收和丢失的帧。

第四步:逐事件移动窗口,不要凭印象跳步。

第五步:注意ACK含义和是否累计确认。

2. 利用率计算题

第一步:统一单位,全部转换为bit、bit/s和秒。

第二步:分别算数据帧和ACK的发送时延。

第三步:写出一个周期的时间轴。

第四步:停止等待用一个帧的发送时间作分子,滑动窗口用W个帧发送时间作分子。

第五步:利用率最大不超过1。

3. CRC题

第一步:生成多项式转二进制。

第二步:确定余数位数r。

第三步:发送端补r个0,接收端不补。

第四步:逐位异或长除。

第五步:检查最终余数位数和结论。


十九、高频错误清单

  1. 认为数据链路层一定提供可靠服务;

  2. 把组帧和分组混为一谈;

  3. 零比特填充时数到6个1才插0;

  4. CRC除法使用普通减法;

  5. 认为CRC余数为0就能证明绝对无错;

  6. 忘记海明码公式中的无错状态"+1";

  7. 把流量控制当作拥塞控制;

  8. 停止等待中不使用序号;

  9. GBN接收方缓存失序帧;

  10. SR超时后重传全部未确认帧;

  11. GBN发送窗口写成2ᵏ;

  12. SR窗口写成2ᵏ-1;

  13. 信道利用率漏掉ACK发送时间;

  14. 序号位数结果不向上取整;

  15. 不看题目对ACK编号的定义。


二十、本篇必须达到的掌握标准

完成本篇后,应能独立回答:

  • 数据链路层与物理层的职责有什么区别;

  • 什么是组帧与透明传输;

  • 零比特填充如何执行;

  • 最小码距如何决定检错和纠错能力;

  • CRC余数如何计算;

  • 海明码需要多少校验位;

  • 流量控制、差错控制和拥塞控制如何区分;

  • 停止等待为什么只需要1位序号;

  • GBN为什么使用累计确认;

  • SR为什么要求窗口不超过序号空间一半;

  • GBN与SR超时后分别重传哪些帧;

  • 如何计算停止等待和滑动窗口的信道利用率;

  • 如何根据窗口大小反推序号位数。

如果上述问题中有三个以上不能立即回答,说明本篇还没有达到压力测试标准。


二十一、章节压力测试范围

后续压力测试将重点覆盖:

  1. 零比特填充和删除填充位;

  2. 两两计算码距并判断检错纠错能力;

  3. CRC生成多项式与模2除法;

  4. 海明码校验位数量与错误定位;

  5. 停止等待协议中ACK丢失与重复帧;

  6. GBN累计确认、失序丢弃和批量重传;

  7. SR独立确认、失序缓存和单帧重传;

  8. 窗口大小与序号空间关系;

  9. 带确认帧发送时延的信道利用率;

  10. 根据利用率要求反推窗口和序号位数。


结语

数据链路层上篇的主线只有一句话:

先把比特流划分成帧,再检测错误,并通过序号、确认、超时和窗口机制处理丢失、重复与失序。

做可靠传输题时,不要先背结论,而要按以下顺序:

复制代码
认协议 → 定窗口 → 画时间线 → 看ACK → 判重传 → 算利用率

下一篇继续整理:

【408计算机网络|第03章·下|408-CN-03B】数据链路层(下):介质访问控制、局域网、VLAN与交换机

相关推荐
老赵的博客1 小时前
工控机之udp远程控制
网络·网络协议·udp
怪奇云呼军2 小时前
闪电智能 Voice Agent 怎样根据语速、停顿和追问方式切换话术?策略引擎拆解
开发语言·人工智能·网络协议·算法·语音识别·web app
努力努力再努力wz2 小时前
【分布式系统与 RPC 框架系列】从单机瓶颈到远程调用:一文理解分布式架构与 RPC 原理
linux·网络·c++·分布式·网络协议·rpc·架构
GIS数据转换器2 小时前
智慧灌区管理平台
大数据·服务器·网络·数据库·人工智能·生活
其实防守也摸鱼4 小时前
KMP全栈开发:从Android到AI Agent的技术演进与实践
android·运维·网络·人工智能·学习·安全·macos
treesforest12 小时前
平时上网留下的IP地址,到底能被查到什么?
网络·网络协议·tcp/ip·ip地址·ip查询·定位服务
多巴胺梦想家13 小时前
06 代数系统:运算背后的结构之美
网络·拓扑学
小锋学长生活大爆炸14 小时前
【福利】最新免费领取云服务器和虚拟主机攻略
网络·github
81250353314 小时前
第 60 篇:IP选项:那些被遗忘的功能
网络·tcp/ip·智能路由器