大二下 互联网计算 传输层 20250405

一.TCP拥塞控制的基本概念

TCP (Transmission Control Protocol):

TCP是互联网核心协议之一,工作在传输层。

它的主要目标是提供可靠的、按顺序的数据传输服务。

为了实现可靠性,TCP使用了序号、确认(ACK)和重传机制。

网络拥塞 (Network Congestion):

当网络中的数据量超过了路由器或链路的处理能力时,就会发生拥塞。

想象一下高速公路上的堵车:汽车(数据包)太多,道路(网络链路/路由器)容量有限,导致行驶缓慢(延迟增加)、甚至无法通行(丢包)。

拥塞会导致:

丢包 (Packet Loss): 路由器缓冲区满了,新来的数据包只能被丢弃。

延迟增加 (Increased Delay): 数据包在路由器缓冲区中排队等待时间变长。

吞吐量下降 (Reduced Throughput): 最终成功传输到目的地的数据速率降低。

TCP拥塞控制 (TCP Congestion Control):

TCP需要一种机制来避免发送过多数据导致网络拥塞,同时又要尽量利用可用的网络带宽。这就是拥塞控制的目的。

TCP发送方维护一个叫做拥塞窗口 (Congestion Window, cwnd) 的变量。这个变量限制了发送方在收到确认(ACK)之前可以发送的数据量。

发送方实际可用窗口 = min(拥塞窗口 cwnd, 接收方通告窗口 rwnd)。我们这里主要关注cwnd。

拥塞控制算法动态调整cwnd的大小:

探测可用带宽:逐渐增加cwnd。

感知到拥塞:减小cwnd。

标准TCP拥塞控制算法 (AIMD - 加性增、乘性减):

慢启动 (Slow Start): 连接刚建立时,cwnd通常从一个很小的值(如1个MSS,最大报文段长度)开始,每收到一个ACK,cwnd就增加1个MSS。这使得cwnd在每个RTT (Round Trip Time,往返时间) 内近似指数增长,快速探测可用带宽。

拥塞避免 (Congestion Avoidance): 当cwnd达到一个阈值 (ssthresh) 后,进入拥塞避免阶段。为了避免增长过快导致拥塞,cwnd的增长变得线性(加性增)。标准的做法是:每收到一个ACK,cwnd增加 1/cwnd 个MSS。效果是大约每个RTT,cwnd增加1个MSS。

拥塞检测 (Congestion Detection): TCP主要通过两种方式检测拥塞:

超时重传 (Timeout): 发送方在规定时间内没有收到某个数据包的ACK,认为该包丢失(可能由拥塞引起)。

快速重传 (Fast Retransmit): 收到3个或以上重复的ACK,表明接收方收到了后续的包,但某个中间包丢失了。

拥塞处理 (Congestion Response):

超时: TCP认为发生了较严重的拥塞。ssthresh设为当前cwnd的一半,cwnd直接降回1个MSS,重新进入慢启动。

快速重传: TCP认为拥塞可能没那么严重。ssthresh设为当前cwnd的一半,cwnd也减为ssthresh(乘性减,通常是减半)。然后进入快速恢复 (Fast Recovery) 阶段(或直接进入拥塞避免)。

关键指标:

RTT (Round Trip Time): 数据包从发送方到接收方再返回确认所需的时间。

W (Maximum Window Size): 在拥塞发生前(丢包前),拥塞窗口能达到的最大值。

L (Loss Rate): 丢失数据包的比例。

吞吐量 (Throughput): 单位时间内成功传输的数据量。近似地,平均吞吐量 ≈ 平均cwnd / 平均RTT。

posted @ 2025-04-05 20:26  陆舟LandBoat  阅读(14)  评论(0)    收藏  举报