41. D

2027 · OCR 辅助 · 原书检索 · 文字用于定位,公式与图表请回原页核验 · 本次导入快照

## 41. D

确认序号表示接收方期望收到的下一个字节的序号。第一个段起始序号为200,包含300B数据,序号范围 $200\sim 499$ ;第二个段起始序号为500,包含500B数据,序号范围 $500\sim 999$ 。因此,乙正确接收后,期望的下一个字节序号为1000,故返回的确认序号为1000。

## 42. C

超时发生时,将慢开始门限 ssthresh 设为当前拥塞窗口 cwnd 的一半,即 8KB,并将 cwnd 重置为 1KB。此后进入慢开始阶段:第 1 个 RTT 后 cwnd = 2KB,第 2 个 RTT 后 cwnd = 4KB,第 3 个 RTT 后 cwnd = 8KB(达到 ssthresh)。从第 4 个 RTT 开始转为拥塞避免算法,窗口线性增长,即每个 RTT 增加 1 个 MSS(1KB),因此第 4 个 RTT 结束时 cwnd = 8 + 1 = 9KB。

## 43. A

发送窗口的大小由接收窗口和拥塞窗口中的较小值决定。主机甲的拥塞窗口为4000B,乙确认段通告的接收窗口为2000B,因此发送窗口 $= \min \{4000, 2000\} = 2000\mathrm{B}$ 。甲已连续发送两个最大段(共2000B),但仅第一个段被确认,说明第二个段(1000B)仍处于已发送未确认状态。因此,甲已使用的窗口为1000B,还可发送的最大字节数 $= 2000 - 1000 = 1000\mathrm{B}$ 。

## 44. C

在TCP三次握手中,当主机乙接受连接请求时,必须发送SYN=1且ACK=1的报文段。确认序号ack应为甲初始序号seq=11220加1,即11221。乙的序号seq由其自行选择,与甲的序号无关,可为任意值。因此选项C(SYN=1,ACK=1,seq=11221,ack=11221)符合要求。

## 45. B

TCP段的序号字段表示该段数据部分第一个字节的序号。已知第3个段序号为900,则第2个段的结束序号为899,起始序号 $= 900 - 400 = 500$ 。主机乙仅收到第1段和第3段,未收到第2段( $500\sim 899$ ),因此期望收到的下一个字节序号为500,即确认序号为500。

## 46. B

乙发送给甲的TCP段中,序号seq=1913表示其数据从字节编号1913开始,有效载荷为100B,故覆盖 $1913\sim 2012$ ;确认序号ack=2046表示乙已成功接收甲发送的序号至2045的所有数据,期望下个字节为2046。甲成功收到后,在立即回复的TCP段中,seq应置为2046(发送的第一个字节序号),ack应置为2013(期待乙发送的下一个字节序号,即 $2012 + 1 = 2013$ )。

## 47. A

$t$ 时刻发生超时,将慢开始门限 ssthresh 设为 $8\mathrm{KB} / 2 = 4\mathrm{KB}$ ,并将拥塞窗口 cwnd 重置为1KB。接收窗口恒为10KB,因此发送窗口 $= \min \{\mathrm{cwnd},10\mathrm{KB}\}$ 。经历10RTT后,拥塞窗口的大小(单位为KB)依次为2,4,5,6,7,8,9,10,11,12。由于接收窗口限制为10KB,最终发送窗口为10KB。实际上,由于发送窗口必然总小于或等于10KB,四个选项中只有选项A符合条件。

## 48. A

发送窗口 $= \min \{\text{接收窗口}, \text{拥塞窗口}\}$ 。乙的接收缓存为16KB且不取走数据,因此接收窗口随接收数据递减。甲按慢开始发送:第1RTT发1KB,累计1KB;第2RTT发2KB,累计3KB;第3RTT发4KB,累计7KB;第4RTT发8KB,累计15KB。此时乙的缓存剩余1KB,接收窗口 $= 1\mathrm{KB}$ 。拥塞窗口此时为16KB,故发送窗口 $= \min \{16\mathrm{KB}, 1\mathrm{KB}\} = 1\mathrm{KB}$ 。

<!-- page: 273 -->

第5章 传输层
261

49. A

