Relax1000 计算机网络 · 第5章 传输层 · 解析¶
第5章 传输层¶
本章 49 题;解析册印刷页 293-301。
速对答案(原书): DCDCB BCACD DBDDD BACDC BDCAB BBBAC ACBBB ACCAA BCCCB ABBD
Q1¶
速对表原值: D
详细解析标注: D
将数据报在多个可能的路径中选择一条进行转发即路由选择,是网络层的核心功能,故选择 D。而 A、B、C 均属于传输层提供的服务。传输层提供的服务有:
①复用分用
②端到端通信
③可靠传输服务(TCP)
④无连接服务(UDP)
⑥流量控制
⑦拥塞控制
⑧差错控制。
Q2¶
速对表原值: C
详细解析标注: C
端口号是运输层的服务访问点(SAP),只在本地主机上标识进程,故 A 正确。16 位二进制数可表示的范围是216 = 65536,故 B 正确。
D 选项正确,这是运输层的复用功能。客户端程序使用的是操作系统临时分配的端口号(即短暂端口号,是除了熟知端口号和登记端口号之外的端口号)去连接服务器,故 C 错误。
Q3¶
速对表原值: D
详细解析标注: D
一个 TCP 连接是通过其两端的套接字来唯一确定的,套接字又由 IP 地址和端口号拼接而成。因此,必须由通信双方的 IP 地址和端口号共同组成的四元组才能在整个互联网中唯一地标识出这条连接。任何一个元素不同,都代表一条不同的连接。
Q4¶
速对表原值: C
详细解析标注: C
http://说明使用的是 HTTP (超文本传输协议),它的熟知端口号为 80,网址中没指明端口应用默认端口 80,故选择 C。443 是 HTTPS 的熟知端口号,25 是 SMTP 的熟知端口号。53 是DNS 的熟知端口号。
Q5¶
速对表原值: B
详细解析标注: B
复用指在发送端,多个应用进程可以同时使用一个运输层协议(TCP 或 UDP),并将数据流汇集起来发送。分用指在接收端,运输层根据报文段的端口号,将收到的数据分别交付给主机上正确的应用进程。题目描述的是接收端的行为,因此是分用。
Q6¶
速对表原值: B
详细解析标注: B
视频会议等实时应用,对延迟非常敏感,而对偶尔的数据丢失不敏感(丢失一两帧画面影响不大)。TCP 为了保证可靠性,其重传机制会引入较大的延迟,不适合此类应用。UDP 提供无连接、不可靠的服务,没有重传机制,延迟小,非常适合视频会议等实时应用。
Q7¶
速对表原值: C
详细解析标注: C
无连接服务的特点是快速、开销小,但不保证可靠。登录、文件传输、远程访问都要求数据 100%准确无误、按序到达,必须使用可靠的面向连接服务。而广播时间信息,属于一种周期性的、少量数据的发送,对实时性要求高,且偶尔丢失一次信息影响不大,适合使用开销小的无连接服务。
Q8¶
速对表原值: A
详细解析标注: A
简单网络管理协议 SNMP 用于网络设备的管理和状态监控,为了追求高效率和低开销,通常使用UDP。简单邮件传送协议SMTP用于发送电子邮件。邮件内容必须完整、准确地送达,因此SMTP必须基于可靠的传输,需要使用TCP。远程终端协议TELNET用于远程登录到另一台主机。用户输入的每一个字符和主机返回的每一个字符都必须按序、可靠地传输,否则会话将无法进行。因此选用 TCP。文件传送协议 FTP 用于在不同主机间传输文件。文件的完整性至关重要,任何比特的丢失或错误都可能导致文件损坏。因此 FTP 需要使用 TCP 来保证可靠传输。
Q9¶
速对表原值: C
详细解析标注: C
虽然在 UDP 之间的通信要用到其端口号,但是 UDP 的通信是无连接的,而 TCP之间的通信必须要在两个套接字之间建立连接,故选择 C。如果接收方 UDP 发现收到的报文中的目的端口号不正确(即不存在对应于该端口号的应用进程),就丢弃该报文。并发送 ICMP“端口不可达”差错报文给发送方,故 A 正确。在计算校验和时,要在 UDP 用户数据报之前增加 12 个字节的伪首部,伪首部仅用于计算校验和,会和原 UDP 数据报的首部和数据部分一起参与计算,故 B、D 正确。
Q10¶
速对表原值: D
详细解析标注: D
TCP 是面向连接的、可靠的协议,其首部中的序列号和确认号可以实现按序交付。接收方会根据序列号对失序的报文段进行重排序。而 UDP 是无连接、不可靠的协议,其首部中没有序列号字段,因此它完全不保证报文的顺序,故选择 D。
Q11¶
速对表原值: D
详细解析标注: D
UDP 是面向报文的,发送方的 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。TCP是面向字节流的,不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系(例如,发送方应用层交给发送方的 TCP 共 10 个数据块,但接收方的 TCP 可能只用了 4 个数据块就把收到的字节流交付上层的应用程序)。
Q12¶
速对表原值: B
详细解析标注: B
UDP 首部的“长度”字段记录的是整个 UDP 数据报(包括首部和数据)的总长度。UDP 首部固定为 8 字节。因此,数据部分的长度=总长度-首部长度,即 1492B。
Q13¶
速对表原值: D
详细解析标注: D
应用层数据(UDP 的数据字段)为 8180 字节。在运输层,数据被交给 UDP 协议。UDP会为其加上一个固定的8字节首部,形成一个UDP用户数据报。UDP用户数据报总长度=UDP数据字段+UDP 首部=8180B+8B=8188B。这个完整的 UDP 用户数据报会作为 IP 数据报的数据部分。因此,网络层需要传输的数据总长度为 8188 字节。链路层的最大传输单元(MTU)为 1500 字节。这限制了 IP 数据报(包括 IP 首部和 IP 数据)的总长度不能超过 1500 字节。IP 数据报的首部长度通常为20B。因此,一个 IP 分片最多能承载的数据(即分片的数据字段)长度为:MTU-IP 首部长度=1500B-20B=1480B。IP分片时,除最后一个分片外,每个分片的数据字段长度都必须是8字节的整数倍,1480恰为 8 的倍数,符合要求。8188/1480=5,即有 5 个满载的分片,这 5 个满载分片总共传输了的数据量为:5×1480B=7400B。剩余的数据将全部放入最后一个分片。最后一个分片的数据字段长度 = 总数据长度 - 已发送数据长度=8188B-7400B=788B。
Q14¶
速对表原值: D
详细解析标注: D
UDP 伪首部是一个在计算校验和时临时添加的字段,它本身并不会随着 UDP 报文在网络中传输。其目的是让校验和不仅能检查 UDP 首部和数据,还能检查一部分 IP 首部的信息,以增强校验能力。UDP 校验包括源 IP 地址、目的 IP 地址、保留位(置为 0)、协议字段(UDP 为 17)、UDP 长度五个部分组成。
Q15¶
速对表原值: D
详细解析标注: D
I 错 误 , 源 端 口 号 为 〔公式/符号见原页版面片段〕84 16 = 52100 ; II 正 确 , 目 的 端 口 号 为000〔公式/符号见原页版面片段〕 16 = 13;III 正确,UDP 用户数据报长度为 001〔公式/符号见原页版面片段〕 16 = 28〔公式/符号见原页版面片段〕,UDP 数据载荷长度为 28 − 8 =20〔公式/符号见原页版面片段〕;IV 正确,因为目的端口号为 13(熟知端口号),所以该 UDP 用户数据报是从客户到服务器的。答案选 D。
原页版面片段(图表、公式或字体缺映射时以此为准)

