TCP 流量控制机制详解
TCP 流量控制是防止发送方发送速度过快导致接收方缓冲区溢出的关键机制。
滑动窗口机制
窗口大小
- 接收窗口(rwnd):接收方通告的可用缓冲区大小
- 拥塞窗口(cwnd):发送方根据网络状况计算的窗口大小
- 实际发送窗口:min(rwnd, cwnd),即取两者中的较小值
工作原理
- 接收方通告:在 TCP 报文段的窗口字段中通告当前可用的接收窗口大小
- 发送方调整:发送方根据接收方的窗口大小调整发送速率
- 零窗口:当接收方缓冲区满时,通告窗口大小为 0
- 窗口探测:发送方定期发送零窗口探测报文,查询接收方窗口是否可用
流量控制过程
正常情况
- 接收方有足够缓冲区时,窗口大小保持较大值
- 发送方可以连续发送多个报文段
- 接收方处理数据后,更新窗口大小并通告发送方
缓冲区紧张
- 接收方缓冲区接近满时,减小窗口大小
- 发送方相应减少发送速率
- 避免数据丢失和重传
零窗口处理
- 接收方缓冲区满时,通告窗口大小为 0
- 发送方停止发送数据,但保持连接
- 定期发送零窗口探测(1 字节数据)
- 接收方有空间后,更新窗口大小
窗口更新的时机
- 接收数据后:处理完数据,释放缓冲区空间
- 应用层读取数据:从接收缓冲区读取数据后
- 零窗口探测响应:响应发送方的探测报文
相关问题
- 流量控制和拥塞控制的区别是什么?
- 为什么需要零窗口探测机制?
- 滑动窗口如何影响 TCP 的吞吐量?