MST

星途 面试题库

面试题:网络编程之TCP/IP协议栈广域网优化传输

当广域网出现高延迟和高丢包率时,TCP协议栈会有哪些自适应调整策略来维持数据传输效率和可靠性,这些策略在实际应用中有哪些局限性?
12.2万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试

TCP协议栈自适应调整策略

  1. 慢启动(Slow Start): 在连接建立初期,TCP会以一个较小的拥塞窗口(通常为1个MSS,即最大段大小)开始发送数据。每收到一个确认(ACK),拥塞窗口就增加1个MSS。这样逐渐增加发送速率,避免一开始就向网络注入过多数据导致拥塞加剧。
  2. 拥塞避免(Congestion Avoidance): 当拥塞窗口达到慢启动门限(ssthresh)时,TCP进入拥塞避免阶段。此时,每收到一个ACK,拥塞窗口增加1/cwnd个MSS,增长速度相比慢启动阶段大幅减缓,以试探网络的承载能力。
  3. 快速重传(Fast Retransmit): 当TCP接收到3个重复的ACK时,就认为某个数据包已经丢失,立即重传该数据包,而不必等待超时。这可以快速恢复丢失的数据,减少等待时间,提高数据传输效率。
  4. 快速恢复(Fast Recovery): 在快速重传之后,TCP并不马上将拥塞窗口降为1,而是将ssthresh设置为当前拥塞窗口的一半,然后将拥塞窗口设置为ssthresh加上3倍的MSS,继续进入拥塞避免阶段。这样可以在一定程度上维持数据传输速率,避免因窗口急剧下降导致的性能大幅降低。
  5. 超时重传(Retransmission Timeout, RTO)调整: TCP会根据网络状况动态调整重传超时时间。如果网络延迟较高,RTO会相应增大;若网络状况改善,RTO会减小。通过这种方式,在丢包时能合理等待ACK,避免不必要的重传。

实际应用中的局限性

  1. 慢启动和拥塞避免
  • 收敛速度慢:在网络状况突然变好时,慢启动和拥塞避免机制使得窗口增长相对缓慢,不能迅速利用网络空闲带宽,导致数据传输效率提升不及时。
  • 初始窗口过小:对于高速网络,初始拥塞窗口(1个MSS)可能过小,需要较长时间才能达到较高的传输速率,在短连接场景下效率较低。
  1. 快速重传和快速恢复
  • 依赖重复ACK:若网络中ACK乱序到达,可能导致误判为丢包而触发不必要的快速重传,增加网络负载。
  • 不能完全应对网络变化:当网络持续恶化,快速恢复后仍可能再次出现丢包,不能从根本上解决网络拥塞问题。
  1. RTO调整
  • 估计不准确:RTO的动态调整依赖于对网络延迟的估计,但实际网络延迟可能波动较大,导致RTO估计不准确。RTO设置过长,会使丢包后等待重传时间过长,降低传输效率;RTO设置过短,会导致不必要的重传,加重网络负担。
  • 全局同步问题:当网络发生拥塞时,多个TCP连接可能同时超时重传,导致网络流量瞬间增大,进一步加剧拥塞,出现所谓的“全局同步”现象。