Q16¶
速对表原值: B
详细解析标注: B
CF01 和 34FF 从低到高逐个相加,得到 0000 0100 0000 0000,但由于最高位产生了进位,需要再加 1,即 0000 0100 0000 0001,取反码得到最终结果 1111 1011 1111 1110,即 FBFE。
Q17¶
速对表原值: A
详细解析标注: A
I.TCP 和 UDP 都有端口号,用于标识进程,正确。
II.TCP 和 UDP 首部都有 16 位的校验和字段,用于检测报文段在传输过程中是否出现差错,正确。
III. 只有 TCP 提供可靠传输,UDP 是不可靠的,错误。
IV.TCP 是面向字节流的,而 UDP 是面向报文的,它保留了上层应用交付报文的边界,错误。因此,选 A。
Q18¶
速对表原值: C
详细解析标注: C
TCP 是运输层的协议,它工作在通信的两个端系统上,遵循“端到端”原则。它无法控制网络核心部分的行为,也无法命令路由器为某条 TCP 连接预留任何资源。且 TCP 协议使用 IP协议提供的服务,IP 协议使用无连接不可靠的数据报,不会预留带宽资源。
Q19¶
速对表原值: D
详细解析标注: D
TCP 校验和覆盖范围包括 TCP 伪首部、TCP 首部和数据部分,故 A 错误。窗口字段用于流量控制,表示接收方当前还能接收的数据量,最大报文段长度 MSS 在扩展首部中指出,故B 错误。数据偏移字段指出 TCP 报文段的数据载荷部分的起始处距离 TCP 报文段的起始处有多远,实际指出了 TCP 报文段的首部长度,但是其单位是 4 字节,故 C 错误。仅当紧急标志位 URG 置为 1 时,紧急指针有效;当发送方有紧急数据时,可将紧急数据“插队”到发送缓存的最前面,并立刻封装到一个 TCP 报文段中进行发送;紧急指针指出从当前序号开始到紧急数据结束处的偏移量,紧急数据之后是普通数据,接收方收到报文后,会根据紧急指针的值从数据载荷部分取出紧急数据直接上交应用进程,而不必在接收缓存中排队,故 D 正确。
Q20¶
速对表原值: C
详细解析标注: C
SYN标志位是同步位,仅在 TCP连接建立时的“三次握手”阶段使用,用于发起一个新连接并同步初始序号,与终止连接无关,故 A 错误。FIN 标志位用于正常、有序地关闭 TCP 连接,发起方表明自己已无数据要发送,从而启动“四次挥手”的正常释放流程,这与应用程序崩溃的突发、异常情况不符,故B错误。PSH是推送标志位,用于告知接收方尽快将数据交付给应用进程,而无需等待缓冲区填满,它涉及的是数据传输的效率而非连接管理,故 D 错误。RST 标志位的作用是异常地、强制地终止一个连接,通知主机 B 不必再发送数据,并立即释放连接资源,故 C 正确。
Q21¶
速对表原值: B
详细解析标注: B
TCP是面向字节流的,其首部中的序号字段长度为32 位,用来表示该报文段数据载荷部分第一个字节的序号,也可以看作报文段的序号,当序号字段取到最大值后,下一个序号从最小值 0 重新开始,这被称为序号绕回,故序号绕回周期即为发送 232B 数据所花费的时间。时延带宽积=传播时延*带宽,以此可求带宽为 100Mb/s。用总数据量除以带宽可得最终结果,约为 343.6s。
Q22¶
速对表原值: D
详细解析标注: D
UDP 协议的首部由源端口、目的端口、长度、校验和四个字段组成,每个字段 2字节,其长度是固定的 8 字节;但 TCP 协议的首部除了 20 字节的固定部分外,还包含一个可变长的选项字段,因此 TCP 首部的长度不是固定的,其范围是 20 字节到 60 字节,故 D 错误。
Q23¶
速对表原值: C
详细解析标注: C
为防止旧连接请求报文段的干扰,两端主机在建立 TCP 连接时初始序列号是随机的,故 A 错误。三次握手中第二个报文段的 SYN 和 ACK 字段均需置为 1,不能携带应用数据,但是必须消耗一个序列号,故B 错误。在“三次握手”过程中,如果报文段丢失,TCP 会使用超时重传机制来重发丢失的报文段,而非立即释放重新执行“三次握手”,故D错误。客户端在发送完三次握手中的最后一个 ACK 报文后,认为连接已成功建立,单方面进入 ESTABLISHED 状态并可以开始发送数据。而服务器必须在接收到这个 ACK 报文后,才能确认客户端已收到自己的 SYN-ACK,此时服务器才会进入 ESTABLISHED 状态,C 正确。
Q24¶
速对表原值: A
详细解析标注: A
在三次握手建立TCP连接中,客户端发送的第一个连接请求报文段(SYN段)不携带应用层数据,但其 SYN 标志位本身需要消耗一个序列号,A 正确。三次握手中的第三个报文段是客户端对服务器 SYN 的确认,其 SYN 标志位为 0,故 B 错误。TCP 连接是全双工的,通信的任何一方(无论是客户端还是服务器)都可以在数据传输结束后主动发起连接释放请求(即发送第一个 FIN段),故 C 错误。TCP 支持“半关闭”,当一方(如客户端)发送 FIN 段后,仅表示该方向的数据传输已结束,但它仍然可以接收来自对方的数据,直到对方也发送FIN段来关闭另一个方向的连接,故D错误。
Q25¶
速对表原值: B
详细解析标注: B
在标准的四次挥手中,主机 H 发送 FIN 后进入 FIN_WAIT_1 状态;收到服务器的 ACK 后进入 FIN_WAIT_2 状态,等待服务器的 FIN。题中服务器将 ACK 和 FIN 合并发送,这意味着 H 在 FIN_WAIT_1 状态下直接收到了对自身 FIN 的确认以及服务器的 FIN 请求。根据 TCP 状态机,H 会直接发送最后一个 ACK 并跃迁至 TIME_WAIT 状态,因此 FIN_WAIT_2 这个中间等待状态被跳过,故 B 正确。
Q26¶
速对表原值: B
详细解析标注: B
TCP 的确认号指的是“期望收到的下一个字节的序号”。设该段的起始序列号为seq,数据长度为 500。接收方正确接收该段后,期望的下一个字节序号就是 seq+500。根据题意,ack=seq+500,则可得 seq 为 700。
Q27¶
速对表原值: B
详细解析标注: B
发送的第一个数据段序列号为 1000,收到的确认号为 3000,则说明 1000-2999 已经被发送并正确接收,故 A 已经成功向 B 发送了 2999-1000+1=2000B 的应用层数据。
Q28¶
速对表原值: B
详细解析标注: B
TCP 采用累计确认,接收方只对按序到达的、连续字节流的最高序号进行确认。虽然乙收到了 P3,但由于中间的 P2 丢失,字节流在序号 399 之后就断开了。因此,乙无法确认序号大于 399 的数据。它仍在等待从序号 400 开始的数据来填补空洞,因此乙向甲发送的确认号仍然是 400。
Q29¶
速对表原值: A
详细解析标注: A
主机甲的初始报文段(SYN=1, seq=1000)消耗一个序号 1000,因此甲的下一个可用序号是 1001。主机乙的回应报文段(SYN=1, ACK=1, seq=8000, ack=1001)也消耗一个序号 8000。甲收到乙的回应后,需要发送确认报文段。该报文段的序号(seq)应为甲的下一个可用序号,即 1001;确认号(ack)应为乙的序号加 1,即 8000+1=8001。此时连接已在建立过程中,SYN 标志位应为 0,而ACK 标志位必须为 1。
Q30¶
速对表原值: C
详细解析标注: C
主机甲发送的第二个TCP 报文段即第三次握手。甲的初始序号为2021,第一次握手 SYN 报文消耗一个序号,所以第三次握手报文的起始序号 seq=2022,而主机乙初始序号是 2022,第二次握手消耗一个序号,所以主机甲期望收到主机乙的下一个报文起始序号是 2023,因此 ack=2023,答案选 C。
原页版面片段(图表、公式或字体缺映射时以此为准)

