首页 > 编程知识 正文

流量控制和拥塞控制,TCP的流量控制

时间:2023-05-04 18:25:58 阅读:116244 作者:4377

1 .流量控制1.1什么是流量控制? 流量控制的目的? 如果发件人发送的数据太快,收件人无法接收,则会发生丢包。 为了避免丢包,流量控制是控制发送者的发送速度使得接收方能够接收。 流量控制的根本目的是防止丢包,是构成TCP可靠性的一个方面。

1.2如何实现流量控制? 主要方式是在接收方返回的ACK中包括接收方窗口的大小,并利用大小来控制发送方的数据发送。

1.3通过流量控制进行死锁? 如何避免死锁的发生? 当发送者接收到窗口0的响应时,发送者停止发送并等待接收者的下一个响应。 然而,如果该窗口在传输过程中丢失了非零响应,则发送者将继续等待,并且接收者将以为发送者已接收到响应而等待新数据的接收,并且两者将相互等待,从而发生死锁。

为了避免流量控制导致的死锁,TCP使用了持续定时器。 每次发件人收到零窗口响应时启动计时器。 到了时间就主动发送消息,询问收件人的窗口大小。 如果收件人仍返回到零窗口,请重置计时器并继续等待。 如果窗口不为0,则表示响应消息已丢失,通过在重置发送窗口后开始发送来避免死锁的发生。

2 .拥塞控制2.1慢启动、拥塞避免拥塞控制整体流程如下图所示。

)1)拥塞窗口cwnd初始化为一个消息段,慢启动阈值的初始值为16

)2)运行慢启动算法,在指数增长到第四回合时,即cwnd=16=ssthresh,改为执行拥塞避免算法,然后线性增长拥塞窗口

)3)假设cwnd=24时,网络超时(拥塞),则将更新后的ssthresh=12、cwnd复位为1,执行慢启动算法。 如果cwnd=12=ssthresh,则改为运行拥塞避免算法

2.2快速重传、快速恢复发送端连续收到三个重复确认时,执行“乘法减少”算法,将ssthresh阈值减半。 但是,之后不运行慢启动算法

考虑到如果网络发生拥塞,则不会多次收到重复的确认,发送方认为当前网络可能没有发生拥塞。 因此,在这种情况下,不执行慢启动算法,而是将cwnd设定为ssthresh减半的值,执行拥塞避免算法,逐渐增大cwnd。 下图: TCP Reno版本是目前使用最广泛的版本。

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

3 .拥塞控制与流量控制的区别拥塞控制:拥塞控制作用于网络,它可以防止过多的数据注入网络,避免网络负载过大; 常用的方法是: (1)慢慢开始,避免拥挤,)快重发,快恢复。 流量控制:流量控制作用于接收者,控制发送者的发送速度,使接收者能及时接收,防止丢包。

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