TCP 拥塞控制与 QUIC 传输

共 64 题
#

1. TCP 序列号、累计确认与 SACK 如何协同恢复多个丢失报文段?

A 累计确认能表达所有不连续段的接收情况
B 序列号标识数据位置,累计确认提供连续进度,SACK 补充不连续段的已收范围,使发送端精确重传多个缺失段 ✓ 正确答案
C SACK 与累计确认互斥,不能同时使用
D SACK 只用于重传,不用于恢复
#

2. ECN 与 DCTCP 在数据中心部署中如何降低丢包率,交换机标记位与 AQM 队列管理如何配合?

A ECN 用丢弃来标记拥塞
B ECN 与 DCTCP 都依赖大量丢包反馈
C DCTCP 不使用 AQM
D 交换机用 AQM 在低阈值时标记 CE 位而非丢弃,DCTCP 按标记比例调整窗口,从而降低丢包与延迟 ✓ 正确答案
#

3. TCP 慢启动门限(ssthresh)与拥塞避免阶段的切换逻辑,packet pacing 与 GSO 对吞吐稳定性的影响是什么?

A packet pacing 均匀发送避免突发,GSO 减少内核处理开销,两者影响吞吐稳定性
B 窗口达到 ssthresh 后从慢启动切换到拥塞避免 ✓ 正确答案
C ssthresh 只在慢启动阶段存在
D pacing 会增加突发丢包
#

4. TCP 的 TIME_WAIT 状态为何保留 2MSL,对短连接高并发服务(HTTP/1.0)的端口耗尽问题如何缓解?

A 用 SO_REUSEADDR 无法复用 TIME_WAIT 端口
B TIME_WAIT 只保留 1 个 RTT
C 端口耗尽与 TIME_WAIT 无关
D TIME_WAIT 保留 2MSL 用于确认最终 ACK 并让旧报文消亡 ✓ 正确答案
#

5. UDP 应用若自行实现重试、分片与拥塞控制,必须处理哪些放大和公平性问题?

A UDP 已有内建拥塞控制与重传
B UDP 应用无需处理放大问题
C UDP 应用自实现重试/拥塞时需处理放大攻击、分片 MTU 与公平性(避免与 TCP 竞争不公平) ✓ 正确答案
D UDP 应用自实现拥塞控制会天然公平
#

6. MPTCP 在多路径调度上的 scheduler 与 congestion control 是如何配合的,子流独立拥塞与耦合拥塞的取舍是什么?

A scheduler 决定每个子流的拥塞窗口
B scheduler 决定数据分发到哪个子流,独立拥塞吞吐高但可能不公平,耦合拥塞维护公平但需跨子流协调 ✓ 正确答案
C MPTCP 只有一个子流
D 耦合拥塞与独立拥塞效果相同
#

7. 为什么 L4 负载均衡器在 ACK/SYN 报文经过时必须保证会话保持,DSR(Direct Server Return)模式下 NAT 表项如何维护?

A L4 负载均衡器是无状态的,无需会话保持
B 同一连接必须保持到同一后端,DSR 下回程由后端直连客户端,负载器只需维护入站选后端的状态 ✓ 正确答案
C DSR 下负载器必须维护完整双向 NAT 表
D DSR 下回包仍经过负载器
#

8. QUIC 的拥塞控制(QUIC-CC)相比 TCP CC 在 ACK 路径上做了哪些改进,跨流协调与 pacing 差异如何体现?

A QUIC 拥塞控制是流独立的,每个流独立窗口
B QUIC 拥塞控制在用户态可插拔,ACK 更精确,连接级窗口 + 流级流控 + 内置 pacing ✓ 正确答案
C QUIC 不使用 pacing,采用突发发送
D QUIC 的 ACK 与 TCP 完全相同
#

9. QUIC 的 Initial、Handshake、0-RTT、1-RTT 包分别使用哪一阶段密钥,何时可承载应用数据?

A Initial 包用最终应用密钥保护
B Initial 用 Initial 密钥、Handshake 用 Handshake 密钥、0-RTT 用早期密钥、1-RTT 用应用数据密钥,0-RTT 可在握手前发数据但需防重放 ✓ 正确答案
C 0-RTT 与 1-RTT 使用相同密钥
D 所有 QUIC 包只有一种密钥
#

