3.4.4 答案与解析
## 3.4.4 答案与解析
### 一、单项选择题
#### 01. A
停止-等待协议采用1比特给数据帧编号,发送窗口和接收窗口的尺寸都为1,选项A正确。仅在收到当前窗口内的数据帧后,接收窗口才能向后移动,因此一定是按序接收的。停止-等待协议的信道利用率 = 一个数据帧的发送时延 + (一个数据帧的发送时延 + RTT + 一个确认帧的发送时延),其中分子一定是小于分母的,所以信道利用率不可能达到 100%,当RTT较大时,会降低信道利用率,因此停止-等待协议适合RTT较小的信道。
#### 02. B
根据信道利用率的计算公式,当数据传输速率很高时,数据帧的发送时间很短;当源主机和目的主机的距离很远时,往返时延很大,此时的信道利用率很低。
#### 03. D
在停止-等待协议中,发送方设置了计时器,在发送一个帧后,发送方等待确认,若在计时器计满时仍未收到确认,则再次发送相同的帧,以免陷入永久的等待。
#### 04. A
在停止-等待协议中,使用1位来编号即可。若连续出现相同序号的数据帧,则表明发送方进行了超时重传;若连续出现相同序号的确认帧,则表明接收方收到了重复帧。
#### 05. D
设 C 为数据传输速率,L 为帧长,R 为单程传播时延。停止-等待协议的信道最大利用率为 $(L / C) / (L / C + 2R) = L / (L + 2RC) = L / (L + 2 \times 30\mathrm{ms} \times 4\mathrm{kb / s}) = 80\%$,得出 $L = 960\mathrm{bit}$。
#### 06. D
本题忽略确认帧的发送时延,所以信道利用率 = 数据帧的发送时延/(数据帧的发送时延 + 往返时延) = 0.4,解得数据帧的发送时延为 4/30s,所以数据帧的长度为 $6\mathrm{kb / s} \times 4 / 30\mathrm{s} = 800\mathrm{bit}$。
#### 07. B
停止-等待协议使用确认和重传机制,发送方每发送一个帧,就要停下来等待接收方发回的确认帧,收到确认帧后才能发送下一帧,经过超时时间后未收到ACK帧则自动重传。
#### 08. D
连续ARQ协议分为GBN协议和SR协议。SR的接收窗口大于1,接收方可以先收下失序但序号仍落在接收窗口内的那些数据帧。GBN的接收窗口等于1,接收方必须按序接收数据帧。
#### 09. A
发送方收到5号帧的确认后,表示5号帧及之前的所有帧都被接收方正确接收,因此滑动窗口右移后,新窗口内的第一个帧就是6号帧,又因为此时可发送的数据帧数为6,因此发送窗口的总大小为7。在GBN协议中,若采用 $n$ 位给帧编号,则发送窗口大小为 $2^{n} - 1$,因此 $n = 3$。
#### 10. B
后退 $N$ 帧协议采用累积确认,确认的最后一个帧是4号帧,表示4号帧及4号帧之前的数据帧都已被正确接收,所以只需重传5号帧和6号帧这两个数据帧。
#### 11. C
对于滑动窗口协议,序列号个数要大于或等于窗口数(发送窗口大小 + 接收窗口大小),所以在后退 $N$ 帧的协议中,序列号个数不小于“发送窗口大小 + 1”,题中发送窗口大小是32,
<!-- page: 85 -->
第3章 数据链路层
那么序列号个数最少应该是33个。所以最少需要6位的序列号才能达到要求。
12. C
接收窗口整体向前移动时,新窗口中的序列号和旧窗口的序列号产生重叠,致使接收方无法区别发送方发送的帧是重发帧还是新帧,因此在后退 $N$ 帧的ARQ协议中,发送窗口 $W_{\mathrm{T}} \leqslant 2^{n} - 1$ 。本题中 $n = 7$ ,因此发送窗口的最大长度是127。
13. B
在选择重传协议中,若用 $n$ 比特对帧编号,则发送窗口和接收窗口的大小关系为 $1 < W_{\mathrm{R}} \leqslant W_{\mathrm{T}}$ ,还需满足 $W_{\mathrm{R}} + W_{\mathrm{T}} \leqslant 2^{n}$ ,所以接收窗口的最大尺寸不超过序号范围的一半,即 $W_{\mathrm{R}} \leqslant 2^{n - 1}$ 。
14. B
在连续ARQ协议中,发送窗口大小 $\leqslant$ 窗口总数-1。例如,窗口总数为8,编号为 $0\sim 7$ ,假设这8个帧都已发出,下一轮又发出编号 $0\sim 7$ 的8个帧,接收方将无法判断第二轮发的8个帧到底是重传帧还是新帧,因为它们的序号完全相同。另一方面,对于后退 $N$ 帧协议,发送窗口大小可以等于窗口总数-1,因为它的接收窗口大小为1,所有的帧保证按序接收。因此对于窗口大小为 $n$ 的滑动窗口,其发送窗口大小最大为 $n - 1$ ,即最多可以有 $n - 1$ 帧已发送但没有确认。
15. C
在选择重传协议中,若用 $n$ 比特对帧编号,则发送窗口和接收窗口的大小关系为 $1 < W_{\mathrm{R}} \leqslant W_{\mathrm{T}}$ ,此外,还要满足 $W_{\mathrm{R}} + W_{\mathrm{T}} \leqslant 2^{n}$ ,因此发送窗口的最大尺寸为 $2^{4} - 7 = 16 - 7 = 9$ 。
16. D
本题未直接告知使用的是选择重传协议,而是通过间接方式给出的。题目称无序接收的滑动窗口协议,表示接收窗口大于1,所以使用的是选择重传协议,接收窗口最大尺寸为 $2^{n - 1}$ 。
17. D
无论采用哪种滑动窗口协议,信道利用率的计算方法都是:发送窗口内所有数据帧的发送时延/(一个数据帧的发送时延 + RTT + 一个确认帧的发送时延)。分母记为 $T =$ 一个数据帧的发送时延 + RTT + 一个确认帧的发送时延,其中数据帧或确认帧的发送时延 = 2000B/(20kb/s) = 800ms,RTT = 1400ms,即 $T = 800 + 800 + 1400 = 3000\mathrm{ms}$ 。假设发送窗口大小为 $x$ ,则 $800x / 3000 > 0.8$ ,即发送窗口大小 $x$ 要大于3,GBN协议的发送窗口为 $2^{3} - 1 = 7$ ,满足要求;SR协议的发送窗口为 $2^{2} = 4$ ,也满足要求。因此,A和B之间可以采用GBN协议或SR协议。
18. C
实现流量控制的常用方法是滑动窗口协议,它让接收方把自己的接收窗口大小反馈给发送方,以调节发送方的发送窗口大小,避免发送方因发送速度过快而导致接收方来不及接收。
19. C
为使信道利用率最高( $100\%$ ),要让发送方在一个发送周期内持续发送帧,不能出现发送窗口内的帧发完但还未收到第一个帧的确认帧的情况。发送周期 = 发送一个数据帧的时间 + 往返时延 + 发送一个确认帧的时间,发送一个数据帧或确认帧的时间均为 $128\mathrm{B} \div 16\mathrm{kb/s} = 64\mathrm{ms}$ ,发送周期 = $64\mathrm{ms} + 250\mathrm{ms} \times 2 + 64\mathrm{ms} = 628\mathrm{ms}$ 。为保证发送方持续发送帧,在一个发送周期内至少要发送的帧数为 $628\mathrm{ms} / 64\mathrm{ms} \approx 10$ ,即发送窗口大小至少为 10,所以帧序号至少采用 4 比特。
20. D
信道利用率 = 发送周期内用于发送数据帧的时间/发送周期,其中发送周期 = 发送一个数据帧的时间 + 往返时延 + 发送一个确认帧的时间。停止-等待协议的发送窗口为 1,不可能达到 $100\%$ 的信道利用率;只要发送窗口够大,后退 $N$ 帧协议和选择重传协议都有可能达到 $100\%$ 的信道利用率。
21. C
<!-- page: 86 -->
2027年计算机网络考研复习指导
在选择重传协议中,接收方对正确收到的每个数据帧单独进行确认,不要求收到的数据帧是有序的。依题意,接收方已正确收到 $0 \sim 3$ 号和5号数据帧,但不确定4号数据帧是否收到。因为没有发生超时,发送方不进行重传,所以接收该确认帧并继续发送剩下的数据帧。
## 22. C
在GBN协议中,当接收方检测到某帧出错时,会简单地丢弃该帧及所有的后续帧,发送方超时后需重传该数据帧及所有的后续帧。注意,在GBN协议中,接收方一般采用累积确认的方式,即接收方对按序到达的最后一个分组发送确认,因此本题中收到3号帧的确认就表示编号为0、1、2、3的帧已接收,而此时发送方未收到1号帧的确认只能代表确认帧在返回的过程中丢失,而不代表1号帧未到达接收方。因此需要重传的帧为编号是4、5、6、7的帧。
## 23. B
在选择重传协议中,接收方逐个确认正确接收的分组,不管接收到的分组是否有序,只要正确接收就发送选择ACK分组进行确认,因此ACK分组不再具有累积确认的作用。对于这一点,要特别注意与GBN协议的区别。此题中只收到1号帧的确认,0、2号帧超时,因为对1号帧的确认不具有累积确认的作用,所以发送方认为接收方未收到0、2号帧,于是重传这两帧。
## 24. B
连续ARQ的信道利用率:
$$
\frac {\text {发送窗口大小} \times \text {数据帧长} / \text {数据传输速率}}{(\text {数据帧长} / \text {数据传输速率}) \times 2 + \text {RTT}} = \frac {\text {发送窗口大小} / \text {数据传输速率}}{2 / \text {数据帧长} + \text {RTT} / \text {数据帧长}}
$$
从上述公式可知,数据帧长越大,信道利用率就越高。数据帧长是不确定的,范围为 $128\sim 512\mathrm{B}$,在计算最小窗口数时,为了保证无论数据帧长如何变化,信道利用率都能达到 $100\%$,应以128B的帧长计算。因此,当最短的帧长都能达到 $100\%$ 的信道利用率时,发送更长的数据帧也都能达到 $100\%$ 的信道利用率。若以512B的帧长计算,则求得的最小窗口数在128B的帧长下,达不到 $100\%$ 的信道利用率。首先计算出发送一个帧的时间: $128\times 8 / (16\times 10^{3}) = 64\mathrm{ms}$;发送一个帧到收到确认帧为止的总时间: $64 + 270\times 2 + 64 = 668\mathrm{ms}$;这段时间总共可发送 $668 / 64 = 10.4$ 帧,即发送窗口 $\geqslant 11$,而接收窗口 $= 1$,所以至少需要用4位比特进行编号。
## 25. C
考虑制约甲方的数据传输速率的因素。首先,信道带宽能直接制约数据的传输速率,传输速率一定是小于或等于信道带宽的。其次,因为甲方和乙方之间采用后退 $N$ 帧协议传输数据,要考虑发送一个数据到接收到它的确认之前,最多能发送多少数据,甲方的最大传输速率受这两个条件的约束,所以甲方的最大传输速率是这两个值中的小者。甲方的发送窗口尺寸为1000,即收到第一个数据的确认前,最多能发送1000个数据帧,即 $1000\times 1000\mathrm{B} = 1\mathrm{MB}$ 的内容,而从发送第一个帧到接收到它的确认的时间是一个帧的发送时间加上往返时间,即 $1000\mathrm{B}\div 100\mathrm{Mb / s} + 50\mathrm{ms} + 50\mathrm{ms} = 0.10008\mathrm{s}$,此时的最大传输速率为 $1\mathrm{MB} / 0.10008\mathrm{s}\approx 10\mathrm{MB / s} = 80\mathrm{Mb / s}$。信道带宽为 $100\mathrm{Mb / s}$,因此答案为 $\min (80\mathrm{Mb / s},$ $100\mathrm{Mb / s}) = 80\mathrm{Mb / s}$。
## 26. B
按发送周期思考,从开始发送帧到收到第一个确认帧为止,用时为 $T =$ 第一个帧的发送时延 + 第一个帧的传播时延 + 确认帧的发送时延 + 确认帧的传播时延,这里忽略确认帧的发送时延。因此 $T = 1000\mathrm{B} \div 128\mathrm{kb / s} + \mathrm{RTT} = 0.5625\mathrm{s}$,接着计算在 $T$ 内需要发送多少数据才能满足利用率不小于 $80\%$。设数据大小为 $L$ 字节,则 $(L \div 128\mathrm{kb / s}) / T \geqslant 0.8$,得到 $L \geqslant 7200\mathrm{B}$,即在一个发送周期内至少要发7.2个帧才能满足要求,设需要编号的比特数为 $n$,则 $2^n - 1 \geqslant 7.2$,$n$ 至少为4。
<!-- page: 87 -->
第3章 数据链路层
75
## 27. D
信道利用率 = 传输帧的有效时间/传输帧的周期。假设帧的长度为 $x$ 比特。对于有效时间,应该用帧的大小除以数据传输速率,即 $x \div 3\mathrm{kb/s}$。对于帧的传输周期,应包含 4 部分:帧在发送方的发送时延、帧从发送方到接收方的单程传播时延、确认帧在接收方的发送时延、确认帧从接收方到发送方的单程传播时延。这 4 个时延中,因为题目中说“忽略确认帧的传输时延”,所以不计算确认帧的传输时延(传输时延也称发送时延,注意与传播时延区分)。所以帧的传输周期由三部分组成:首先是帧在发送方的发送时延 $x \div 3\mathrm{kb/s}$,其次是帧从发送方到接收方的单程传播时延 $200\mathrm{ms}$,最后是确认帧从接收方到发送方的单程传播时延 $200\mathrm{ms}$,三者相加得周期为 $x \div 3\mathrm{kb/s} + 400\mathrm{ms}$。代入信道利用率的公式得 $x = 800\mathrm{bit}$。
## 28. B
从滑动窗口的概念来看,停止-等待协议:发送窗口大小 = 1,接收窗口大小 = 1;后退 $N$ 帧协议:发送窗口大小 > 1,接收窗口大小 = 1;选择重传协议:发送窗口大小 > 1,接收窗口大小 > 1。在选择重传协议中,还需满足:接收窗口大小 ≤ 发送窗口大小;发送窗口大小 + 接收窗口大小 ≤ $2^n$。根据以上规则,采用 3 比特编号,发送窗口大小为 5,接收窗口大小 ≤ 3。
## 29. D
发送数据帧和确认帧的时间均为 $t = 1000 \times 8\mathrm{b} \div 10\mathrm{kb/s} = 800\mathrm{ms}$。
发送周期为 $T = 800\mathrm{ms} + 200\mathrm{ms} + 800\mathrm{ms} + 200\mathrm{ms} = 2000\mathrm{ms}$。
信道利用率为 $t / T \times 100\% = 800 / 2000 = 40\%$。
## 30. B
信道利用率 $U = nT_{\mathrm{D}} / T$,其中 $n$ 是发送窗口的大小,$T_{\mathrm{D}}$ 是发送一个数据帧的时间,$T$ 是一个数据帧的发送周期。在 $T_{\mathrm{D}}$ 和 $T$ 确定的情况下,$n$ 越大,信道利用率就越大。设帧序号的比特数为 $k$,则停止-等待协议的发送窗口 $W_{\mathrm{T1}} = 1$;GBN 协议的发送窗口 $W_{\mathrm{T2}} = 2^k - 1$;SR 协议的发送窗口 $W_{\mathrm{T3}} \leqslant 2^k - 1$,通常取 $2^{k-1}$,$W_{\mathrm{T1}} \leqslant W_{\mathrm{T3}} \leqslant W_{\mathrm{T2}}$,因此 $U_1 \leqslant U_3 \leqslant U_2$。
## 31. D
数据帧编号的范围是 $0 \sim 7$,发送窗口与接收窗口大小相等且均为最大值,因此发送窗口大小 = 接收窗口大小 $= 2^{3-1} = 4$。甲发送 F0、F1、F2 和 F3 四个数据帧后,收到 F0 的确认,因此在 $t_1$ 时刻,发送窗口向右滑动,可以继续发送 F4,之后收到 F2 的确认,但由于 F1 丢失,甲无法收到 F1 的确认,发送窗口无法继续向右滑动,直到 $t_2$ 时刻,F1 超时,重传 F1,选项 D 正确。
原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。
## 二、综合应用题
### 01. 【解答】
对于选择重传协议,接收窗口和发送窗口的尺寸需满足:接收窗口尺寸 $W_{\mathrm{R}} +$ 发送窗口尺寸 $W_{\mathrm{T}} \leqslant 2^{n}$,而题中给出的数据是 $W_{\mathrm{R}} + W_{\mathrm{T}} = 9 \geqslant 2^{3}$,所以是无法正常工作的。举例如下:
<!-- page: 88 -->
2027年计算机网络考研复习指导
发送方:01234567012345670
接收方:01234567012345670
发送方发送 $0 \sim 5$ 号共6个数据帧时,因发送窗口已满,发送暂停。接收方收到所有数据帧,对每个帧都发送确认帧,并期待后面的6、7、0号帧。若所有的确认帧都未到达发送方,经过发送方计时器控制的超时时间后,发送方再次发送之前的6个数据帧,而接收方收到0号帧后,无法判断是新的数据帧还是重传的旧的数据帧。
## 02. 【解答】
设数据帧长为 $L$ 。在停止-等待协议中,发送数据帧的时间为 $L / B$ ,发送完数据帧后等待确认的时间为 $2R$ 。要使协议的效率至少为 $50\%$ ,要求信道利用率 $U$ 至少为 $50\%$ ,则
$$
\text{信道利用率} U = \frac{\text{数据发送时延}}{\text{数据发送时延} + \text{往返时延}} = \frac{L / B}{L / B + 2R} \geqslant 50\%
$$
解得 $L \geqslant 2RB = 2 \times 5000 \times 0.03\mathrm{bit} = 300\mathrm{bit}$ 。
因此,当帧长大于或等于300bit时,停止-等待协议的效率至少为 $50\%$ 。
## 03. 【解答】
$\mathrm{RTT} = 250 \times 2 = 500 \mathrm{~ms} = 0.5 \mathrm{~s}$ 。
一个帧的发送时间等于 $2000\mathrm{bit} + 100\mathrm{kb / s} = 20\times 10^{-3}\mathrm{s} = 0.02\mathrm{s}$ 。
一个帧发送完后经过一个单程时延到达接收方,再经过一个单程时延发送方收到确认帧,从而可以继续发送,因此要使传输效率最大,就要让发送方继续地发送帧。设发送窗口等于 $x$ ,则
$$
0.02\mathrm{s} \times x = 0.02\mathrm{s} + \mathrm{RTT} = 0.52\mathrm{s}
$$
解得 $x = 26$ ,即发送窗口取26即可。因为 $16 < 26 < 32$ ,所以帧序号应为5位。在使用连续ARQ的情况下,发送窗口的最大值是31,大于26,可以不间断地发送帧,此时信道利用率是 $100\%$ 。
## 04. 【解答】
最大信道利用率即每个传输周期内每个协议可发送的最大帧数。由题意,数据帧的长度为1kbit,信道的数据传输速率为 $50\mathrm{kb / s}$ ,因此信道的发送时延为 $1 / 50s = 0.02s$ ,另外信道端到端的传播时延 $= 0.27s$ 。本题中的确认帧是捎带的(通过数据帧来传送),因此每个数据帧的传输周期为 $(0.02 + 0.27 + 0.02 + 0.27)s = 0.58s$ ,
1)在停止-等待协议中,发送方每发送一帧,都要等待接收方的应答信号,之后才能发送下一帧;接收方每接收一帧,都要反馈一个应答信号,表示可接收下一帧。其中用于发送数据帧的时间为0.02s。因此,信道的最大利用率为 $0.02 / 0.58 = 3.4\%$ 。
2)在后退 $N$ 帧协议中,接收窗口尺寸为1,若采用 $n$ 比特对帧编号,则其发送窗口的尺寸 $W$ 满足 $1 < W \leqslant 2^{n} - 1$ 。发送方可以连续再发送若干数据帧,直到发送窗口内的数据帧都发送完毕。若收到接收方的确认帧,则可以继续发送。若某个帧出错,则接收方只是简单地丢弃该帧及所有的后续帧,发送方超时后,需要重传该数据帧及所有的后续数据帧。根据题目条件,在达到最大传输速率的情况下,发送窗口的大小应为 $2^{n} - 1 = 7$ ,此时在第一帧的数据传输周期0.58s内,实际连续发送了7帧(考虑极限情况,0.58s后接收方只收到0号帧的确认,此时又可以发出一个新帧,这样依次下去,取极限即是每个传输周期0.58s内发送了7帧),因此此时的最大信道利用率为 $7 \times 0.02 / 0.58 = 24.1\%$ 。
3)选择重传协议的接收窗口尺寸和发送窗口尺寸都大于1,可以一次发送或接收多个帧。若采用 $n$ 比特对帧编号,则窗口尺寸应满足:接收窗口尺寸+发送窗口尺寸 $\leqslant 2^{n}$ ,当发送窗口与接收窗口尺寸相等时,应有接收窗口尺寸 $\leqslant 2^{n - 1}$ 且发送窗口尺寸 $\leqslant 2^{n - 1}$ 。发送方可以连续发送若干数据帧,直到发送窗口内的数据帧都发送完毕。若收到接收方的确认帧,则可以继续
<!-- page: 89 -->
第3章 数据链路层
77
发送。若某帧出错,则接收方只是简单地丢弃该帧,发送方超时后需重传该数据帧。
和2)问中的情况类似,唯一不同的是为达到最大信道利用率,发送窗口大小应为 $2^{\mathrm{m} - 1} = 4$,因此,此时的最大信道利用率为 $4 \times 0.02 / 0.58 = 13.8\%$。