接收缓存为 64KB,远大于目标窗口 32KB,因此发送窗口由拥塞窗口决定。TCP 慢开始阶段,初始拥塞窗口 cwnd = 1KB(1MSS),每经过 1RTT,cwnd 翻倍:$1\mathrm{KB} \rightarrow 2\mathrm{KB} \rightarrow 4\mathrm{KB} \rightarrow 8\mathrm{KB} \rightarrow 16\mathrm{KB} \rightarrow 32\mathrm{KB}$,共需 5RTT。每个 RTT = 5ms,总时间 = $5 \times 5\mathrm{ms} = 25\mathrm{ms}$。

50. C

TCP 快速重传机制规定:当发送方收到对同一报文段的 3 个重复确认(冗余 ACK)时,立即重传丢失段。$t_0$ 时刻首次收到 ack_seq = 100 的确认段,不计入冗余;$t_1$、$t_2$、$t_3$ 连续收到三个相同的 ack_seq = 100,构成 3 个重复 ACK,因此在 $t_3$ 时刻触发快速重传,重新发送 seq = 100 的段。

51. D

三次握手过程:甲发 SYN(seq = 2018);乙回 SYN + ACK(seq = 2046, ack = 2019);甲再发 ACK。第三次握手的确认序号应为乙的初始序号加 1,即 $2046 + 1 = 2047$。

52. D

由于慢开始门限 ssthresh 可按需设置,为求拥塞窗口 cwnd 从 8KB 增长到 32KB 所需的最长时间,可将 ssthresh 设置小于或等于 8KB。即始终处于拥塞避免阶段,cwnd 从 8KB 增至 32KB,需增加 24KB,每经过一个 RTT,cwnd 加 1,故需 24 个 RTT,总时间为 $24 \times 2\mathrm{ms} = 48\mathrm{ms}$。

53. C

TCP 规定:SYN 段虽不携带数据,但要消耗一个序号,因此数据传输阶段所用的起始序号为 $1000 + 1 = 1001$。FIN 段也要消耗一个序号,因此已发送数据的最后一个字节序号为 $5001 - 1 = 5000$。因此已发送应用层数据字节数为 $5000 - 1001 + 1 = 4000\mathrm{B}$。

54. B

TCP 客户主动关闭连接:发 FIN 后进入 FIN_WAIT_1 状态;收到服务器 ACK 后进入 FIN_WAIT_2 状态;收到服务器 FIN 后,客户发 ACK 后进入 TIME_WAIT 状态;经过 2MSL 时间后才进入 CLOSED 状态。因此,当客户收到服务器 FIN 并发送 ACK 后,其状态为 TIME_WAIT。

55. D

UDP 首部固定为 8B,传输 12B 应用数据时总长度 = $12 + 8 = 20\mathrm{B}$,有效载荷传输效率 = $12 / 20 = 60\%$。TCP 首部最短为 20B,总长度 = $12 + 20 = 32\mathrm{B}$,有效载荷传输效率为 $12 / 32 = 37.5\%$。

56. C

甲在 $t_0$ 发送 seq = 501、200B 数据的段,覆盖 $501 \sim 700$。$t_1$ 收到乙的确认段:ack_seq = 501(表示序号 501 之前已接收),rcvwnd = 500B(表示从 501 起可接收 500B 数据)。甲已发送 200B($501 \sim 700$),故在未收到新的确认前,甲还可继续发送 $500 - 200 = 300\mathrm{B}$,对应序号 $701 \sim 1000$。

57. C

时刻 0 发生超时,将慢开始门限值 ssthresh 设为 $16\mathrm{KB} / 2 = 8\mathrm{KB}$,拥塞窗口 cwnd 重置为 1KB。执行慢开始算法:cwnd 指数增长,经过 3RTT,达到 ssthresh;随后执行拥塞避免算法:cwnd 线性增长,再经过 8RTT,达到 16KB。共需 11RTT。拥塞窗口的变化如下表所示。

|  时刻 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|  拥塞窗口 | 1 | 2 | 4 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16  |

58. D

题目问的是最少时间,因此当服务器 S 收到客户 C 发的 FIN 后不再传输数据,而立即返回 ACK 和 FIN。客户 C 主动关闭:C 发 FIN(0ms)→S 在 0.5RTT(25ms)收到后立即返回 ACK + FIN(因无数据待发)→C 在 1RTT(50ms)收到 S 的 ACK + FIN 后,发送 ACK 并启动 2MSL 计