10. 连接 ID 如何支持 NAT 重绑定与路径迁移,为什么不能仅依赖四元组识别连接?

A QUIC 用连接 ID 标识连接,NAT 重绑定或路径迁移时地址变化但连接 ID 不变,从而保持连接 ✓ 正确答案
B QUIC 用 4 元组识别连接
C 连接 ID 无法支持 NAT 重绑定
D 四元组在 NAT 重绑定后不变
#

11. QUIC 的 stream 多路复用为何仍需要连接级拥塞控制,流控与连接控窗口的协作机制是什么?

A 多条 stream 共享路径,故拥塞控制是连接级的,实际发送量由连接级拥塞窗口与流级/连接级流控窗口取小决定 ✓ 正确答案
B QUIC 每条 stream 独立拥塞控制
C 流控与拥塞控制无关
D QUIC 只有流级流控,没有连接级
#

12. QUIC 每个流独立排序如何消除 TCP 层队头阻塞,丢包仍会造成哪些连接级影响?

A QUIC 丢包完全不造成任何影响
B QUIC 与 TCP 一样存在跨流队头阻塞
C 流级独立排序消除跨流队头阻塞,但丢包仍触发连接级拥塞窗口收缩与重传,所有流共享影响 ✓ 正确答案
D QUIC 的拥塞控制是流独立的
#

13. QUIC 握手阶段的 TLS 1.3 对证书压缩、签名算法(Ed25519/RSA-PSS)和密钥派生上的约束是什么?

A QUIC 支持 TLS 1.2 和 1.3
B QUIC 的密钥派生与 TLS 1.3 无关
C QUIC 允许 RSA-PKCS1v1.5 签名
D QUIC 强制 TLS 1.3,支持证书压缩、现代签名算法(Ed25519/RSA-PSS),用 HKDF 派生各阶段密钥 ✓ 正确答案
#

14. QUIC 连接迁移(connection migration)触发后,新的路径 CID 如何通知对端,路径验证(path validation)为何必须?

A 迁移后无需验证新路径
B 迁移用 CID 保持连接,通过 PATH_CHALLENGE/PATH_RESPONSE 进行路径验证,确认新地址真实以防地址伪造 ✓ 正确答案
C 路径验证只用于握手,不用于迁移
D 迁移后连接必然中断
#

15. 部署 UDP/QUIC 后握手超时升高时,应如何验证 MTU、负载均衡 CID 路由与 UDP 会话超时?

A 只需检查 MTU 即可
B UDP 会话超时不影响 QUIC
C 负载均衡应按 4 元组路由 QUIC 连接
D 需验证路径 MTU/分片、负载均衡按连接 ID 稳定路由、以及 UDP 会话超时是否过早切断连接 ✓ 正确答案
#

16. HTTP/3 在负载均衡设备上需识别 QUIC 报文头才能正确分片,运营商封禁 UDP 443 后回退到 HTTP/2 的策略如何实现?

A 负载均衡器用 4 元组即可稳定路由 QUIC 连接
B 负载器需解析 QUIC 头提取连接 ID 以正确分片保持,UDP 443 被封后客户端通过 ALPN/超时降级回退到 HTTP/2 over TCP ✓ 正确答案
C HTTP/3 与 HTTP/2 无区别
D 封禁 UDP 443 后 HTTP/3 仍可工作
#

17. CUBIC 的窗口增长函数(W = C(t-K)^3 + W_max)如何实现 TCP 友好与高带宽利用,与 Reno 的 AIMD 有何本质差异?

A CUBIC 恢复比 Reno 慢
B CUBIC 与 Reno 都是线性增长
C CUBIC 的增长与 RTT 强相关
D CUBIC 用立方增长,独立于 RTT、恢复快、利用率高;Reno 用 AIMD 线性增长,与 RTT 相关 ✓ 正确答案
#

18. 当 QUIC 应用出现抖动时,是流级别乱序还是连接级别乱序,二者在 PADDING/PING 帧探测时的区别是什么?

