首页 > 编程知识 正文

tcp流量控制的特点,流量控制和拥塞控制的概念

时间:2023-05-06 21:09:43 阅读:116254 作者:1628

CP中的流控制和拥塞控制流控制流控制的流控制是如何实现流控制拥塞控制的?拥塞控制算法的慢启动算法、拥塞避免算法的高速重发算法的高速恢复是指

流量控制是什么是流量控制

如果发件人发送的数据太快,收件人无法接收,则会发生丢包。 为了避免丢包,流量控制是控制发件人的发送速度,以便收件人可以接收。

流控制的目的是防止丢包,是构成TCP可靠性的一个方面。

如何实现流量控制通过滑动窗口协议(连续ARQ协议)实现,滑动窗口协议分组无误、有序接收,还实现流量控制。 主要方式是在接收方发送的ACK中包含自己的接收窗口的大小,并利用大小来控制发送方的数据发送。

拥塞控制拥塞控制是指拥塞控制作用于网络,防止向网络注入过多的数据,导致网络负荷过大。

常见的方法是

首先,添加一些限制以避免重新发送拥塞并快速恢复拥塞控制算法

由于数据是单向传递的,而另一个窗口只确认接收端的缓存足够大,所以发送端的大小由网络拥塞程度决定,慢启动算法的发送端是拥塞窗口cwnd(congestionwindow ) 拥塞窗口的大小取决于网络拥塞程度并动态地变化,发送方使其发送窗口保持等于拥塞窗口,并考虑到接收方的接受能力,发送方窗口可以与拥塞窗口相同

慢启动算法的思路不是一开始就发送大量的数据,而是首先探究网络的拥塞程度。 这意味着从小键到大键增加拥塞窗口的大小。

这里,作为拥塞窗口的大小,以消息段的数量为例表示慢启动算法,实际的拥塞窗口的大小以字节为单位。 如下图所示。

发送方一个确认窗口也没有接收,所以在窗口cwnd上加1

从上图可见,一个传输循环所经过的时间实际上是往返时间RTT,而且每次经过一个传输循环,拥塞窗口cwnd就会加倍

为了防止cwnd过大而导致网络拥塞,必须设置慢启动阈值ssthresh状态变量。 ssthresh的使用方法如下。

cwnd ssthresh时:使用慢启动算法cwnd=ssthresh时:使用慢启动或拥塞避免时:使用拥塞避免算法使用拥塞避免算法拥塞窗口也就是说,也就是说,通过在不经过一个往返时间RTT的情况下将发送侧的拥塞窗口cwnd设为1而不是2,能够线性地增加拥塞窗口

无论是慢启动阶段还是拥塞控制阶段,如果发送方判断为网络发生了拥塞,则将慢启动阈值ssthressh设置为当前拥塞时发送窗口大小的一半(不能小于2 ),然后返回拥塞窗口

其目的是迅速减少主机向网络发送的分组的数量,确保发送拥塞的路由器有足够的时间处理队列中的分组。

拥塞控制的流程图如下图所示。

拥塞窗口cwnd初始化为一个消息段,慢启动阈值的初始值为16执行慢启动算法,指数增长到第四回合,即cwnd=16=ssthresh,执行拥塞避免算法假设拥塞窗口线性增加且cwnd=24,如果网络发生超时(拥塞),则更新后的ssthresh=12,如果cwnd cwnd=12=ssthresh,则拥塞避免算法33333330 这意味着,无论是慢启动阶段还是拥塞避免阶段,如果发送方判断为网络发生了拥塞,则慢启动阈值ssthresh设定为拥塞发生时的发送窗口,乘法减小和加法增大是指避免拥塞往往合在一起成为AIMD算法。 迅销公司算法的迅销公司要求接收方在发送数据时不要求确认,而是在收到丢失顺序的报文段后立即重复发送确认。 这可以将网络吞吐量提高约20%,因为它会提前通知发送方某个消息段没有到达对方。 在迅销公司算法中规定,发送方如果连续接收到三个重复确定,则必须立即重新发送对方还接收到的消息段,而无需等待已设置的重发计时器的到期日期,如下所示

与高速恢复高速重发结合使用的还有高速恢复算法,有以下两点要求

如果发送方连续接收到3个重复确认,则执行乘法降低算法,将ssthresh阈值减半(为了防止发送拥塞),但接下来不执行慢启动算法是因为如果网络拥塞,则多次不接受重复确认由于认为网络可能不拥塞,所以不运行慢启动算法,而是将cwnd设置为ssthresh减半的值,以避免拥塞

如果采用快速恢复算法,则慢启动算法仅在建立TCP连接和网络超时时使用

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。