<!-- page: 274 -->

2027年计算机网络考研复习指导

时器。C进入CLOSED状态至少需 $50\mathrm{ms} + 2\times 800\mathrm{ms} = 1650\mathrm{ms}$ 。S在收到C对FIN的ACK后即进入CLOSED状态,该ACK在C发FIN后 $1.5\mathrm{RTT} = 75\mathrm{ms}$ 到达S,故S至少需75ms。

## 59. D

TCP连接建立的前两次握手耗时1RTT。第三次握手段可携带1000B数据(或与数据段合并发送)。H收到确认后,拥塞窗口增长至2000B。因此第3个RTT内,可发送剩余2000B数据,至此数据传输完毕。第4个RTT开始时,H向服务器发送FIN请求断开连接。题目问的是最少时间,因此服务器收到FIN后不再发送数据,并立即回复ACK + FIN。第4个RTT结束时,H收到服务器的FIN,等待2MSL时间(60s)后进入CLOSED状态,总时间为 $40\mathrm{ms} + 60\mathrm{s} = 60.04\mathrm{s}$ 。

原转写引用的配图未随 Markdown 保存,请回到原 PDF 核验。


## 60. A

甲收到确认段(ack_seq = 3001),表明序号 $2001 \sim 3000$ 的1000 B数据已接收。由于当前拥塞窗口小于阈值,处于慢启动阶段,每收到一个ACK,拥塞窗口加1 MSS,故由2000B增至3000B。接收窗口为4000B。因此发送窗口 $= \min\{3000, 4000\} = 3000\mathrm{B}$ 。此时甲已发送但尚未确认的数据为序号 $3001 \sim 4000$ (1000 B),故可用窗口为 $3000 - 1000 = 2000\mathrm{B}$ ,还可发送2个TCP段。

## 61. B

UDP是无连接的,客户发送请求后服务器直接返回应答,整个过程需约1RTT,因此UDP的最少时间为8ms。TCP需先通过三次握手建立连接:客户发送SYN,服务器回复SYN-ACK,客户再发送ACK(可携带应用请求)。从客户发送SYN起,到服务器收到请求共经历1.5RTT,服务器响应后,再经0.5RTT返回客户,总计2RTT。因此TCP的最少时间为16ms。

## 二、综合应用题

### 01. 【解答】

这是因为发送方可能还未重传时,就收到了对更高序号的确认。例如主机A连续发送两个报文段(SEQ=92,DATA共8B)和(SEQ=100,DATA共20B),均正确到达主机B。B连续发送两个确认(ACK=100和ACK=120),但前一个确认在传送时丢失。例如A在第一个报文段(SEQ=92,DATA共8B)超时之前收到了对第二个报文段的确认(ACK=120),此时A知道,119号和在119号之前的所有字节均已被B正确接收,因此A不会再重传第一个报文段。

### 02. 【解答】

第一种方法将失序报文段丢弃,会引起被丢弃报文段的重复传送,增加对网络带宽的消耗,但由于用不着将该报文段暂存,可避免对接收方缓冲区的占用。

第二种方法先将失序报文段暂存于接收缓存,待所缺序号的报文段收齐后再一起上交应用层;这样可以减少发送方的重传次数,减少对网络带宽的消耗,但增加了接收方缓冲区的开销。

### 03. 【解答】

TCP报文段的序号是指其数据部分的第一个字节的序号。因此第一个报文段的序号是10010,序号范围 $10010\sim 11009$ ;第二个报文段的序号是 $10010 + 1000 = 11010$ ,序号范围 $11010\sim 12009$ ;

<!-- page: 275 -->

第5章 传输层
263

第三个报文段的序号为 $11010 \div 1000 = 12010$,序号范围 $12010 \sim 13209$。

## 04. 【解答】

最大数据传输速率表明在1RTT内将窗口中的字节全部发送完毕。在平均往返时间20ms内,发送的最大数据量为最大窗口值,即 $64 \times 1024\mathrm{B}$,

$$
64 \times 1024 \times 8 \div (20 \times 10^{-3}) \approx 26.2\mathrm{Mb/s}
$$

因此,所能得到的最大数据传输速率是 $26.2\mathrm{Mb/s}$。

## 05. 【解答】

