TCP窗口拥塞控制:

拥塞控制用于防止由于过多的报文进入网络,而造成路由器与链路过载。

①流量控制可以很好地解决发送端与接收端之间的端-端报文发送和处理速度的协调,但是无法控制进入网络的总体流量。如果每个发送端与接收端的端-端之间流量是合适的,但是对于网络整体来说,随着网络的流量增加,也会使网络通信负荷过重,由此引起报文传输延迟增大或丢弃。报文的差错确认和重传又会进一步加剧网络的拥塞。

②拥塞窗口的概念:拥塞窗口是发送端根据网络拥塞情况确定的窗口值。发送端在真正确定发送窗口时,应该取“通知窗口”和“拥塞窗口”的最小值。

③拥塞控制有四个核心的算法:“慢启动”、“拥塞避免”、“快重传”、“快恢复”。

慢启动:

①在刚刚开始发送报文段时,先把拥塞窗口cwnd设置为一个最大报文段MSS的数值。而在每收到一个对新的报文段的确认后,把拥塞窗口以2的指数增长。用这样的方法逐步增大发送方的拥塞窗口cwnd,可以使分组注入到网络的速率更加合理。
这里写图片描述

②每经过一个传输轮次,拥塞窗口 cwnd 就加倍。一个传输轮次所经历的时间其实就是往返时间RTT。不过“传输轮次”更加强调:把拥塞窗口cwnd所允许发送的报文段都连续发送出去,并收到了对已发送的最后一个字节的确认。

③慢开始的“慢”并不是指cwnd的增长速率慢,而是指在TCP开始发送报文段时先设置cwnd=1,使得发送方在开始时只发送一个报文段(目的是试探一下网络的拥塞情况),然后再逐渐增大cwnd。
为了防止拥塞窗口cwnd增长过大引起网络拥塞,还需要设置一个慢开始阈值ssthresh状态变量(如何设置ssthresh)。慢开始阈值ssthresh的用法如下:
当 cwnd < ssthresh 时,使用上述的慢开始算法。
当 cwnd > ssthresh 时,停止使用慢开始算法而改用拥塞避免算法。
当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞控制避免算法。

拥塞避免算法:

①让拥塞窗口cwnd缓慢地增大,即每经过一个轮次就把发送方的拥塞窗口cwnd加1,而不是加倍。这样拥塞窗口cwnd按线性规律缓慢增长,比慢开始算法的拥塞窗口增长速率缓慢得多。

②无论在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(其根据就是没有收到确认),就要把慢开始门限ssthresh设置为出现拥塞时的发送方窗口值的一半(但不能小于2)。然后把拥塞窗口cwnd重新设置为1,执行慢开始算法。这样做的目的就是要迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完毕。

这里写图片描述
③让拥塞窗口cwnd缓慢地增大,即每经过一个轮次就把发送方的拥塞窗口cwnd加1,而不是加倍。这样拥塞窗口cwnd按线性规律缓慢增长,比慢开始算法的拥塞窗口增长速率缓慢得多。

④强调:“拥塞避免”并非指完全能够避免了拥塞。利用以上的措施要完全避免网络拥塞还是不可能的。“拥塞避免”是说在拥塞避免阶段将拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。

快重传:

①如果发送方设置的超时计时器时限已到但还没有收到确认,那么很可能是网络出现了拥塞,致使报文段在网络中的某处被丢弃。这时,TCP马上把拥塞窗口 cwnd 减小到1,并执行慢开始算法,同时把慢开始门限值ssthresh减半。这是不使用快重传的情况。

②快重传算法首先要求接收方每收到一个失序的报文段后就立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方)而不要等到自己发送数据时才进行捎带确认。

这里写图片描述

③接收方收到了M1和M2后都分别发出了确认。现在假定接收方没有收到M3但接着收到了M4。显然,接收方不能确认M4,因为M4是收到的失序报文段。根据可靠传输原理,接收方可以什么都不做,也可以在适当时机发送一次对M2的确认。但按照快重传算法的规定,接收方应及时发送对M2的重复确认,这样做可以让发送方及早知道报文段M3没有到达接收方。发送方接着发送了M5和M6。接收方收到这两个报文后,也还要再次发出对M2的重复确认。这样,发送方共收到了接收方的四个对M2的确认,其中后三个都是重复确认。

④快重传算法还规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段M3,而不必继续等待M3设置的重传计时器到期。由发送方尽早重传未被确认的报文段,因此采用快重传后可以使整个网络吞吐量提高约20%。

快恢复: 与快重传配合使用的还有快恢复算法

①当发送方连续收到三个重复确认,就执行“乘法减小”算法,把慢开始阈值ssthresh减半。这是为了预防网络发生拥塞。请注意:接下去不执行慢开始算法。

②由于发送方现在认为网络很可能没有发生拥塞,因此与慢开始不同之处是现在不执行慢开始算法(即拥塞窗口cwnd现在不设置为1),而是把cwnd值设置为慢开始门限ssthresh减半后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。

这里写图片描述

③在采用快恢复算法时,慢开始算法只是在TCP连接建立时和网络出现超时时才使用。采用这样的拥塞控制方法使得TCP的性能有明显的改进。

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
TCP拥塞控制机制是为了防止网络中的拥塞情况,并保证网络的可靠性和公平性。TCP拥塞控制机制主要包括四种算法:慢启动、拥塞避免、快速重传和快速恢复。 1. 慢启动(Slow Start):在TCP连接建立时,TCP会先发送一个很小的数据包,在收到对方的确认后,会逐渐增加发送数据包的数量,直到网络出现拥塞为止。这个过程被称为慢启动。慢启动算法的目的是为了快速占用可用的带宽,同时也可以避免网络出现拥塞。 2. 拥塞避免(Congestion Avoidance):当网络出现拥塞时,TCP会采用拥塞避免算法来减少发送数据包的数量。拥塞避免算法主要是通过增加拥塞窗口的大小来减少发送数据包的数量。拥塞窗口是指TCP可以发送的数据包数量,拥塞窗口的大小会根据网络出现拥塞的情况进行调整。 3. 快速重传(Fast Retransmit):当TCP发送的数据包在传输过程中丢失时,TCP会启动快速重传算法来尽快地重传数据包。快速重传算法不会等待超时,而是在接收到连续的三个相同的确认消息时,就会立即重传数据包。 4. 快速恢复(Fast Recovery):在快速重传算法中,当TCP重传数据包时,会将拥塞窗口减半,以便尽快减少发送数据包的数量。而在快速恢复算法中,当TCP重传数据包时,拥塞窗口不会减半,而是将拥塞窗口设置为拥塞窗口的一半,并继续发送数据包。这样可以减少网络的拥塞情况,同时也可以提高网络的吞吐量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值