系列编号: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年考最小码距与检错纠错能力;
-
题型不仅要求背窗口上限,还会结合传播时延、帧长、确认帧、超时和序号循环进行计算。
本篇的核心目标是:看到可靠传输题时,能够先判断协议,再画窗口,再算时间,而不是只背公式。
一、本篇知识框架
本篇可以分为六个模块:
-
数据链路层的功能与基本概念;
-
组帧方法与透明传输;
-
差错检测和差错纠正;
-
流量控制与可靠传输;
-
停止等待协议;
-
滑动窗口、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题时按下面顺序写:
-
写出生成多项式对应的二进制除数;
-
确定最高次数r;
-
数据后补r个0;
-
按模2长除法求余数;
-
发送端把余数附在原数据后;
-
接收端直接用收到的完整码字除以生成多项式。
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. 工作流程
停止等待协议一次只允许发送一个未确认的数据帧。
流程如下:
-
发送方发送数据帧;
-
启动计时器;
-
发送方停止发送并等待确认;
-
接收方正确收到后返回ACK;
-
发送方收到ACK后发送下一帧;
-
若超时,则重传当前帧。
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,接收端不补。
第四步:逐位异或长除。
第五步:检查最终余数位数和结论。
十九、高频错误清单
-
认为数据链路层一定提供可靠服务;
-
把组帧和分组混为一谈;
-
零比特填充时数到6个1才插0;
-
CRC除法使用普通减法;
-
认为CRC余数为0就能证明绝对无错;
-
忘记海明码公式中的无错状态"+1";
-
把流量控制当作拥塞控制;
-
停止等待中不使用序号;
-
GBN接收方缓存失序帧;
-
SR超时后重传全部未确认帧;
-
GBN发送窗口写成2ᵏ;
-
SR窗口写成2ᵏ-1;
-
信道利用率漏掉ACK发送时间;
-
序号位数结果不向上取整;
-
不看题目对ACK编号的定义。
二十、本篇必须达到的掌握标准
完成本篇后,应能独立回答:
-
数据链路层与物理层的职责有什么区别;
-
什么是组帧与透明传输;
-
零比特填充如何执行;
-
最小码距如何决定检错和纠错能力;
-
CRC余数如何计算;
-
海明码需要多少校验位;
-
流量控制、差错控制和拥塞控制如何区分;
-
停止等待为什么只需要1位序号;
-
GBN为什么使用累计确认;
-
SR为什么要求窗口不超过序号空间一半;
-
GBN与SR超时后分别重传哪些帧;
-
如何计算停止等待和滑动窗口的信道利用率;
-
如何根据窗口大小反推序号位数。
如果上述问题中有三个以上不能立即回答,说明本篇还没有达到压力测试标准。
二十一、章节压力测试范围
后续压力测试将重点覆盖:
-
零比特填充和删除填充位;
-
两两计算码距并判断检错纠错能力;
-
CRC生成多项式与模2除法;
-
海明码校验位数量与错误定位;
-
停止等待协议中ACK丢失与重复帧;
-
GBN累计确认、失序丢弃和批量重传;
-
SR独立确认、失序缓存和单帧重传;
-
窗口大小与序号空间关系;
-
带确认帧发送时延的信道利用率;
-
根据利用率要求反推窗口和序号位数。
结语
数据链路层上篇的主线只有一句话:
先把比特流划分成帧,再检测错误,并通过序号、确认、超时和窗口机制处理丢失、重复与失序。
做可靠传输题时,不要先背结论,而要按以下顺序:
认协议 → 定窗口 → 画时间线 → 看ACK → 判重传 → 算利用率
下一篇继续整理:
【408计算机网络|第03章·下|408-CN-03B】数据链路层(下):介质访问控制、局域网、VLAN与交换机