发送方发出一个报文所需的时间 = 报文长度/信道带宽 = $1000 \times 8 \div (100 \times 10^{6}) = 0.08\mathrm{ms}$(注意单位转换)。发送方发出一个窗口的第一个报文到收到该报文的确认报文所需的时间 = $0.08 + \mathrm{RTT} = 0.08 + 2 \times$ 端到端时延 = $40.08\mathrm{ms}$。发出一个窗口的所有报文所需的时间 = $60 \times 0.08\mathrm{ms} = 4.8\mathrm{ms}$。在 $40.08\mathrm{ms}$ 时间内,发送方可以连续发出一个窗口的所有报文,若所有报文都正确到达接收方,则所能达到的平均数据传输速率为 $1000 \times 60 \times 8 \div (40.08 \times 10^{-3}) \approx 11.98\mathrm{Mb/s}$。

信道利用率 = 平均数据传输速率/信道带宽(最大数据传输速率)= $11.98 / 100 = 11.98\%$。

## 06. 【解答】

1)TCP 报文段的序号是指其数据部分的第一个字节的编号。因此第一个报文段中的数据有 $120 - 90 = 30\mathrm{B}$,第二个报文段中的数据有 $150 - 120 = 30\mathrm{B}$。

2)因为 TCP 使用累积确认策略,所以当第二个报文段丢失后,第三个报文段就成了失序报文,B 期望收到的下一个报文段是序号为 120 的报文段,所以确认序号为 120。

## 07. 【解答】

最大段长是 $2\mathrm{KB}$,初始的拥塞窗口是 $2\mathrm{KB}$,经过前3个RTT后拥塞窗口依次变为 $4\mathrm{KB}, 8\mathrm{KB}$ 和 $16\mathrm{KB}$,经过第4个RTT后拥塞窗口变为 $32\mathrm{KB}$(大于接收窗口 $24\mathrm{KB}$),所以此时发送窗口取 $24\mathrm{KB}$,即第一个完全窗口。$10\mathrm{ms} \times 4 = 40\mathrm{ms}$,因此需要 $40\mathrm{ms}$ 才能发送第一个完全窗口。

## 08. 【解答】

在慢开始和拥塞避免算法中,拥塞窗口初始为1,窗口大小开始按指数增长。当拥塞窗口大于慢开始门限后停止慢开始算法,改用拥塞避免算法。此处慢开始的门限值初始为12,当拥塞窗口增大到12时改用拥塞避免算法,窗口大小按线性增长,每次增加1个报文段,当增加到16时,出现超时,重新设门限值为8(16的一半),拥塞窗口再重新设为1,执行慢开始算法,到门限值8时执行拥塞避免算法。

这样,拥塞窗口的变化就为1,2,4,8,12,13,14,15,16,1,2,4,8,9,10,11,12,13,14,15,16……。可见从出现超时时拥塞窗口为16到恢复拥塞窗口大小为16,需要的往返时间次数是11。注意,发现超时时,拥塞窗口从16变为1是立即进行的,不会间隔1RTT。

## 09. 【解答】

目标在120s内最多发送 $2^{32}\mathrm{B}$(序号为32位),即35791394B/s的载荷。TCP报文段载荷是1500B,因此可以发送23861个报文段。TCP开销是20B,IP开销是20B,以太网开销是26B(18B的首部和尾部,7B的前同步码,1B的帧开始定界符)。这就意味着对于1500B的载荷,必须发送1566B。$1566\times 8\times 23861\approx 299\mathrm{Mb / s}$,因此允许的最快线路速率是 $299\mathrm{Mb / s}$。当比这一速度更快时,就存在同一时段内不同TCP报文段具有相同序号的风险。

## 10. 【解答】

来回路程的时延 $128\mathrm{ms} \times 2 = 256\mathrm{ms}$。设窗口值为 $X$(注意:单位为字节)。

假定一次最大发送量等于窗口值,且发送时间等于256ms,则每发送一次都得停下来期待再次得到下一个窗口的确认,以得到新的发送许可。这样,发送时间等于停止等待应答的时间,结

<!-- page: 276 -->

2027年计算机网络考研复习指导

果测到的平均吞吐率就等于发送速率的一半,即 $128\mathrm{kb / s}$,

$$
8 X = (128 \times 2 \times 1000) = 256 \times 0.001 \Rightarrow X = 256 \times 1000 \times 256 \times 0.001 / 8 = 256 \times 32 = 8192
$$

