传输层:TCP流量控制与拥塞控制

TCP功能特点: TCP核心为可靠的传输,所有功能都是为此核心功能服务。(要想可靠,就要有序,就要拥塞控制,流量控制,就要不丢包,就要建立(面向)连接,就要点对点)。
最核心就是: 可靠的连接 – 拥塞控制,流量控制

流量控制:主机A发送给主机B未被B确认的量小于主机B的空闲空间(未确认的量小于可用存储空间)
已确认的量就直接存入B机的接收缓存等待读取了
LastByteSent(A最后发送的序号) -LastByteAcked(B最后确认的序号) = UnAcked(未被B确认的量) ----流水线机制,A可以在收到上次确认segment前继续发报文,但量有限制
空闲空间 = rwnd
在这里插入图片描述

拥塞控制:拥塞窗口是带宽的概念,单位时间内最大传输速率
慢开始(指数增加)——拥塞避免(线性增加)——快重传(3个ACK)——快恢复(rwnd值从新阈值开始线性增长)
在这里插入图片描述
1.初始时,cwnd 被设置为 1MSS(一个报文段最大长度,即一次能发一个有最大长度的报文段),并且开始慢开始算法(指数增加)
2.当 cwnd 增长到慢启动阈值 ssthresh (cwnd = 16)时,改用拥塞避免算法
3.由图可知,当 cwnd 到达 24 MSS时,发生网络拥塞,ssthresh 变为 cwnd 的一半,也就是 ssthresh = 12,然后 cwnd 置为 1,继续
4.快恢复: 发生网络拥塞后,cwnd不置为1,而是直接从阈值开始增加
5.快重传:接收到三个重复的ACK报文后,不用等待第四个,直接重传segment报文
PS:若在慢开始算法时,翻倍后的 cwnd > ssthresh ,cwnd 只能等于 ssthresh 而不能超过它

慢开始,拥塞避免区别
cwnd 不同时执行的算法
1.cwnd < ssthresh :慢开始,指数增长
2.cwnd > ssthresh :拥塞避免,线性增长
到达慢开始阈值(ssthresh)后,改用拥塞避免算法

慢开始:每个segment —ACK就将拥塞窗口增加1MSS:一次发送4个报文段,收到4个ACK,拥塞窗口加4MSS,下次可以一次发8个报文段(带有最大长度)
拥塞避免: 每个RTT,拥塞窗口加1MSS:一次发送4个报文段,收到4个ACK,经历了一个RTT,拥塞窗口加1MSS,下次可以一次发送5个报文段(带有最大长度)
初始发送速率是MSS/RTT,窗口大小是MSS。第二次传输窗口大小为2MSS,发送速率2MSS/RTT, 第三次窗口大小4MSS,传输速率4MSS/RTT.
在这里插入图片描述
在这里插入图片描述
窗口与传输速率
拥塞窗口限制了发送方的发送速率(根据网络拥塞),逐步探寻带宽最大利用率
流量窗口也限制了发送方的发送速率(根据接收方的缓存),逐步探寻缓存最大利用率
所以传输速率不可能固定不变,一直在改变。
发送方的未被确认量不会超过min{rwnd, cwnd},流量控制和拥塞控制是双重限制,发送量必须小于两者的最小值。
在这里插入图片描述

发布了54 篇原创文章 · 获赞 1 · 访问量 2754

猜你喜欢

转载自blog.csdn.net/weixin_44682507/article/details/103215380