复习位置:计算机网络 → 数据链路层 → 流量控制与可靠传输 → 停止-等待、GBN、SR、滑动窗口、信道利用率
这篇只解决选择题。重点根据你这次的错题整理:GBN累计确认、SR独立确认、超时重传、窗口大小、序号位数、信道利用率


一、先看你这次最明显的思维漏洞

你这组题不是公式不会,而是几个协议容易串台。

漏洞1:
把 GBN 的 ACK 当成 SR 的独立 ACK。

漏洞2:
看到“某帧没有ACK”就立刻重传,
但很多时候必须等超时。

漏洞3:
只背 2^m,
没有区分 GBN 和 SR 的窗口约束。

漏洞4:
算信道利用率时只看“发送时间”,
容易漏掉往返传播时延、ACK发送时间。

漏洞5:
把“流量控制”和“差错控制”混在一起。

下面所有题都围绕这5个坑。


二、三种协议先用一张表分开

对比停止-等待GBNSR
发送窗口1多帧多帧
接收窗口11多帧
ACK一帧一确认累计确认独立确认
失序帧不缓存通常丢弃可以缓存
超时后重传当前帧从最老未确认帧开始全部重传只重传超时帧
典型特点简单但慢回退重传选择重传

最重要的一行:

GBN:一丢丢一串。

SR:谁丢重谁。

三、秒杀1:看到ACK,先判断是“累计”还是“独立”

GBN:累计确认

假设发送:

0 1 2 3 4 5 6

收到:

ACK4

在题目把ACK编号理解为“确认4号帧”的语境下:

ACK4
=
0、1、2、3、4 都已经确认

所以:

没有单独收到ACK0、ACK1、ACK3
不代表这些数据帧没有成功到达。

这就是你在GBN题里最容易错的地方。


SR:独立确认

SR里:

ACK5

只说明:

5号帧确认成功

不能推出:

4号帧也成功

所以:

GBN:
看“最大的累计ACK”

SR:
每个ACK单独记账

四、你的错题:GBN超时到底重传几个

你图中的第10题:

GBN已经发送0~6号帧。

计时器超时前,
收到1、2、4号帧的确认。

问需要重传几帧?

你选了:

D:6

正确是:

B:2

原因:

GBN使用累计确认。

收到ACK4
=> 0~4都已经成功确认。

剩下未确认:

5、6

所以超时后:

重传5、6

共2帧。

秒杀

GBN题出现多个ACK:

不要数“缺了几个ACK”。

只看“最大的累计ACK到哪里”。

五、2009年408真题:GBN累计确认

题目:

发送方已经发送0~7号帧。

超时时,
只收到0、2、3号帧的确认。

需要重传几帧?

最高累计确认:

ACK3

表示:

0~3已确认

未确认:

4、5、6、7

GBN发生超时:

4、5、6、7全部重传

所以:

答案:4帧

这一题与你第10题本质完全一样

GBN:
找到最高累计ACK
-> 后面的未确认帧全部重传

六、秒杀2:SR没有超时,不要乱重传

你的第21题是典型坑。

题意:

SR协议。

发送方已经收到0~3号帧确认,
又收到5号帧确认。

发送窗口中还有帧没发,
而且没有发生超时。

正确处理:

接收ACK5
记录5号帧已经确认
然后继续发送窗口中允许发送的新帧

不要:

因为没看到ACK4
就立刻重传4号帧

因为题目明确:

未发生超时

SR一般等:

对应帧超时

才重传该帧。

秒杀

SR:

缺ACK ≠ 立刻重传

超时谁 -> 重传谁

七、2011年408真题:SR只重传超时帧

题目:

SR已经发送0~3号帧。

已经收到1号帧的ACK。

0号和2号帧依次超时。

问重传几帧。

SR:

0超时 -> 重传0

2超时 -> 重传2

所以:

只重传2帧

不是:

0、1、2全部重发

因为那是GBN思路。


八、秒杀3:序号位数和窗口大小

这是必须分协议背的公式。

假设帧序号字段有:

m位

则序号空间:

0 ~ 2^m-1

一共有2^m个编号

GBN

发送窗口必须满足:

Wt <= 2^m - 1

接收窗口:

Wr = 1

所以:

GBN最大发送窗口
= 2^m - 1

例如:

m=7

则:

最大发送窗口
= 2^7-1
= 127

你的第12题

你虽然旁边已经写了:

2^7-1

但选择时没有落到:

127

这里属于“公式知道,但没有把公式计算结果和选项对应起来”。


九、SR的窗口公式

SR最稳的总约束:

Wt + Wr <= 2^m

如果题目默认:

发送窗口 = 接收窗口 = W

则:

2W <= 2^m

因此:

W <= 2^(m-1)

例:4位序号,接收窗口7

序号空间:

2^4 = 16

若:

Wr = 7

则:

Wt + 7 <= 16

所以:

Wt <= 9

最大:

9

十、2019年408真题:SR接收窗口

题目:

SR采用3位序号。

发送窗口大小为5。

接收窗口最大是多少?

序号空间:

2^3 = 8

SR:

Wt + Wr <= 8

所以:

5 + Wr <= 8

得到:

Wr <= 3

答案:

3

秒杀

SR题给了发送窗口和接收窗口中的一个:

直接用

Wt + Wr <= 2^m

十一、秒杀4:信道利用率统一一个公式

这部分不要分十几个公式背。

先定义:

Td = 数据帧发送时延
Tp = 单向传播时延
Ta = ACK发送时延

其中:

Td = 数据帧长度 / 数据传输速率

一次完整的“发数据 → 收到ACK”的时间:

T周期 = Td + 2Tp + Ta

如果题目说:

忽略ACK发送时延

那么:

T周期 = Td + 2Tp