A PADDING 帧用于测量 RTT
B PING 帧丢弃应用数据,PADDING 帧触发 ACK
C 乱序只发生在流级,与连接无关
D PING 帧用于探测路径活性与 RTT,PADDING 帧用于填充包大小(MTU/放大约束),前者是连接级探测 ✓ 正确答案
#

19. QUIC 不可恢复错误码 CONNECTION_CLOSE 的 application vs transport 分类如何指导调试,关闭帧延迟传递的语义?

A transport 错误代表应用逻辑错误
B 关闭帧无需可靠传递
C 所有 CONNECTION_CLOSE 都是 transport 错误
D application 错误码是应用层定义,transport 错误码是传输层协议错误,二者区分指导调试;关闭帧需可靠送达并关联上下文 ✓ 正确答案
#

20. gRPC over QUIC 相比 gRPC over HTTP/2 在多路复用与流控粒度上的差异,stream ID 与 http2 stream 兼容性问题?

A gRPC over QUIC 用 HTTP/2 的 stream ID 直接复用
B QUIC 没有流级流控
C HTTP/2 与 HTTP/3 的 stream 完全兼容
D QUIC 流级多路复用消除 TCP 队头阻塞且流控更细,HTTP/3 的 stream 类型与 ID 分配和 HTTP/2 不同,需重新映射 ✓ 正确答案
#

21. send() 把数据拷贝进 socket 发送缓冲区后即可返回,真正的分段、重传由内核哪条路径完成?发送缓冲区满时阻塞与非阻塞语义有何不同?

A send() 负责完成 TCP 分段与重传
B send() 返回即表示数据已发到网络
C 非阻塞 send() 在缓冲区满时也会等待
D send() 只把数据拷贝进发送缓冲区,分段/重传由内核完成;缓冲区满时阻塞等待、非阻塞返回 EAGAIN ✓ 正确答案
#

22. 接收方数据从网卡硬中断、NET_RX 软中断到 socket 接收队列经历哪些步骤?阻塞 recv() 何时被唤醒?

A 硬中断直接唤醒 recv(),无需软中断
B 数据经硬中断、NET_RX 软中断、协议栈处理后放入 socket 接收队列,阻塞 recv() 在数据进入接收队列时被唤醒 ✓ 正确答案
C recv() 在数据进入网卡时即被唤醒
D 接收数据不经过 socket 接收队列
#

23. sendfile() 相比 read()+write() 省去了哪几次拷贝与上下文切换?支持 DMA gather 的网卡如何进一步消除 CPU 拷贝?

A sendfile() 与 read()+write() 拷贝次数相同
B sendfile() 避免用户态往返,减少系统调用与 CPU 拷贝;支持 SG-DMA 的网卡可直接从 page cache 分散页 DMA 发送,消除 CPU 拷贝 ✓ 正确答案
C sendfile() 需要把数据拷到用户态
D DMA gather 增加 CPU 拷贝
#

24. splice() 借助管道在两个文件描述符间传输数据为何能避免用户态拷贝?pipe buffer 在其中起什么作用?

A splice() 通过管道传递页引用实现零拷贝,pipe buffer 作为页引用的中转,避免用户态拷贝 ✓ 正确答案
B splice() 把数据拷贝到用户态再传输
C pipe buffer 存放数据的用户态副本
D splice() 与 read()+write() 拷贝次数相同
#

25. SO_REUSEPORT 允许多个 socket 绑定同一端口,内核如何按 4-tuple 哈希分发连接,保证同一连接始终落到同一进程?

A SO_REUSEPORT 会导致同一连接被多个进程处理
B SO_REUSEPORT 让多个 socket 绑定同一端口,内核按 4 元组哈希分发,保证同一连接落到同一进程并均衡负载 ✓ 正确答案
C SO_REUSEPORT 只允许一个 socket 绑定端口
D 内核按轮询分发,不按哈希
#

26. TCP_NODELAY 关闭 Nagle、TCP_CORK 累积数据的语义分别是什么?它们与延迟 ACK 交互时如何影响小包延迟?