Q31¶
速对表原值: A
详细解析标注: A
B 发来的报文段中确认序号为 2046,这表示 B 已经成功接收了 A 发送的到 2045为止的所有字节,并期望接收从 2046 开始的字节,因此 A 发送的新数据段序号应为 2046。A 发送报文段的确认号(ack)则取决于 A 对 B 数据的接收情况。B 发来的报文段序号为 1913,且是纯确认段,不消耗序号。这意味着 B 上一个发送的字节序号是 1912,A 仍在等待从 B 接收序号为 1913 的字节。因此,A 回应的确认号应为 1913。
Q32¶
速对表原值: C
详细解析标注: C
TCP的确认序号(ack)是期望收到对方下一个报文段的第一个数据字节的序号。主机 A 收到 B 发来的 FIN 段,其序号(seq)为 7700,由于 FIN 标志位即使不携带数据也要消耗一个序号,因此 A 在响应时发送的确认序号应为 7700+1=7701。TCP 的序号(seq)是本报文段所发送的数据的第一个字节的序号。主机 A 收到的报文段中确认序号为 8800,这表明 B 已经正确收到了 A 发送的到8799 为止的所有字节,并期望下一个字节是 8800。因此,A 发送的响应确认段的序号就应该是 8800,故 C 正确。
Q33¶
速对表原值: B
详细解析标注: B
主机甲发出的第一个 SYN 段,序列号为 x,该 SYN 段会消耗一个序号。因此,甲发送的下一个段的起始序号应为 x+1。甲在收到乙的 SYN-ACK 段后,回送的 ACK 段(三次握手的第三个段),其序号为 x+1。
Q34¶
速对表原值: B
详细解析标注: B
TCP 报文段的序号是该报文段所发送数据的第一个字节的序号。建立连接时,A发送的 SYN 段消耗一个序号。因此,A 发送的第一个数据字节的序号是 3001。A 共发送了 6000 字节的数据,这些数据的序号范围是[3001, 3001+6000-1],即[3001, 9000]。当所有数据都发送完毕后,A 的下一个可用序号是 9001。FIN 段是在所有数据都发送完毕后才发送的,因此它将被赋予当前的下一个可用序号。所以,该 FIN 段的序列号应为 9001。
Q35¶
速对表原值: B
详细解析标注: B
主机 B 收到两个相同的分组,一定是 B 的确认报文段丢失了,应该丢失晚到的报文段,然后再发一个确认,I 错误。若接收窗口变小,滑动窗口可能不变。总结如下:
- 发送缓存:应用层想要发送的数据。缓存空间有限并且循环使用,逻辑上是一个圆。其中包含两个部分:
①发送方的应用程序传送给发送方 TCP 准备发送的数据。
②TCP 已发送出但未收到确认的数据。
- 发送窗口:发送窗口里的序号表示允许发送的序号。包含:
①已经发送了的但是还未收到确认的
②允许发送但是还未发送的。 发送窗口左端点在收到新的确认后往右移动,没收到确认则不动。 发送窗口右端点通常是不断往右移动,因为收到了新的确认。但是也可能不动,因为接收发的接收窗口变小了,导致不动。但是 TCP 标准不赞成往左移动,因为窗口里的数据大部分已经发送出去,现在又要收缩窗口,不让发送这些数据,这样就会产生一些错误。
- 接收缓存:即将交给应用层的数据。包含:
①按序到达的、但尚未交付应用进程的数据
②未按序到达的
-
接收窗口:用来接收即将到达的数据,按序达到的数据,发送确认后接收窗口往右移动,但是不能超过接收缓存的范围。
-
发送窗口的序号集是发送缓存序号集的子集。
-
接收窗口的序号集是接收缓存序号集的子集。
原页版面片段(图表、公式或字体缺映射时以此为准)

