首页 > 编程知识 正文

tcp流量控制和拥塞控制,tcp拥塞控制的四个算法

时间:2023-05-05 21:29:49 阅读:32126 作者:4344

TCP滑动窗口TCP滑动窗口的可靠性也基于“确认重发”。

只有在收到对方对发送窗口中字节的ACK确认时,发送窗口才会在发送窗口的左侧移动

分界线。 接收端能够根据自身的状况通知窗口尺寸,从而控制发送端的接收并进行通信量

控制。 滑动窗口协议是传输层进行流控制的措施,接收方通知发送方自身的窗口

根据嘴的大小,控制发送侧的发送速度,发送侧的发送速度过快导致自己

淹没的目的。 拥塞窗口是发送侧使用的流控制表,而滑动窗口是接收侧使用的流

控制量。

流量控制是指防止发送方发送过快,耗尽接收方的资源,导致接收方无法处理

流量控制的几个知识点(1)接收端抑制发送端的依据:接收端缓冲区大小

)流量控制的目标是接收侧,接收侧可能来不及处理

)3)流量控制机制是丢包

如何实现流量控制? 使用滑动窗口

滑动窗口1 .什么是滑动窗口?

滑动窗口就像一个窗口,用于告诉发送方可以发送数据的大小。 也就是说,窗口标记了接收缓冲区的大小,这样就可以实现了

ps :窗口是指一次发送大量的多少数据

2 .为什么会出现滑动窗口? ()

确认策略为每个发送的数据段发送ACK确认,并在收到ACK后发送下一个数据段。 这具有性能下降的主要缺点,特别是在数据往返时间较长的情况下

通过滑动窗口,可以一次发送多个数据,从而提高性能

3 .滑动窗口的知识点

)1)接收方将自己能够接收的缓冲器大小放入TCP报头的“窗口大小”字段中,并通过ACK通知发送方

)2)窗口大小字段越大,表示网络的吞吐率越高

)3)窗口尺寸是指,不等待确认响应就能够继续发送数据的最大值,不需要来自接收侧的响应,能够一次连续发送数据

)4)操作系统内核必须打开发送缓冲器以记录当前没有响应的数据,以保持滑动窗口。 必须确认响应的数据才能从缓冲区中删除

ps :如果发送缓冲区太大,会有空间开销

)5)当接收方发现其缓冲器已满时,将其窗口大小设置为较小值并通知发送方,并且发送方在接收到该值之后减慢其发送速度

)6)如果接收方发现自己的缓冲区已满,则将窗口大小设置为0。 在这种情况下,发送方不再发送数据,但必须定期发送窗口探测数据段,以便接收方告诉发送方窗口的大小

PS:TCP的开头有16个窗口字段。 此字段用于存储窗口大小信息

滑动窗口的优点是可以高效可靠地发送大量数据

拥塞控制是一个全球过程,流量控制是点对点通信量的控制。

拥塞控制:发送端速度太快,来不及处理网络,防止网络拥塞

TCP拥塞控制的四种核心算法:慢启动(slow start )、拥塞避免(CongestionAvoidance )、快速重发(fastretransmit )、快速恢复(fastrecovery )。

拥塞窗口(cwnd,congestion window ),其大小取决于网络拥塞程度而动态变化。

用于拥塞控制的机制: AIMDslow start slow start:慢启动

A: additive (加法的) )。

I: increase (增加) )

(M: multiplicative (乘法) ) ) ) ) ) ) ) )。

d :描述) )

也就是说,加法增加,乘法减少----增减

加法增加

指运行拥塞避免算法后,在确认所有消息段后,即经过往返时间后,将拥塞窗口cwnd增加到MSS大小,并逐渐增大拥塞窗口,以防止网络过早拥塞

乘法减少

如果发生一次超时,即一次网络拥塞,则将慢启动阈值ssthresh设置为0.5倍于当前拥塞窗口值的值

ps :频繁出现网络拥塞时,ssthresh值会迅速减少,注入网络的数据包数量会大幅减少

慢启动算法慢启动算法的思路是:首先增加网络拥塞程度,即从小到大逐渐增加拥塞窗口的大小,而不是从一开始就发送大量数据。 还必须设置慢启动阈值ssthresh状态变量,以防止cwnd过大而导致网络拥塞。

ssthresh的使用方法如下。

对于cwndssthresh,请使用慢启动算法。

对于cwndssthresh,切换到拥塞避免算法。

如果cwnd=ssthresh,则慢启动和拥塞避免算法是任意的

拥塞避免算法拥塞避免算法缓慢增大拥塞窗口,即每次经过往返时间RTT时发送的拥塞窗口cwnd递增1而不是加倍。 如果在慢启动阶段或拥塞避免阶段,发送方都判断为网络发生了拥塞,则将慢启动阈值设定为拥塞发生时的发送窗口大小的一半。 然后将拥塞窗口设定为1,执行慢启动算法。

快速重试算法快速重试(fast retransmit )要求接收方在接收到失序消息段后立即重复发出确认,而在发送数据时不传递确认。 这是为了发送方尽早知道报文段没有到达。 在快速重发算法中,发送方在连续收到三个重复确认后,必须立即重发对方尚未收到的报文段,但

不必继续等待设置的重传计数器时间到期。

快速恢复(Fast Recovery)算法

(1)当发送方连续收到三个重复确认,就执行“乘法减小”算法,把慢开始门限设置为出现拥塞时的发送窗口大小的一半。这是为了预防网络发生拥塞。请注意:接下去不执行慢开始算法。
(2)由于发送方现在认为网络很可能没有发生拥塞,因此与慢开始不同之处是现在不执行慢开始算法(即拥塞窗口cwnd现在不设置为1),而是把cwnd值设置为慢开始门限ssthresh减半后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。

发送端如何知道已经丢包?

1.tcp超时重传定时器超时
2.收到三个重复的ack

为什么会有拥塞控制?

流量控制虽然可以高效可靠的传送大量的数据,但是如果在刚开始阶段就发送大量的数据,可能会导致网络拥堵,因为网络上的计算机太多了

拥塞控制的工作过程

初始化阶段

慢开始阶段
阶段(一)

阶段(二)

阶段(三)

阶段(四)

拥塞避免阶段

拥塞调整阶段
阶段(一)

阶段(二)

阶段(三)

流量控制和拥塞控制的区别

1.相同点
(1)现象都是丢包;
(2)实现机制都是让发送方发的慢一点,发的少一点
2.不同点
(1)丢包位置不同
流量控制丢包位置是在接收端上
拥塞控制丢包位置是在路由器上
(2)作用的对象不同
流量控制的对象是接收方,怕发送方发的太快,使得接收方来不及处理
拥塞控制的对象是网络,怕发送发发的太快,造成网络拥塞,使得网络来不及处理
3.联系
拥塞控制
拥塞控制通常表示的是一个全局性的过程,它会涉及到网络中所有的主机、
所有的路由器和降低网络传输性能的所有因素
流量控制
流量控制发生在发送端和接收端之间,只是点到点之间的控制

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