A TCP_CORK 让小包立即发送
B TCP_NODELAY 开启 Nagle 算法
C TCP_NODELAY 关闭 Nagle 让小包立即发送,TCP_CORK 用于累积数据,Nagle 与延迟 ACK 可能形成相互等待导致延迟 ✓ 正确答案
D 延迟 ACK 与 Nagle 无交互
#

27. SO_RCVBUF/SO_SNDBUF 与内核自动调优(tcp_rmem/tcp_wmem)是什么关系?为何显式设置后会关闭自动调优?

A 显式设置后内核仍会动态覆盖缓冲区
B 显式设置 SO_RCVBUF/SO_SNDBUF 后内核会关闭自动调优,固定缓冲区大小并受 max 约束 ✓ 正确答案
C 自动调优与 tcp_rmem/tcp_wmem 无关
D SO_RCVBUF 设置后自动调优继续生效
#

28. shutdown() 与 close() 对 TCP 连接状态、引用计数与未读数据的影响有何不同?

A close() 不丢弃未读数据
B shutdown() 与 close() 都释放 socket
C shutdown() 只做方向性半关闭,不改变引用计数;close() 完全关闭并递减引用计数,且可能丢弃未读数据 ✓ 正确答案
D shutdown() 会改变引用计数
#

29. BBR 与 CUBIC 在瓶颈带宽测量模型上的差异,BBR2/BBR3 解决了哪些公平性问题?

A BBR 用丢包驱动,CUBIC 用带宽×延迟模型
B BBR 显式测量 BtlBw×RTprop 发送,CUBIC 依赖丢包;BBR2/3 引入丢包/ECN 感知与多流收敛改进公平性 ✓ 正确答案
C BBR 与 CUBIC 都是丢包驱动
D BBR 天然公平,无需改进
#

30. 0-RTT 数据在重放攻击场景下的应用限制(safe/unsafe data),客户端如何避免被回放污染业务状态?

A 0-RTT 数据可安全地承载所有请求
B 0-RTT 与 1-RTT 安全性相同
C 0-RTT 有内建防重放机制
D 0-RTT 可被重放,只能承载幂等/安全数据,非幂等操作应放 1-RTT 并配合服务端去重防护 ✓ 正确答案
#

31. epoll 边缘触发只在状态跳变时通知一次,为什么必须用非阻塞 fd 并循环读到 EAGAIN?漏读会造成什么后果?

A ET 必须用阻塞 fd
B ET 在每次有数据时都重复通知
C ET 只在状态跳变时通知一次,必须用非阻塞 fd 循环读到 EAGAIN,漏读会导致数据滞留且不再触发通知 ✓ 正确答案
D ET 漏读不影响后续事件
#

32. 接收窗口与拥塞窗口分别限制什么,发送端实际在途数据上限如何确定?

A rwnd 限制网络容量,cwnd 限制接收方缓冲
B rwnd 与 cwnd 无关
C 发送端只受 cwnd 限制
D 发送端在途数据上限 = min(cwnd, rwnd),cwnd 反映网络拥塞、rwnd 反映接收方背压 ✓ 正确答案
#

33. ACK clocking,为什么拥塞窗口通常按 ACK 到达节奏增长,突发发送与 pacing 对瓶颈队列与丢包的影响如何?

A pacing 会增加突发与丢包
B 突发发送会降低队列长度
C ACK clocking 让发送由 ACK 到达节奏驱动,突发发送会堆积队列导致丢包,pacing 均匀发送降低队列与丢包 ✓ 正确答案
D ACK clocking 与发送节奏无关
#

34. TCP Fast Open(TFO)如何用 TFO cookie 减少建连 RTT,与 QUIC 0-RTT 在重放防护语义上的差异?

A TFO 与 QUIC 0-RTT 都无重放风险
B TFO 用 cookie 在 SYN 携带数据减少 RTT,QUIC 0-RTT 用 PSK 提前发数据,两者都面临重放但 QUIC 0-RTT 重放面更大、需更强幂等防护 ✓ 正确答案
C TFO 不减少 RTT
D QUIC 0-RTT 有内建防重放
#

35. SO_REUSEADDR、SO_KEEPALIVE 与 TCP_NODELAY 的语义与典型用法分别是什么?