十二、停止-等待利用率

停止-等待一次只能发一帧。

所以:

U = Td / (Td + 2Tp + Ta)

忽略ACK发送时间:

U = Td / (Td + 2Tp)

如果令:

a = Tp/Td

则:

U = 1/(1+2a)

十三、你的错题:2020年408停止-等待利用率

题目:

数据帧长度 = 1000B

传输速率 = 10kb/s

单向传播时延 = 200ms

忽略ACK发送时延

先算发送时延:

Td
= 1000×8 / 10000
= 0.8s

往返传播:

2Tp
= 0.4s

所以:

U
= 0.8/(0.8+0.4)
= 2/3
≈ 66.7%

答案:

B:66.7%

你的漏洞

你这里很容易把:

单向传播时延200ms

只加一次。

但ACK要回来,所以:

单向200ms

往返就是400ms

十四、滑动窗口利用率

如果发送窗口为:

W

发送方可以连续发送:

W个数据帧

所以理论利用率:

U
=
min(
1,
W×Td / (Td + 2Tp + Ta)
)

如果:

W×Td >= Td+2Tp+Ta

那么:

U = 100%

因此达到满利用率需要:

W >= (Td+2Tp+Ta)/Td

最后向上取整。


十五、2012年408真题:GBN需要几位序号

题目给出:

GBN

数据速率16kb/s

单向传播时延270ms

数据帧长度128~512B

ACK与数据帧等长

要求信道利用率最高

最难满足满利用率的是:

最短数据帧

因为帧越短:

Td越小
单位RTT内需要连续发送的帧越多

取:

128B

计算:

Td
= 128×8 / 16000
= 0.064s
= 64ms

ACK同长:

Ta = 64ms

周期:

T周期
= 64 + 2×270 + 64
= 668ms

要连续覆盖整个周期:

W×64 >= 668

得到:

W >= 10.4375

所以至少:

W = 11

GBN要求:

W <= 2^m-1

于是:

2^m-1 >= 11

最小:

m = 4

答案:

4位

这类题固定三步

1. 算Td
2. 算满利用率所需窗口W
3. 再用协议窗口公式反推m

十六、流量控制不是差错控制

你的第18题属于概念混淆。

流量控制的目的:

让发送方发送速度
与
接收方处理能力
相匹配

防止:

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

所以正确:

控制发送方发送速度

而:

超时
重传
ACK
NAK

这些主要属于:

可靠传输 / 差错控制

秒杀

流量控制:
怕接收方“吃不下”。

差错控制:
怕数据“传错、传丢”。

十七、2023年408真题:三种协议谁的利用率更高

3位序号:

序号空间 = 8

最大窗口:

停止-等待:
W1 = 1

SR:
W3 <= 4

GBN:
W2 <= 7

窗口越大:

越容易把传播等待时间填满

所以最大利用率关系:

U停止等待 <= USR <= UGBN

若题目记作:

U1:停止等待
U2:GBN
U3:SR

则:

U1 <= U3 <= U2

答案:

B

十八、2024年408真题:SR时序图秒杀

题目:

SR

序号3位

发送窗口和接收窗口相等且最大

因此:

W = 2^(3-1) = 4

开始可以发:

F0 F1 F2 F3

图中:

F1丢失

t1时刻

ACK0回来。

SR发送窗口可以向前释放一个位置。

所以新的窗口允许发送:

F4

因此:

t1发送F4

t2时刻

F1超时。

SR:

谁超时重谁

所以:

t2重传F1

答案:

F4,F1

也就是:

D

十九、一张表解决“超时重传”

停止-等待:

F3超时
-> 重传F3
GBN:

F3最老未确认且超时
当前还发过F4、F5、F6

-> 重传
F3 F4 F5 F6
SR:

F3超时

-> 只重传F3

口诀:

停等:就这一帧

GBN:从这里往后一串

SR:精准打击

二十、你这组错题应该怎么归类

不要按题号复习,按错误类型复习。

第一类:GBN累计ACK

你的错题:

第10题
2009真题

以后看到GBN:

先找最高累计ACK。

第二类:SR独立ACK与超时

你的错题:

第21题

以后看到SR:

ACK独立记账
没超时别乱重传
超时谁重谁

第三类:序号空间

你的错题:

第12题
2012真题

先写:

GBN:
W <= 2^m-1

SR:
Wt+Wr <= 2^m

再做题。


第四类:利用率

你的错题:

2020真题

草稿第一行必须写:

Td = L/R

第二行:

一个周期 = Td + 2Tp + Ta

这样最不容易漏项。


第五类:流量控制概念

你的错题:

第18题

只记:

流量控制:
发送速度 ↔ 接收处理能力

二十一、考场30秒总模板

【先识别协议】

停止等待?
GBN?
SR?


【再判断ACK】

GBN:
累计ACK

SR:
独立ACK


【再判断超时】

GBN:
最老未确认帧超时
-> 它以及后面的未确认帧全部重传

SR:
谁超时重谁


【窗口】

GBN:
Wt <= 2^m-1

SR:
Wt+Wr <= 2^m

若Wt=Wr:
W <= 2^(m-1)


【利用率】

Td = L/R

周期:
Td + 2Tp + Ta

停止等待:
U = Td/周期

滑动窗口:
U = min(1, W×Td/周期)

二十二、最后只背这8句话

1. 流量控制解决“发太快”。

2. GBN累计确认。

3. SR独立确认。

4. GBN超时,从最老未确认帧开始全部重传。

5. SR超时,谁超时重谁。

6. GBN:W <= 2^m-1。

7. SR:Wt+Wr <= 2^m。

8. 利用率先算 Td=L/R,再看一个完整往返周期。

把这8句话真正分清,这一页大部分滑动窗口选择题都能直接做。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