Q36¶
速对表原值: A
详细解析标注: A
TCP 的发送窗口 swnd 的大小取决于拥塞窗口 cwnd 和接收方通告窗口 rwnd 的较小值,即 swnd=min(cwnd, rwnd)。初始时,cwnd=1KB<ssthresh=16KB,TCP 处于慢开始阶段。在此阶段,每成功收到一个对新报文段的确认,拥塞窗口 cwnd 就增加一个 MSS 的值。A 发送 1KB(1 个MSS)并成功收到确认后,其 cwnd 变为 2KB。此时,A 的发送窗口大小为 swnd=min(cwnd, rwnd)=min(2KB, 1KB)=1KB。
Q37¶
速对表原值: C
详细解析标注: C
发送窗口的大小取接收方接收窗口和拥塞窗口的较小值,在同一时刻,发送方的发送窗口并不总是和接收方的接收窗口一样大,故A错误。“拥塞避免”也并非指完全能够避免拥塞,而是指在拥塞避免阶段将 cwnd 值控制为按线性规律增长,使网络比较不容易出现拥塞,故 B 错误。TCP 的拥塞控制正是为了适应和响应 IP 网络内部的拥塞状态(如路由器丢包)而设计的,两者密切相关,故 D 错误。
Q38¶
速对表原值: C
详细解析标注: C
当发送方收到 3 个冗余 ACK 时,会触发快速恢复算法。此时,慢开始阈值ssthresh 被设置为当前拥塞窗口 cwnd 的一半,即 ssthresh=16KB/2=8KB,同时拥塞窗口 cwnd 也更新为新的 ssthresh 值,即 cwnd=8KB,并立即进入拥塞避免阶段。在拥塞避免阶段,每经过一个 RTT,拥塞窗口大小增加一个 MSS(1KB)。因此,经过 4 个成功的 RTT 后,拥塞窗口将从 8KB 线性增长 4 次,最终大小为 8KB + 4 * 1KB = 12KB。
Q39¶
速对表原值: A
详细解析标注: A
当发生超时事件时,无论之前的 ssthresh 值是多少,新的 ssthresh 都会被更新为当前 cwnd 的一半,即 ssthresh=16KB/2=8KB,而拥塞窗口 cwnd 则会重置为 1 个 MSS,即 cwnd=1KB,并进入慢开始阶段。在慢开始阶段,拥塞窗口每经过一个 RTT 就会翻倍。其增长过程为:1KB -> 2KB (经过 1 个 RTT) -> 4KB (经过 2 个 RTT) -> 8KB (经过 3 个 RTT)。当 cwnd 达到 8KB 时,正好等于新的ssthresh 值,满足了题目要求。因此,所需的最短时间为 3 个 RTT,即 3 * 10ms=30ms。
Q40¶
速对表原值: A
详细解析标注: A
在 cwnd=16KB 时发生超时,此时 ssthresh 被更新为 16KB/2=8KB,cwnd 重置为1KB。随后连接开始恢复,先经历3个RTT的慢开始(cwnd从1->2->4->8),然后进入拥塞避免阶段。在接下来的 7-3=4 个 RTT 里,cwnd 从 8KB 线性增长到 12KB。此时,发生了第二次拥塞事件,即收到3 个冗余 ACK。根据快速恢复规则,ssthresh 被设置为当前 cwnd 的一半,即 12KB/2=6KB。
Q41¶
速对表原值: B
详细解析标注: B
TCP 拥塞窗口最慢的增长方式是慢开始阶段的指数增长。初始拥塞窗口为 8KB,目标为 32KB,其指数增长过程为:经过第 1 个 RTT 后,cwnd 从 8KB 增长到 16KB;再经过第 2 个RTT,cwnd 从 16KB 增长到 32KB,达到目标。整个过程共需要 2 个 RTT。由于给定的 RTT 为 2ms,因此所需的最短时间为 2 RTT × 2 ms/RTT = 4ms。
Q42¶
速对表原值: C
详细解析标注: C
当在 cwnd=16KB 时收到 3 个冗余 ACK,TCP 进入快速恢复阶段。慢开始阈值ssthresh 和拥塞窗口 cwnd 都被设置为当前 cwnd 的一半,即 8KB,并立即进入拥塞避免算法。此时,拥塞窗口需要从 8KB 恢复到 16KB,需要增加 8KB。在拥塞避免阶段,拥塞窗口每个 RTT 增加 1KB,因此总共需要 8 个 RTT 的时间。
Q43¶
速对表原值: C
详细解析标注: C
超时事件后,慢开始门限 ssthresh 变为当前 cwnd 的一半,即 16KB/2=8KB,拥塞窗口 cwnd 重置为 1KB,进入慢开始阶段。在慢开始阶段,cwnd 从 1KB 开始按指数规律增长,直到达到 ssthresh,进入拥塞避免阶段。过程为 1KB→2KB→4KB→8KB,共经历 3 个 RTT,发送的数据量为1+2+4=7KB。在拥塞避免阶段,cwnd 从 8KB 开始,每个 RTT 增加 1KB,直到增长到 16KB。此过程需要 16-8=8 个 RTT。在此期间,发送窗口 swnd=min(cwnd, rwnd)。因 rwnd 恒为 14KB,故各 RTT 发送的数据量为 min(8, 14)+min(9, 14)+...+min(15, 14) = 8+9+10+11+12+13+14+14 =91KB。总耗时为 3+8=11 个RTT,即 11*50ms = 550ms = 0.55s。总发送数据量为 7KB + 91KB = 98KB。因此,平均数据吞吐量为98KB/0.55s≈178.2 KB/s,故 C 正确。
Q44¶
速对表原值: C
详细解析标注: A
ack 字段的值是累积确认,ack=3000 表明接收方已按序收到了序号为 2999 之前的所有字节。SACK 选项用于告知发送方已收到的、不连续的数据块的边界。SACK 块(left edge=5000, right edge=7000)表明接收方已收到了序号范围从 5000 到 6999 的字节。综合这两条信息,发送方可以得知,在已发送的 1000~8999 的字节流中,1000~2999 和 5000~6999 的字节已被确认收到。而 3000~4999既没有被累计 ACK 确认,也没有出现在 SACK 已接收块中,可以推断其丢失。而对于 7000~8999 的字节流,SACK 未提及此区间,仅代表报文尚未抵达接收端(可能还在传输途中),不能判定为丢失。所以答案选 A。
原页版面片段(图表、公式或字体缺映射时以此为准)