A SO_REUSEADDR 复用 TIME_WAIT 端口,SO_KEEPALIVE 探测空闲连接存活,TCP_NODELAY 关闭 Nagle 降低小包延迟 ✓ 正确答案
B 三者都用于加密
C SO_REUSEADDR 用于检测连接存活
D TCP_NODELAY 开启 Nagle 算法
#

36. QUIC 在 UDP 上为每个 stream 独立管理丢包重传,如何消除 TCP 单字节流上的队头阻塞?

A QUIC 用多独立流替代单字节流,某流丢包只重传该流,其他流可立即交付,消除跨流队头阻塞 ✓ 正确答案
B QUIC 与 TCP 一样是单字节流
C QUIC 流内绝对无乱序
D QUIC 丢包会阻塞所有流
#

37. QUIC 连接以 Connection ID 而非 4-tuple 标识,连接迁移(如 Wi-Fi 切蜂窝)时如何保持连接不断?

A QUIC 用连接 ID 标识连接,Wi-Fi 切蜂窝时地址变化但连接 ID 不变,配合路径验证保持连接不断 ✓ 正确答案
B QUIC 用 4 元组标识连接,迁移时连接中断
C 连接迁移后无法使用新地址
D 连接 ID 随地址变化而变化
#

38. QUIC 的 path validation(PATH_CHALLENGE/PATH_RESPONSE)在连接迁移中防止什么攻击?

A 它不验证地址真实性
B 它只用于握手,不用于迁移
C 它防止地址伪造与放大攻击,要求新地址能回 PATH_CHALLENGE 确认真实性 ✓ 正确答案
D 它防止中间人窃听但不防放大
#

39. QUIC 0-RTT 允许客户端用缓存的会话参数提前发数据,为什么它天然面临重放攻击,服务端应如何限制?

A 0-RTT 密钥有防重放机制
B 0-RTT 与 1-RTT 防重放能力相同
C 0-RTT 由 PSK 派生的密钥无防重放机制,天然可被重放,服务端应限制幂等请求、去重并限制 0-RTT 范围 ✓ 正确答案
D 0-RTT 可安全处理所有请求
#

40. QUIC 把 TLS 1.3 握手内嵌到传输层,相比 TCP+TLS 如何减少建连往返(1-RTT/0-RTT)?

A QUIC 首次连接 1-RTT、缓存会话后 0-RTT,比 TCP+TLS 的 2 RTT 更少 ✓ 正确答案
B QUIC 与 TCP+TLS 往返相同
C QUIC 需要 3 个 RTT 建连
D 0-RTT 需要完整握手后才能发数据
#

41. QUIC 如何防御 UDP 反射放大攻击,address validation 与 amplification limit(放大倍数上限)的机制如何?

A amplification limit 允许未验证阶段无限放大
B QUIC 不防御放大攻击
C 通过地址验证(Retry/token)确认来源真实,并在握手前限制响应量不超过收到的 3 倍,防止放大攻击 ✓ 正确答案
D 地址验证只用于数据传输,不用于握手
#

42. QUIC 的流级流量控制与连接级流量控制如何配合,避免单个流耗尽整体资源?

A 流级流控与连接级流控互斥
B QUIC 只有连接级流控
C 流级窗口限制单流,连接级窗口限制总体,取小发送,避免单流耗尽整体资源 ✓ 正确答案
D 单流可无限占用连接资源
#

43. HTTP/3 把 HTTP 语义映射到 QUIC 流,控制流与请求流如何分工?

A 所有 HTTP/3 消息在一个流上传送
B 控制流传输 SETTINGS/优先级等控制消息,请求流承载具体请求/响应,QPACK 流同步头部压缩表 ✓ 正确答案
C 控制流承载请求数据
D 请求流只用于握手
#

44. 为什么 QUIC 选择在用户态实现而非直接修改内核 TCP?这对协议迭代速度有何影响?

A QUIC 在用户态实现便于部署升级、可插拔拥塞控制、跨平台一致,迭代速度远快于内核 TCP ✓ 正确答案
B QUIC 修改内核 TCP 以提升性能
C 用户态实现使迭代变慢
D QUIC 必须随内核升级才能增加特性
#

