Network | TCP congestion control

拥塞控制算法:1. 加性增、乘性减;2. 慢启动;3. 对超时事件作出反应;

整体过程如下:

慢启动->到达阈值->加性增(窗口+1个MSS), 这个阶段叫拥塞避免(CA)->3个冗余ack丢包(事件)->阈值和窗口都缩小为一半(乘性减), 然后加性增(CA)->快速重传,并等待确认,这个阶段叫快速恢复,如果没有确认,就当作超时事件处理了;

                   ->超时(事件)->快速重传->tcp会重新回为原始状态,进入慢启动;

在发生丢包和超时时,tcp都会执行快速重传;

当TCP接收方收到一个具有大于下一个所期望的、按序的序号的报文段时,它检测到了数据流中的一个间隔,即有报文段丢失。它将发送一个冗余的ACK,进行重复确认;如果TCP发送方接收到相同数据的3个冗余ACK,它就认为跟在这个已被确认过3次的报文段之后的报文段已经丢失。

例子(盗图):

假定最大窗口是32个段,阈值时16个段(最大窗口的一半),在慢速启动阶段,窗口大小从1开始按指数规律增加知道它达到阈值。
当达到阈值后,拥塞避免(加性增加)过程允许窗口大小线性增长知道计时器到达或达到最大窗口的大小。
在途中,当窗口为20时,计时器到达。此时。进入乘性减少过程,将阈值设置为当前窗口的大小的一半,当计时器达到时,当前窗口大小为10,因此现在的阈值为10。
TCP再次进入慢速启动,并设置窗口的大小为1,当达到新阈值(10)时,TCP进入加性增加阶段。
当窗口大小为12时,3个ACK事件发生,再次进入乘性减少过程,阈值设置为6,这时TCP进入加性增加阶段,该阶段一直维持到另一个计时器到时或者另外3个ACK事件发生为止。

时间: 2024-08-02 06:23:46

Network | TCP congestion control的相关文章

Android Change TCP Congestion Control

I The need of Change TCP Congestion Control in Android " TCP was originally designed for wired networks. Packet loss is considered to be the result of network congestion and the congestion window size is reduced dramatically as a precaution. However,

Network | TCP

Transmission Control Protocol, TCP是一种面向连接的.可靠的.基于字节流的传输层通信协议. 应用层向TCP层发送用于网间传输的.用8位字节表示的数据流,然后TCP把数据流分区成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元(MTU:Maximum Transmission Unit)的限制).之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层.TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实

NOTES ON [Efficient and Cost-Effective Hybrid Congestion Control for HPC Interconnection Networks]

Efficient and Cost-Effective Hybrid Congestion Control for HPC Interconnection Networks  Abstract—Interconnection networks are key components in high-performance computing (HPC) systems, their performance having a strong influence on the overall syst

Optimizing Linux network TCP/IP kernel parameters

You can verify the Linux networking kernel parms from the root user with these commands::Many Oracle professionals do not note the required setting for optimizing Oracle*Net on Oracle 10g release 2.  Here is a review of the suggested TCP/IP buffer pa

Congestion Avoidance in TCP

Congestion Avoidance in TCP Consequence of lack of congestion control When a popular resource is shared without regulation the result is always over-utilization With the introduction of TCP in 1983, users can write networking applications that requir

想深入了解TCP机制和相关参数优化吗(下)

上篇中,我们介绍了TCP的协议头.状态机.数据重传中的东西.但是TCP要解决一个很大的事,那就是要在一个网络根据不同的情况来动态调整自己的发包的速度,小则让自己的连接更稳定,大则让整个网络更稳定.在你阅读下篇之前,你需要做好准备,本篇文章有好些算法和策略,可能会引发你的各种思考,让你的大脑分配很多内存和计算资源,所以,不适合在厕所中阅读. TCP的RTT算法 从前面的TCP的重传机制我们知道Timeout的设置对于重传非常重要, 设长了,重发就慢,没有效率,性能差: 设短了,重发的就快,会增加网

TCP的那些事(转载)

(转载本站文章请注明作者和出处 酷 壳 – CoolShell.cn ,请勿用于任何商业用途) TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面.所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获.关于TCP这个协议的细节,我还是推荐你去看W.Richard Stevens的<TCP/IP 详解 卷1:协议>(当然,你也可以去读一下RFC793以及后面N多的RFC).另外,本文我会使用英文术语,这样方便你通过这些英文关键词来查找相关的技

TCP 的那些事儿(下)

http://coolshell.cn/articles/11609.html 这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇<TCP的那些事儿(上)> 上篇中,我们介绍了TCP的协议头.状态机.数据重传中的东西.但是TCP要解决一个很大的事,那就是要在一个网络根据不同的情况来动态调整自己的发包的速度,小则让自己的连接更稳定,大则让整个网络更稳定.在你阅读下篇之前,你需要做好准备,本篇文章有好些算法和策略,可能会引发你的各种思考,让你的大脑分配很多内存和计算资源,所以,不适合在

TCP简单说(下)

本文在Creative Commons许可证下发布 TCP的RTT算法 从前面的TCP重传机制我们知道Timeout的设置对于重传非常重要. 设长了,重发就慢,丢了老半天才重发,没有效率,性能差: 设短了,会导致可能并没有丢就重发.于是重发的就快,会增加网络拥塞,导致更多的超时,更多的超时导致更多的重发. 而且,这个超时时间在不同的网络的情况下,根本没有办法设置一个死的值.只能动态地设置. 为了动态地设置,TCP引入了RTT--Round Trip Time,也就是一个数据包从发出去到回来的时间