TCP的拥塞控制

本文深入解析TCP的拥塞控制机制,包括慢开始、拥塞避免、快重传和快恢复四个关键算法。通过实例阐述了如何在网络拥塞时调整拥塞窗口cwnd和慢开始门限ssthresh,以及如何利用重复确认实现快速数据传输和恢复,以确保网络稳定性和效率。
摘要由CSDN通过智能技术生成

1、拥塞

在这里插入图片描述
在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况就叫做网络拥塞,若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降。
在这里插入图片描述
当输入的负载到达一定程度,吞吐量不会增加,即一部分资源会被丢掉,网络的吞吐量维持在其所能控制的最大值。转发节点的缓存不够大造成分组的丢失是拥塞的征兆

2、拥塞控制与流量控制

  • 拥塞控制是防止过多的数据注入到网络中,使网络中的路由器或链路不过载,这是一个全局性的。
  • 流量控制是点对点的通信量的控制,是端到端问题。

3、TCP的四种拥塞控制算法

  • 慢开始
  • 拥塞控制
  • 快重传
  • 快恢复

4、举例

4.1 大前提

  • 数据是单方向传送,而另一个方向只传送确认
  • 接收方总是有足够大的缓存空间,因而发送窗口的大小由网络的拥塞程度来决定
  • 以TCP报文段的个数为单位,而不是以字节为单位

4.2 慢开始、拥塞控制

在这里插入图片描述

  • 传输轮次:发送方给接收方发送数据报文段后,接收方给发送方发回相应的确认报文段,一个传输轮次所经历的时间就是往返时间RTT(RTT并非是恒定的数值)。使用传输轮次是为了强调,把拥塞窗口cwnd所允许发送的报文段都连续发送出去,并收到了对已发送的最后一个报文段的确认,拥塞窗口cwnd会随着网络拥塞程度以及所使用的拥塞控制算法动态变化。
  • 在tcp双方建立逻辑链接关系时, 拥塞窗口cwnd的值被设置为1,还需设置慢开始门限ssthresh,在执行慢开始算法时,发送方每收到一个对新报文段的确认,就把拥塞窗口cwnd的值加一倍,然后开始下一轮的传输,当拥塞窗口cwnd增长到慢开始门限值时,就使用拥塞避免算法。
4.2.1 慢开始

假设当前发送方拥塞窗口cwnd的值为1,而发送窗口swnd等于拥塞窗口cwnd,因此发送方当前只能发送一个数据报文段(拥塞窗口cwnd的值是几,就能发送几个数据报文段),接收方收到该数据报文段后,给发送方回复一个确认报文段,发送方收到该确认报文后,将拥塞窗口的值变为2,发送方此时可以连续发送两个数据报文段,接收方收到该数据报文段后,给发送方一次发回2个确认报文段,发送方收到这两个确认报文后,将拥塞窗口的值加2变为4,发送方此时可连续发送4个报文段,接收方收到4个报文段后,给发送方依次回复4个确认报文,发送方收到确认报文后,将拥塞窗口加4,置为8,发送方此时可以连续发送8个数据报文段,接收方收到该8个数据报文段后,给发送方一次发回8个确认报文段,发送方收到这8个确认报文后,将拥塞窗口的值加8变为16,当前的拥塞窗口cwnd的值已经等于慢开始门限值,之后改用拥塞避免算法

4.2.2 拥塞避免

在拥塞避免阶段的每个传输轮次中,拥塞窗口cwnd只能线性加一,而不是像慢开始算法时,每个传输轮次,拥塞窗口cwnd按指数增长。因此,在拥塞控制阶段,拥塞控制从16+1……直至到达24。当拥塞窗口增大为24,发送发发出的24个报文段在传输过程中丢失了4个,接收方只收到20个报文段,给发送方依次回复20个确认报文段,一段时间后,丢失的4个报文段的重传计时器超时了,发送发判断可能出现拥塞,更改cwnd和ssthresh,并重新开始慢开始算法,如图所示:
在这里插入图片描述

4.3 快重传、快恢复

在这里插入图片描述
发送方发送1号数据报文段,接收方收到1号报文段后给发送方发回对1号报文段的确认,在1号报文段到达发送方之前,发送方还可以将发送窗口内的2号数据报文段发送出去,接收方收到2号报文段后给发送方发回对2号报文段的确认,在2号报文段到达发送方之前,发送方还可以将发送窗口内的3号数据报文段发送出去,假设3号报文丢失,接收方便不会发送针对该报文的确认报文给发送方,但是,发送方还可以将发送窗口内的4号数据报文段发送出去,接收方收到后,发现这不是按序到达的报文段,因此给发送方发送针对2号报文段的重复确认,表明我现在希望收到的是3号报文段,但是我没有收到3号报文段,而收到了未按序到达的报文段,发送方还可以将发送窗口中的5号报文段发送出去,接收方收到后,发现这不是按序到达的报文段,因此给发送方发送针对2号报文段的重复确认,表明我现在希望收到的是3号报文段,但是我没有收到3号报文段,而收到了未按序到达的报文段,发送方还可以将发送窗口内的最后一个数据段即6号数据报文段发送出去,接收方收到后,发现这不是按序到达的报文段,因此给发送方发送针对2号报文段的重复确认,表明我现在希望收到的是3号报文段,但是我没有收到3号报文段,而收到了未按序到达的报文段。此时,发送方收到了累计3个连续的针对2号报文段的重复确认,立即重传3号报文段,接收方收到后,给发送方发回针对6号报文的确认,表明,序号到6为至的报文都收到了,这样就不会造成发送方对3号报文的超时重传,而是提早收到了重传。
在这里插入图片描述
在这里插入图片描述

5、慢开始、拥塞控制、快重传、快恢复

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值