45. QUIC 按 packet number space 做丢包恢复,相比 TCP 累积确认在重传效率上有何优势?

A TCP 累积确认比 QUIC 更精确
B QUIC 与 TCP 一样复用包号
C QUIC 用独立包号空间、重传用新包号、ACK 范围精确报告,比 TCP 累积确认重传更精确、RTT 估计更准 ✓ 正确答案
D QUIC 重传复用同一包号
#

46. QUIC 的建立,0-RTT 与 1-RTT 握手、连接迁移与队头阻塞消除如何实现?

A QUIC 无法迁移连接
B QUIC 建连需要 3 个 RTT
C 1-RTT/0-RTT 握手减少建连往返,连接 ID 支持无缝迁移,多流独立排序消除跨流队头阻塞 ✓ 正确答案
D QUIC 与 TCP 一样有跨流队头阻塞
#

47. QUIC 的 spin bit 如何用于被动 RTT 测量,为什么默认关闭且不提供加密语义?

A spin bit 默认开启
B spin bit 提供加密
C spin bit 用于被动 RTT 测量,默认关闭以保护隐私,且不提供加密语义 ✓ 正确答案
D spin bit 用于加密数据
#

48. HTTP/3 相对 HTTP/2 为何移除 server push,RFC 9218 的 Extensible Priorities 如何表达请求优先级?

A server push 因使用率低与复杂被移除,RFC 9218 用 urgency(0-7)与 incremental 表达请求优先级,替代 HTTP/2 依赖树 ✓ 正确答案
B HTTP/3 保留了 server push
C RFC 9218 仍用依赖树表达优先级
D 优先级与请求调度无关
#

49. TCP zero window 通告作为接收方背压?

A zero window 与背压无关
B zero window 表示发送方缓存满
C zero window 时发送方仍可任意发送
D zero window 是接收方通告 rwnd=0 形成背压,暂停发送,并用 zero window probe 探测窗口恢复 ✓ 正确答案
#

50. TCP slow start 与 congestion avoidance 在背压中的角色?

A 它们负责接收方缓冲区管理
B 它们负责网络侧背压,slow start 指数增长探测带宽、congestion avoidance 线性增长避免拥塞,与接收窗口互补 ✓ 正确答案
C slow start 是线性增长
D 它们与拥塞控制无关
#

51. Linux sysctl net.ipv4.tcp_abc 在 explicit backpressure 中的角色?

A tcp_abc 关闭拥塞控制
B tcp_abc 启用 ABC(按确认字节数增长窗口),使拥塞控制更精确、更平滑地响应 ACK/ECN 背压 ✓ 正确答案
C tcp_abc 只影响接收窗口
D tcp_abc 与窗口增长无关
#

52. TCP selective acknowledgement(SACK)下拥塞避免的窗口调整?

A SACK 下所有丢包都导致窗口归零
B SACK 精确识别丢失段,重传缺失段并继续发送,窗口调整更精细,避免不必要的整体窗口骤降 ✓ 正确答案
C SACK 无助于窗口调整
D SACK 下遇到丢包不调整窗口
#

53. 推导 TCP 接收窗口(rwnd)满时 zero window 探测的最小间隔?

A 探测间隔采用指数退避,最小间隔为初始 RTO(约 1 秒量级),之后每次加倍 ✓ 正确答案
B 探测间隔固定为 1 毫秒
C 探测间隔随窗口增大而减小
D 探测间隔没有退避
#

54. RTO、快速重传与 RACK/TLP 的触发依据有何差异,为什么尾部丢包更难发现?

A TLP 与快速重传触发依据相同
B 所有丢包都靠 RTO 检测
C 尾部丢包能被快速重传立即发现
D 快速重传靠重复 ACK,RTO 靠超时,TLP 主动探测尾部丢包;尾部丢包无后续包触发重复 ACK,只能等 RTO,故难发现 ✓ 正确答案
#

55. 当 RTT 估算抖动较大时 PTO(Probe Timeout)为何被引入作为 RTO 的备份,与传统的 RTO 重传算法有何区别?

