目录
快速开始
一、流量控制
为什么要进行流量控制?
接收窗口不足,减少丢包,避免浪费网络资源
流量控制的手段(点对点):
接收方窗口大小来控制
一种特殊情况是,接收方窗口为0时怎么处理
发送方开启一个定时器,隔一段时间发个测试报文去询问
二、拥塞控制
为什么要进行拥塞控制?
避免过多数据注入网络,避免路由和链路过载,丢包浪费网络资源
拥塞控制的手段:
慢开始、加法增大、乘法减小、快重传、快恢复
几个概念:
MSS
拥塞窗口、接收窗口、发送窗口
超时重传和快重传是同时存在的:
超时重传是发送方未在计时器时间内收到确认而进行的重传
快重传是接收方收到不连续数据段后会发送3次相同的确认,发送方接收到3次确认后进行的重传
流量控制
一、流量控制
1、为什么要进行流量控制?
如果接收方的缓存区满了,发送方还在疯狂的发送数据
接收方只能把收到的数据包丢掉,大量的丢包会极大的浪费网络资源
所以要进行流量控制
2、什么是流量控制?
让发送方的发送速率不要太快,让接收方来得及接收处理
原理
通过确认报文中窗口字段来控制发送方的发送速率
发送方的发送窗口大小不能超过接收方给出的窗口大小
当发送方收到接收窗口的大小为0时,发送方就会停止发送数据
二、流量控制的特殊情况
有一种特殊情况
一开始,接收方给发送方发送了0窗口的报文段
后面,接收方又有了一些存储空间,给发送方发送的非0窗口的报文段丢失了
发送方的发送窗口一直为零,双方陷入僵局
解决方案
当发送方收到0窗口通知时,这时发送方停止发送报文
并且同时开启一个定时器,隔一段时间就发个测试报文去询问接收方最新的窗口大小
如果接收的窗口大小还是为0,则发送方再次刷新启动定时器
三、总结
流量控制,是点对点通信的控制。
拥塞控制
一、拥塞控制介绍
防止过多的数据注入到网络中,避免网络中的路由器或链路过载
拥塞控制是一个全局性的过程涉及到所有的主机、路由器以及与降低网络传输性能有关的所有因素
是大家共同努力的结果
相比而言,流量控制是点对点通信的控制
二、概念及缩写介绍
1、几个概念介绍
慢开始(slow start,慢启动)
拥塞避免(congestion avoidance)
快速重传(fast retransmit)
快速恢复(fast recovery)
2、几个缩写
MSS(Maximum Segment Size):每个段最大的数据部分大小,在建立连接时确定(比如接收端每个段的大小为1460,发送端每个段的大小为1412)
cwnd(congestion window):拥塞窗口
rwnd(receive window):接收窗口
swnd(send window):发送窗口
swnd = min(cwnd, rwnd)
3、关于MSS的详细解释
在TCP连接的建立阶段,双方会通过TCP的三次握手过程中的选项字段来交换各自支持的MSS值,然后双方会选择较小的MSS值作为通信中的最大有效载荷大小。
使用MSS有以下几个作用:
避免分片:通过协商MSS,TCP可以确保发送的数据包不超过最小的MTU,从而避免分片的发生,提高传输效率。
减少丢包的影响: 如果一个数据包丢失,只需要重新传输一个较小的MSS大小的数据段,而不是整个大数据包,这有助于减小丢包对通信性能的影响。
适应网络环境: MMS的协商可以让TCP适应不同的网络环境。不同的网络可能有不同的MTU,通过协商MSS,TCP可以选择最适合当前网络的数据包大小,提高通信的稳定性和效率。
总的来说,MSS在TCP通信中起到了优化数据传输的作用,使得通信双方能够更好地适应网络的特性,提高通信的效率和可靠性。
4、窗口的解释
窗口的大小是如何确定的?
窗口大小 = 窗口字段的值 * 2^窗口缩放因子
选项首部处窗口的缩放系数是在建立连接时双方互相告知对方的
连接时告知对方我的窗口大小和缩放因子
对方发过来的发送窗口大小
三、拥塞控制的方法
1、慢开始
cwnd的初始值比较小,然后随着数据包被接收方确认(收到一个ACK)
cwnd就成倍增长(指数级)
2、拥塞避免
ssthresh(slow start threshold):慢开始阈值,cwnd达到阈值后,以线性方式增加
拥塞避免(加法增大):拥塞窗口缓慢增大,以防止网络过早出现拥塞
乘法减小:只要网络出现拥塞,把ssthresh减为拥塞峰值的一半,同时执行慢开始算法(cwnd又恢复到初始值)
当网络出现频繁拥塞时,ssthresh值就下降的很快
3、快重传
接收方
每收到一个失序的分组后就立即发出重复确认
使发送方及时知道有分组没有到达
而不要等待自己发送数据时才进行确认
发送方
只要连续收到三个重复确认(总共4个相同的确认),就应当立即重传对方尚未收到的报文段
而不必继续等待重传计时器到期后再重传
我的理解
情景一:
接收窗口和发送窗口都为400,发送方发送了1-100、101-200、201-300、301-400四个分片数据,
接收方收到数据后,接收窗口填满,发送确认号401给发送方
情景二:
接收窗口和发送窗口都为400,发送方发送了1-100、101-200、201-300、301-400四个分片数据,
接收方接收到1-100、101-200、201-300三片数据,301-400接收方未接收到,
接收窗口未填满,在等待一段时间后发送确认号301给发送方
情景三:
接收窗口和发送窗口都为400,发送方发送了1-100、101-200、201-300、301-400四个分片数据,
接收方接收到1-100、101-200、301-400三片数据,201-300接收方未接收到,
接收方发现数据不连续,立即发送三次201给发送方
发送方收到三次重复确认后不必等待重传计时器,立即重传201-300,这里可以配合选择确认提高传输效率
4、快恢复
当发送方连续收到三个重复确认,说明网络出现拥塞
就执行“乘法减小”算法,把ssthresh减为拥塞峰值的一半
与慢开始不同之处是现在不执行慢开始算法,即cwnd现在不恢复到初始值
而是把cwnd值设置为新的ssthresh值(减小后的值)
然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大
四、发送窗口的最大值
发送窗口的最大值:swnd = min(cwnd, rwnd)
当rwnd < cwnd时,是接收方的接收能力限制发送窗口的最大值
当cwnd < rwnd时,则是网络的拥塞限制发送窗口的最大值
行者常至,为者常成!