审计旁注(非原文):作废/速对冲突
速对表写 C、详细解析写 A;但单个累计 ACK 与 SACK 块只能确认哪些字节已经收到,未报告区间仍可能在途或发生重排,不能断言“确实丢失”。王道 2027 [block: b_253_6, b_277_10] 对累积确认与 SACK 的说明也只确认已收区间,原题条件不足。
Q45¶
速对表原值: B
详细解析标注: B
服务器收到客户端发过来的连接释放报文段后即发出确认,确认号是ack=u+1(u是客户端连接释放报文段的 seq),而这个报文段自己的序号是 v,等于服务器前面已传送过的数据的最后一个字节的序号加 1。然后服务器就进入 CLOSE-WAIT(关闭等待)状态。TCP 服务器进程这时应通知高层应用进程,因而从客户端到服务器这个方向的连接就释放了,这时的 TCP 连接处于半关闭(half-close)状态,即客户端已经没有数据要发送了,但服务器若发送数据,客户端仍要接收。也就是说,从服务器到客户端这个方向的连接并未关闭,这个状态可能会持续一段时间。
原页版面片段(图表、公式或字体缺映射时以此为准)

Q46¶
速对表原值: A
详细解析标注: A
TCP 允许通信双方的应用进程在任何时候都能发送数据。TCP 连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。在发送时,应用程序在把数据传送给 TCP 的缓存后,就可以做自己的事,而 TCP 在合适的时候把数据发送出去。在接收时,TCP 把收到的数据放入缓存,上层的应用进程在合适的时候读取缓存中的数据。所以 TCP 提供全双工通信方式,答案选 A。
Q47¶
速对表原值: B
详细解析标注: B
由于 TCP 建立连接的第一次握手和第二次握手都需要消耗一个序列号,而第二次握手报文 seq=211,ack=211,可以知道,主机 A 开始的序号是 210,而有效数据是从 211 开始编号,主机 B 开始的序号是 211,有效数据是从 212 开始编号。TCP 释放连接过程中,携带 FIN=1 标志的第一次挥手第三次挥手都需要消耗一个序号,第四次挥手报文段的 seq=985,ack=985,说明主机 A 最后一个有效数据的序号是 983,主机 B 最后一个有效数据的序号是 983。综上所述,主机 A 的有效数据编号范围是[211,983],主机 B 的有效数据编号范围是[212,983],所以主机 A、B 分别发送了 773B、772B 有效数据,答案选 B。
Q48¶
速对表原值: B
详细解析标注: B
当前:cwnd = 4 MSS,ssthresh = 8 MSS,因为 cwnd < ssthresh,所以 TCP 当前处于慢开始阶段。在慢开始阶段,每收到对 1 MSS 数据的确认,拥塞窗口增加 1 MSS。现在收到对 2 MSS 数据的确认,因此拥塞窗口变为:cwnd = 4 MSS + 2 MSS = 6 MSS,发送方原来发送了 4 MSS 数据,其中 2 MSS 已被确认,因此仍有 4 MSS - 2 MSS = 2 MSS 数据尚未被确认。拥塞窗口限制的是网络中尚未确认的数据量,因此此时最多允许有 6 MSS 未确认数据,而当前已有 2 MSS 未确认数据,所以还可以继续发送:6 MSS - 2 MSS = 4 MSS。因此,最多还可以继续发送:4 MSS,答案选 B。
Q49¶
速对表原值: D
详细解析标注: D
最大报文段长度MSS=1000B,最少的时间情况下,所有传输都在慢开始阶段,那么分别传输 1MSS,2MSS,1MSS,一共四次传输,从建立连接开始,在 40ms 主机 H 收到最后 1MSS报文的确认并发起释放连接请求,第二次挥手和第三次挥手报文可以合并成一个报文发送,所以最快在50ms 时,主机 H 进入 TIME_WAIT 状态,经过 2MSL 后,进入 CLOSED 状态,所以本题答案是 D。