3. 多帧滑动窗口与选择重传协议(SR)
# 3. 多帧滑动窗口与选择重传协议(SR) 为了进一步提高信道的利用率,可以设法仅重传出错或超时的数据帧,而不影响其他已正确传输的帧。为此,接收方必须能够暂存失序但正确到达、且序号仍落在接收窗口内的数据帧,待缺失序号的帧收齐后,再按序交付给上层。这种机制即为选择重传协议。 骨质组区 SR协议的工作原理(2011、2024) 为实现仅重传出错帧的目标,接收方不能再采用累积确认,而需对每个正确接收的数据帧逐一发送确认。显然,选择重传协议比后退 $N$ 帧协议更为复杂: - 接收方需设置足够大的帧缓冲区(其数量等于接收窗口大小),用于暂存正确的失序帧; - 发送方为每个未确认的帧维护独立的计时器,当某帧的计时器超时时,仅重传该帧; - 若接收方收到重复的数据帧(表示确认帧丢失),则丢弃该帧,并重传对应的确认帧。 此外,选择重传协议还引入了更高效的差错处理策略:一旦接收方检测到某个数据帧出错,可立即向发送方发送否定帧(NAK),请求重传NAK指定的帧,从而避免等待超时。 在图3.12中,2号帧丢失后,接收方仍可正常接收并缓存后续到达的数据帧(如 $3\sim 9$ 号帧);发送方超时重传2号帧并被成功接收后,接收窗口即可向前滑动。在某个时刻,若接收方检测到10号帧出错,则会立即发送否定帧NAK10;在此期间,接收方仍可继续接收并缓存后续帧;发送方收到NAK10后,立即重传10号帧,无须等待超时。
原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。
图3.12 SR协议的工作原理:对超时和出错数据帧的处理
<!-- page: 78 -->
2027年计算机网络考研复习指导
## 考点追踪
SR 协议的滑动窗口机制(2023)
选择重传协议的接收窗口 $W_{\mathrm{R}}$ 和发送窗口 $W_{\mathrm{T}}$ 均大于 1,允许一次发送或接收多个数据帧。若采用 $n$ 比特对帧编号,需满足两个条件:① $W_{\mathrm{R}} + W_{\mathrm{T}} \leqslant 2^{n}$ (不满足此条件时,接收窗口向前滑动后,部分确认帧丢失,发送方可能重传旧序号的帧;由于序号空间不足,这些重传帧的序号可能与新帧重叠,导致接收方无法区分新帧与旧帧)。② $W_{\mathrm{R}} \leqslant W_{\mathrm{T}}$ (若接收窗口大于发送窗口,则接收窗口中超出发送窗口范围的部分永远无法被填满,造成资源浪费)。由①和②不难推出 $W_{\mathrm{R}} \leqslant 2^{n-1}$ 。在实际应用中,常取 $W_{\mathrm{R}} = W_{\mathrm{T}} = 2^{n-1}$ ,以充分利用序号空间。
## 注意
为使内容转烦,本文未对三种 ARQ 协议的滑动窗口动态变化过程展开具体示例。此部分内容在配套视频中有丰富、形象的过程演示,强烈建议读者结合学习。
## 4. 信道利用率的分析
信道利用率用于衡量信道的使用效率。从时间角度看,信道效率是针对发送方而言的,是指发送方在一个发送周期(从发送方开始发送一个分组,到收到对该分组的确认所需的时间)内,有效发送数据的时间与整个发送周期之比。本节使用分组而非帧,是为增强表述的通用性。
### (1)停止-等待协议的信道利用率
## 考点追踪
停止-等待协议的信道利用率分析(2018、2020)
停止-等待协议的优点是实现简单,但缺点是信道利用率极低。图 3.13 显示了停止-等待协议中数据帧和确认帧的发送时间关系。假定在发送方和接收方之间有一个直通的信道来传送分组。
原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。
图 3.13 停止-等待协议中数据帧和确认帧的发送时间关系
发送方发送一个分组的发送时延为 $T_{\mathrm{D}}$ 。显然,$T_{\mathrm{D}}$ 等于分组长度除以数据传输速率。假定分组正确到达接收方后,其处理时间可忽略不计,接收方立即返回确认。接收方发送确认分组的发送时延为 $T_{\mathrm{A}}$ (通常可忽略不计)。再假设发送方处理确认分组的时间也可忽略不计,则发送方经过时间 $T_{\mathrm{D}} + \mathrm{RTT} + T_{\mathrm{A}}$ 后就可再发送下一个分组,其中 RTT 是往返时延。由于仅有 $T_{\mathrm{D}}$ 时间用于有效发送数据,因此停止-等待协议的信道利用率 $U$ 为
$$
U = \frac {T _ {\mathrm {D}}}{T _ {\mathrm {D}} + \mathrm {R T T} + T _ {\mathrm {A}}}
$$
假定某信道的 $\mathrm{RTT} = 20\mathrm{ms}$ 。分组长度为 1200 比特,数据传输速率为 $1\mathrm{Mb / s}$ 。若忽略处理时延和 $T_{\mathrm{A}}$ ,则可算出信道利用率 $U = 5.66\%$ 。若将数据传输速率提高至 $10\mathrm{Mb / s}$ ,则 $U = 0.596\%$ 。由此可见,当 RTT 远大于 $T_{\mathrm{D}}$ 时,停止-等待协议的信道利用率会非常低。
### (2)连续 ARQ 协议的信道利用率
## 考点追踪
停止-等待、GBN 与 SR 协议的信道利用率对比分析(2023)
连续 ARQ 协议采用流水线传输(见图 3.14),允许发送方连续发送多个分组,从而在信道上维持持续的数据流动。只要发送窗口足够大,即可显著提升信道利用率。
<!-- page: 79 -->
第3章 数据链路层
原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。
图3.14 连续ARQ协议的流水线传输可提高信道利用率
**参考信息** GBN协议的信道利用率分析(2012、2015、2017)
设连续ARQ协议的发送窗口大小为 $N$ (最多可连续发送 $N$ 个分组),分为两种情况:
1)若 $NT_{\mathrm{D}} < T_{\mathrm{D}} + \mathrm{RTT} + T_{\mathrm{A}}$ :即在一个发送周期内可发送完 $N$ 个分组,此时,信道无法被完全占满,信道利用率为
$$
U = \frac {N T _ {\mathrm {D}}}{T _ {\mathrm {D}} + \mathrm {R T T} + T _ {\mathrm {A}}}
$$
2)若 $NT_{\mathrm{D}} \geqslant T_{\mathrm{D}} + \mathrm{RTT} + T_{\mathrm{A}}$ :即在一个发送周期内发不完(或刚好发完) $N$ 个分组,只要无差错发生,发送方可持续不间断地发送,信道被完全利用,此时信道利用率 $U = 1$ 。
在相同帧序号比特数下,GBN的发送窗口大于停止-等待协议,因此理想条件下信道利用率更高。但是,当信道误码率较高时,其实际信道利用率甚至可能低于停止等待协议。
**参考信息** 滑动窗口协议的数据传输速率分析(2009、2010、2014)
此外,“信道平均(实际)数据传输速率 = 信道利用率 × 信道带宽(最大数据传输速率)”,或“信道平均(实际)数据传输速率 = 发送周期内发送的数据量/发送周期”。
本节习题包含大量关于信道利用率与传输速率的习题,建议读者结合练习深入掌握。
## 3.4.3 本节习题精选
### 一、单项选择题
01. 下列关于停止-等待协议的描述中,正确的是()。
A. 发送窗口和接收窗口的尺寸都为 1
B. 最大的信道利用率有可能达到 $100\%$
C. 适合于往返时间比较长的信道
D. 接收方可以不按序接收
02. 下列情况中,会使停止-等待协议的效率变得很低的是()。
A. 当源主机和目的主机之间的距离很近而且数据传输速率很高时
B. 当源主机和目的主机之间的距离很远而且数据传输速率很高时
C. 当源主机和目的主机之间的距离很近而且数据传输速率很低时
D. 当源主机和目的主机之间的距离很远而且数据传输速率很低时
03. 在简单的停止-等待协议中,当喷出现丢失时,发送方会永远等待下去,解决这种死锁现象的办法是()。
A. 差错检验
B. 帧序号
C. NAK机制
D. 超时机制
04. 在停止-等待协议中,为了让接收方能判断所收到的数据帧是否重复,采用()的方法。
A. 帧编号
B. 检错码
C. 重传计时器
D. NAK帧
05. 一个信道的数据传输速率为 $4\mathrm{kb / s}$ ,单向传播时延为 $30\mathrm{ms}$ ,若使停止-等待协议的信道最大利用率达到 $80\%$ ,则要求的数据帧长至少为()。
A. 160 比特
B. 320 比特
C. 560 比特
D. 960 比特
06. 主机甲采用停止-等待协议向主机乙发送数据,数据传输速率是 $6\mathrm{kb / s}$ ,单向传播时延是
<!-- page: 80 -->
2027年计算机网络考研复习指导
100ms,忽略确认帧的发送时延。信道的利用率为 40% 时,数据帧的长度为( )。
A. 240 比特
B. 320 比特
C. 600 比特
D. 800 比特
07. 在停止-等待协议中,若发送方发送的数据帧中途丢失,则可能发生的情况是( )。
A. 接收方发送 NAK 帧,请求重发此帧
B. 发送方在经过超时时间后未收到 ACK 帧,自动重发此帧
C. 接收方在经过超时时间后,向发送方发送 ACK 帧,请求重发此帧
D. 发送方继续发送后续帧,直到经过超时时间后未收到 ACK 帧,重发此帧
08. 下列关于连续 ARQ 的说法中,错误的是( )。
A. 发送方可以连续发送若干数据帧,而不是发完一个数据帧就停下来等待确认帧
B. 发送方收到了接收方发来的确认帧,还可以接着发送数据帧
C. 相比停止-等待协议,连续 ARQ 因为减少了等待时间,所以提高了信道利用率
D. 接收方可以不按序接收数据帧
09. 数据链路层采用后退 N 帧协议进行流量控制,发送方已发送编号为 0~6 的帧,之后收到 5 号数据帧的确认,发送方的滑动窗口向后移动后,发送方可发送的数据帧数量为 6 个,假设整个过程未发生超时,则应采用( )位给数据帧编号。
A. 3
B. 4
C. 5
D. 6
10. 数据链路层采用后退 N 帧协议,发送方已经发送了编号从 0 到 6 的帧。当计时器超时的时候,只收到时 1、2、4 号帧的确认,发送方需要重传的帧的数量是( )。
A. 1
B. 2
C. 5
D. 6
11. 数据链路层采用了后退 N 帧协议(GBN),若发送窗口的大小是 32,则至少需要( )位的序列号才能保证协议不出错。
A. 4
B. 5
C. 6
D. 7
12. 若采用后退 N 帧的 ARQ 协议进行流量控制,帧编号字段为 7 位,则发送窗口的最大长度为( )。
A. 7
B. 8
C. 127
D. 128
13. 一个使用选择重传协议的数据链路层,若采用 5 位的帧序列号,则可以选用的最大接收窗口是( )。
A. 15
B. 16
C. 31
D. 32
14. 对于窗口总大小为 n 的滑动窗口,最多可以有( )帧已发送但没有确认。
A. 0
B. $n - 1$
C. $n$
D. $n / 2$
15. 数据链路层采用选择重传协议(SR)传输数据,若帧序号采用 4 比特编号,接收窗口大小为 7,则发送窗口最大是( )。
A. 17
B. 8
C. 9
D. 10
16. 对无序接收的滑动窗口协议,若序号位数为 $n$,则接收窗口最大尺寸为( )。
A. $2^{n} - 1$
B. $2n$
C. $2n - 1$
D. $2^{n - 1}$
17. 采用滑动窗口机制对两个相邻节点 A 和 B 的通信过程进行流量控制。A 和 B 之间的数据传输速率为 $20\mathrm{kb / s}$,数据帧和确认帧的长度都为 2000B,往返传播时延为 $1400\mathrm{ms}$,采用 3 比特给数据帧编号,测得在 A 和 B 的通信过程中信道利用率大于 $80\%$,则( )。
(注:在 SR 协议中,默认发送窗口大小等于接收窗口大小。)
A. 节点 A、B 之间只能采用停止等待协议
B. 节点 A、B 之间只能采用 GBN 协议
<!-- page: 81 -->
第3章 数据链路层
C. 节点 A、B 之间只能采用 SR 协议
D. 节点 A、B 之间可以采用 GBN 协议或 SR 协议
18. 流量控制是实现发送方和接收方速度一致的机制,实现这种机制所采取的措施是( )。
A. 增大接收方接收速度
B. 减小发送方发送速度
C. 接收方向发送方反馈信息
D. 增加双方的缓冲区
19. 假设两台主机之间采用后退 $N$ 倾协议传输数据,数据传输速率为 $16\mathrm{kb / s}$,单向传播时延为 $250\mathrm{ms}$,数据倾的长度是 $128\mathrm{B}$,确认倾的长度也是 $128\mathrm{B}$,为使信道利用率达到最高,则倾序号的比特数至少为( )。
A. 2
B. 3
C. 4
D. 5
20. 在下列滑动窗口机制中,理论上可以达到 $100\%$ 信道利用率的是( )。
I. 停止-等待协议
II. 后退 $N$ 倾协议
III. 选择重传协议
A. I
B. II
C. III
D. II 和 III
21. 数据链路层采用选择重传协议进行流量控制,发送方在收到 $0\sim 3$ 号倾的确认后,又收到了5号倾的确认,发送窗口内还有其他倾未发送,且未发生超时,则发送方将( )。
A. 重传4号倾
B. 重传5号倾
C. 接收该确认倾并继续发送剩下的倾
D. 停止发送并等待超时
22. 【2009统考真题】数据链路层采用了后退 $N$ 倾(GBN)协议,发送方已经发送了编号为 $0\sim 7$ 的倾。当计时器超时的时候,若发送方只收到 $0,2,3$ 号倾的确认,则发送方需要重发的倾数是( )。
A. 2
B. 3
C. 4
D. 5
23. 【2011统考真题】数据链路层采用选择重传协议(SR)传输数据,发送方已发送 $0\sim 3$ 号数据倾,现已收到1号倾的确认,而0、2号倾依次超时,则此时需要重传的倾数是( )。
A. 1
B. 2
C. 3
D. 4
24. 【2012统考真题】两台主机之间的数据链路层采用后退 $N$ 倾协议(GBN)传输数据,数据传输速率为 $16\mathrm{kb / s}$,单向传播时延为 $270\mathrm{ms}$,数据倾长范围是 $128\sim 512\mathrm{B}$,接收方总是以与数据倾等长的倾进行确认。为使信道利用率达到最高,倾序号的比特数至少为( )。
A. 5
B. 4
C. 3
D. 2
25. 【2014统考真题】主机甲与主机乙之间使用后退 $N$ 倾协议(GBN)传输数据,主机甲的发送窗口尺寸为1000,数据倾长为1000B,信道带宽为 $100\mathrm{Mb / s}$,主机乙每收到一个数据倾,就立即利用一个短倾(忽略其传输延迟)进行确认,若主机甲和主机乙之间的单向传播时延是 $50\mathrm{ms}$,则主机甲可以达到的最大平均数据传输速率约为( )。
A. $10\mathrm{Mb / s}$
B. $20\mathrm{Mb / s}$
C. $80\mathrm{Mb / s}$
D. $100\mathrm{Mb / s}$
26. 【2015统考真题】主机甲通过 $128\mathrm{kb / s}$ 卫星链路,采用滑动窗口协议向主机乙发送数据,链路单向传播时延为 $250\mathrm{ms}$,倾长为1000B。不考虑确认倾的开销,为使链路利用率不小于 $80\%$,倾序号的比特数至少是( )。
A. 3
B. 4
C. 7
D. 8
27. 【2018统考真题】主机甲采用停止-等待协议向主机乙发送数据,数据传输速率是 $3\mathrm{kb / s}$,单向传播时延是 $200\mathrm{ms}$,忽略确认倾的传输时延。当信道利用率等于 $40\%$ 时,数据倾的长度为( )。
A. 240 比特
B. 400 比特
C. 480 比特
D. 800 比特
<!-- page: 82 -->
2027年计算机网络考研复习指导
28. 【2019统考真题】对于滑动窗口协议,若分组序号采用3比特编号,发送窗口大小为5,则接收窗口最大是( )。
A. 2
B. 3
C. 4
D. 5
29. 【2020统考真题】假设主机甲采用停止-等待协议向主机乙发送数据帧,数据帧长与确认帧长均为1000B,数据传输速率是 10kb/s,单向传播时延是 200ms。则主机甲的最大信道利用率为( )。
A. 80%
B. 66.7%
C. 44.4%
D. 40%
30. 【2023统考真题】假设通过同一条信道,数据链路层分别采用停止-等待协议、GBN协议和SR协议(发送窗口和接收窗口相等)传输数据,三个协议的数据帧长相同,忽略确认帧长,帧序号位数为3比特。若对应三个协议的发送方最大信道利用率分别是 $U_{1}$ 、 $U_{2}$ 和 $U_{3}$ ,则 $U_{1}$ 、 $U_{2}$ 和 $U_{3}$ 满足的关系是( )。
A. $U_{1} \leqslant U_{2} \leqslant U_{3}$
B. $U_{1} \leqslant U_{3} \leqslant U_{2}$
C. $U_{2} \leqslant U_{3} \leqslant U_{1}$
D. $U_{3} \leqslant U_{2} \leqslant U_{1}$
31. 【2024统考真题】主机甲通过选择重传(SR)滑动窗口协议向主机乙发送帧的部分过程如下图所示, $Fx$ 为数据帧,ACKx为确认帧, $x$ 是位数为3比特的序号。主机乙只对正确接收的数据帧进行独立确认,发送窗口与接收窗口大小相同且均为最大值。主机甲在 $t_1$ 时刻和 $t_2$ 时刻发送的数据帧分别是( )。
原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。
A. F1, F3
B. F1, F4
C. F3, F1
D. F4, F1
## 二、综合应用题
01. 在选择重传协议中,设序号用 3 比特编号,发送窗口 $W_{\mathrm{T}} = 6$ ,接收窗口 $W_{\mathrm{R}} = 3$ 。试找出一种情况,使得在此情况下协议不能正确工作。
02. 假设一个信道的数据传输速率为 $5\mathrm{kb / s}$ ,单向传播时延为 $30\mathrm{ms}$ ,帧长在什么范围内时,才能使用于差错控制的停止-等待协议的效率至少为 $50\%$ ?(忽略确认帧的发送时延。)
03. 假定信道的数据传输速率为 $100\mathrm{kb / s}$ ,单程传播时延为 $250\mathrm{ms}$ ,每个数据帧的长度均为 2000 位,且不考虑确认帧长、首部和处理时间等开销,为了达到最大的传输效率,试问帧的序号应为多少位?此时的信道利用率是多少?
04. 在数据传输速率为 $50\mathrm{kb / s}$ 的信道上传送长度为 1kbit 的帧,总是采用捎带确认,帧序号长度为 3bit,单向传播延迟为 $270\mathrm{ms}$ 。对于下面三种协议,信道的最大利用率是多少?
1)停止-等待协议。
2)后退 $N$ 帧协议。
3)选择重传协议(假设发送窗口和接收窗口相等)。
<!-- page: 83 -->
第3章 数据链路层
05. 对于下列给定条件,不考虑差错重传,停止-等待协议的实际数据传输速率是多少?
$$
R = \text {传输速率} (16 \mathrm{Mb/s})
$$
$$
S = \text {信号传播速率} (200 \mathrm{m}/\mu\mathrm{s})
$$
$$
D = \text {接收主机和发送主机之间传播距离} (200 \mathrm{m})
$$
$$
T = \text {创建帧的时间} (2 \mu\mathrm{s})
$$
$$
F = \text {每帧的长度} (500 \mathrm{bit})
$$
$$
N = \text {每帧中的数据长度} (450 \mathrm{bit})
$$
$$
A = \text {确认帧 ACK 的帧长} (80 \mathrm{bit})
$$
06. 在数据传输速率为 $64\mathrm{kb/s}$ 的卫星信道上,甲方发送长度为 512B 的数据帧,乙方返回一个很短的确认帧(忽略确认帧的发送时延)。信道的单向传播时延为 $270\mathrm{ms}$,对于发送窗口大小分别为 1、7、17 和 117 的情况,甲方的实际数据传输速率分别为多少?
07. 【2017统考真题】甲乙双方均采用后退 $N$ 帧协议(GBN)进行持续的双向数据传输,且双方始终采用损带确认,帧长均为 $1000\mathrm{B}$。$S_{x,y}$ 和 $R_{x,y}$ 分别表示甲方和乙方发送的数据帧,其中 $x$ 是发送序号,$y$ 是确认序号(表示希望接收对方的下一帧序号),数据帧的发送序号和确认序号字段均为 3 比特。信道传输速率为 $100\mathrm{Mb/s}$,$\mathrm{RTT} = 0.96\mathrm{ms}$。下图给出了甲方发送数据帧和接收数据帧的两种场景,其中 $t_0$ 为初始时刻,此时甲方的发送和确认序号均为 0,$t_1$ 时刻甲方有足够多的数据待发送。
请回答下列问题。
1)对于图(a),$t_0$ 时刻到 $t_1$ 时刻期间,甲方可以断定乙方已正确接收的数据帧数是多少?正确接收的是哪几个帧(请用 $S_{x,y}$ 形式给出)?
2)对于图(a),从 $t_1$ 时刻起,甲方在不出现超时且未收到乙方新的数据帧之前,最多还可以发送多少数据帧?其中第一个帧和最后一个帧分别是哪个(请用 $S_{x,y}$ 形式给出)?
3)对于图(b),从 $t_1$ 时刻起,甲方在不出现新的超时且未收到乙方新的数据帧之前,需要重发多少数据帧?重发的第一个帧是哪个帧(请用 $S_{x,y}$ 形式给出)?
4)甲方可以达到的最大信道利用率是多少?
原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。
(a)
原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。
(b) <!-- page: 84 --> 2027年计算机网络考研复习指导