跳至主要內容

TCP应知应会(下)

YihuiNetwork大约 2 分钟

TCP应知应会(下)

拥塞控制

TCP 通过维护一个拥塞窗口来进行拥塞控制,拥塞控制的原则是,只要网络中没有出现拥塞,拥塞窗口的值就可以再增大一些,以便把更多的数据包发送出去,但只要网络出现拥塞,拥塞窗口的值就应该减小一些,以减少注入到网络中的数据包数。 拥塞控制算法的核心是选择一个有效的策略来控制拥塞窗口的变化。

**目的:**防止过多的数据注入网络,保证网络中的路由器或链路不至过载(相较于流量控制,这更多是一个全局概念)

拥塞控制和流量控制的对比

**相同点:**都通过控制发送方发送数据的速率来达到控制效果

不同点:

拥塞控制是让网络能够承受现有的网络负荷,是一个全局性的过程,涉及所有的主机、路由器,以及与降低网络传输性能有关的所有因素。

流量控制是点对点的通信量的控制,即接收端控制发送端,它所需要做的是一直发送端发送数据的速率,以便使接收端来得及接收

实现机制

维护两个窗口,即接收窗口 rwnd 和拥塞窗口 cwnd,发送窗口的上限取min[rwnd,cwnd]

image-20220803092655767

慢开始

每经过一个传输轮次(即往返时间RTT),拥塞窗口cwnd就会加倍。一开始令拥塞窗口 cwnd = 1(即一个最大报文段长度MSS),每收到一个最新的报文段确认后,将cwnd++。

满开始使得分组注入网络的速率更加合理,慢开始一直吧拥塞窗口 cwnd 增大到一个规定的慢开始门限(ssthresh 阈值),然后开始使用拥塞避免算法。

拥塞避免

发送端每经过一个 RTT 就增加一个MSS的大小,而不是加倍。cwnd呈现线性缓慢增长(即加法增大),当出现一次网络超时(网络拥塞)是,令开始门限ssthresh等于当前cwnd的一半(乘法减小)。

快重传

即网络超时(网络拥塞)的判断和反应机制。

当发送方连续接收三个重复的ACK报文时,执行乘法减小的对发送发开始门限ssthresh缩减为发送发cwnd的一半。

快恢复

把cwnd设置为新的慢开始门限ssthresh的数值,开始执行拥塞避免算法,缓缓线性增大。

网络拥塞处理

发送发检测到超时事件的发生(未按时收到确认,重传计时器超时),就要

对慢开始门限进行调整,但不会小于2,然后把拥塞窗口 cwnd 重新设置为此值开始执行慢开始算法。