A RTO 在抖动时始终可靠
B PTO 与 RTO 完全相同
C PTO 直接重传全部数据
D RTT 抖动时 RTO 可能过短/过长,PTO 用保守估算并先发探测包确认,作为 RTO 的备份,避免假丢包 ✓ 正确答案
#

56. MSG_PEEK、MSG_DONTWAIT、MSG_NOSIGNAL 各自改变 recv/send 的什么行为?为何常需屏蔽 SIGPIPE?

A MSG_PEEK 窥探不消费、MSG_DONTWAIT 非阻塞、MSG_NOSIGNAL 抑制 SIGPIPE;屏蔽 SIGPIPE 避免向关闭连接写数据导致进程被杀 ✓ 正确答案
B MSG_PEEK 会消费数据
C MSG_NOSIGNAL 会触发 SIGPIPE
D MSG_DONTWAIT 总是阻塞
#

57. listen 的 backlog 涉及 SYN queue 与 accept queue,accept queue 溢出时客户端会观察到什么现象?

A backlog 只影响 SYN queue
B accept queue 溢出只影响 SYN 握手
C 应用 accept 慢导致 accept queue 溢出,客户端表现为连接建立后断开、超时或被 RST ✓ 正确答案
D accept queue 溢出客户端无感知
#

58. QUIC 中 ack-eliciting 报文与 PTO 退避,为什么纯 ACK 不触发重传计时器,PTO 指数退避的作用是什么?

A 纯 ACK 不触发重传计时器(无需确认),PTO 指数退避降低持续故障时的探测频率 ✓ 正确答案
B 纯 ACK 也触发重传计时器
C PTO 退避会提高探测频率
D ack-eliciting 报文不触发重传
#

59. QPACK 相对 HPACK 为何改用编码器/解码器流显式同步动态表,而不是在请求流中隐式更新?

A QPACK 用独立编码器/解码器流显式同步动态表,与请求流解耦,避免队头阻塞;HPACK 隐式更新易阻塞 ✓ 正确答案
B QPACK 与 HPACK 都隐式更新
C QPACK 动态表在请求流内隐式同步
D QPACK 没有动态表
#

60. HTTP/3 的帧与流,与 HTTP/2 的差异及服务端部署如何?

A HTTP/3 部署无需处理 QUIC
B HTTP/3 与 HTTP/2 流完全一致
C HTTP/3 仍在 TCP 上传输
D HTTP/3 在 QUIC 流上承载帧消除跨流 HOL,引入控制流与 QPACK 流;部署需支持 UDP 443、连接 ID 路由与 HTTP/2 回退 ✓ 正确答案
#

61. QUIC 的连接迁移,连接 ID 与网络切换如何配合?

A 连接 ID 解耦连接身份与地址,网络切换时地址变化但 CID 不变,配合路径验证实现无缝迁移 ✓ 正确答案
B 迁移时连接 ID 随地址变化
C 连接迁移依赖 4 元组
D 网络切换必然中断连接
#

62. QUIC 的 0-RTT 重放攻击与防护?

A 0-RTT 可安全处理所有请求
B 0-RTT 有内建防重放
C 0-RTT 密钥无防重放,防护靠幂等限制、anti-replay 去重与重放窗口过期,非幂等操作应放 1-RTT ✓ 正确答案
D 重放攻击无法防护
#

63. QUIC 的流量控制与流优先级,HTTP/3 的依赖树如何构建?

A QUIC 定义流优先级
B HTTP/3 仍使用依赖树
C QUIC 只有连接级流控
D QUIC 流控分流级+连接级,HTTP/3 用 RFC 9218 的 urgency+incremental 表达优先级,已移除 HTTP/2 的依赖树 ✓ 正确答案
#

64. QUIC Key Update(TLS 1.3 密钥更新)如何在不中断连接的情况下轮换流量密钥,旧密钥的重放窗口如何处理?

A Key Update 不轮换密钥
B 密钥更新会中断连接
C 旧密钥永久有效可重放
D 用 HKDF 派生新流量密钥平滑切换,旧密钥保留短暂过渡窗口处理在途包,过期后旧密钥包被丢弃 ✓ 正确答案