所以,窗口值为8192。

## 11. 【解答】

在 TCP 的拥塞控制算法中,除使用慢开始的接收窗口和拥塞窗口外,还使用第 3 个参数,即门槛值。发生超时的时候,该门槛值被设置成当前拥塞窗口值的一半即 9KB,而拥塞窗口则重置成一个最大报文段长。然后使用慢开始的算法决定网络可以接受的迸发量,一直增长到门槛值为止。从这一点开始,成功的传输线性地增加拥塞窗口,即每次迸发传输后只增加一个最大报文段,而不是每个报文段传输后都增加一个最大报文段的窗口值。现在由于发生了超时,下一次传输将是 1 个最大报文段,然后是 2 个、4 个和 8 个最大报文段,第四次发送成功,且门限为 9KB,所以在 4 次迸发量传输后,拥塞窗口将增加为 9KB。

## 12. 【解答】

1)源端口号为第 1、2 个字节,即 0D 28,转换为十进制数为 3368。目的端口号为第 3、4 个字节,即 00 15,转换为十进制数为 21。
2)第 $5 \sim 8$ 个字节为序号,即 505F A906。第 $9 \sim 12$ 个字节为确认序号,即 00000000,也即十进制数 0。
3)第 13 个字节的前 4 位为 TCP 首部的长度,这里的值是 7(以 4B 为单位),因此乘以 4 后得到 TCP 首部的长度为 28B,说明该 TCP 首部还有 8B 的选项数据。
4)根据目的端口是21可知这是一条FTP连接,而TCP的状态则需要分析第14个字节。第14个字节的值为02,即SYN置为1,而且ACK=0表示该数据段没有捎带的确认,这说明是第一次握手时发出的TCP连接。

## 13. 【解答】

1)由图1看出,源IP地址为IP分组头的第 $13\sim 16$ 个字节。在表1中,1、3、4号分组的源IP地址均为192.168.0.8(c0a80008H),所以1、3、4号分组是由H发送的。再观察1、3、4号分组的标识字段,分别是9b、9c、9d,标识字段是一个计数器,每产生一个数据报就加1,这也说明主机H先后发送了1、3、4号分组。

在表1中,1号分组封装的TCP段的 $\mathrm{SYN} = 1$ , $\mathrm{ACK} = 0$ , $\mathrm{seq} = 846\mathrm{b}41\mathrm{c}5\mathrm{H}$ ;2号分组封装的TCP段的 $\mathrm{SYN} = 1$ , $\mathrm{ACK} = 1$ , $\mathrm{seq} = e0599\mathrm{efH}$ , $\mathrm{ack} = 846\mathrm{b}41\mathrm{c}6\mathrm{H}$ ;3号分组封装的TCP段的 $\mathrm{ACK} = 1$ , $\mathrm{seq} = 846\mathrm{b}41\mathrm{c}6\mathrm{H}$ , $\mathrm{ack} = e0599\mathrm{ff}0\mathrm{H}$ ,所以1、2、3号分组完成了TCP连接的建立过程。

由于快速以太网数据帧有效载荷的最小长度为46B,表1中3、5号分组的总长度为40(28H)字节,小于46B,其余分组总长度均大于46B。所以3、5号分组通过快速以太网传输时需要填充。

2)由3号分组封装的TCP段可知,发送应用层数据初始序号为 $\mathrm{seq} = 846\mathrm{b}41\mathrm{c}6\mathrm{H}$ ,由5号分组封装的TCP段可知,ack为 $\mathrm{seq} = 846\mathrm{b}41\mathrm{d}6\mathrm{H}$ ,所以S已经收到的应用层数据的字节数为 $846\mathrm{b}41\mathrm{d}6\mathrm{H}-846\mathrm{b}41\mathrm{c}6\mathrm{H}=10\mathrm{H}=16\mathrm{B}$ 。
3)因为S发出的IP分组的标识 $= 6811\mathrm{H}$ ,所以该分组所对应的是表1中的5号分组。S发出的IP分组的 $\mathrm{TTL} = 40\mathrm{H} = 64$ ,5号分组的 $\mathrm{TTL} = 31\mathrm{H} = 49$ , $64 - 49 = 15$ ,所以可以推断该IP分组到达H时经过了15个路由器。