TCP-流量控制
如果接收方的缓存区满了,发送方还在发送数据
接收方只能把收到的数据包丢弃
所以要流量控制
什么是流量控制
发送方发送速率不要太快,让接收方来的及处理
原理
通过确认报文中窗口字段控制发送方的发送速率
发送方的发送窗口大小不能超过接收方给的窗口大小
发送方收到的接收窗口大小为0,发送方停止发送
特殊情况
接收方给发送方发送窗口0的报文
后面接收方给发送方的非0报文丢失了
发送方窗口一直为0
解决方案
发送方收到0窗口通知,发送方停止发送报文
开启定时器,隔一段时间发送报文区询问接收方窗口大小
接收窗口为0,刷新启动定时器
TCP-拥塞控制
拥塞控制
防止过多数据到网络中
避免网络路由器或链路过载
拥塞控制是个全局过程
TCP-拥塞控制-方法
慢开始(slow start )
1-2-4-8 包数目成指数增长
cwnd初始值比较小,然后随着数据包被接收方确认
cwnd成倍增长
拥塞避免(congestion avoidance)
ssthresh(slow start threshold)慢开始阀值,cwnd达到阀值后,线性方式增大
拥塞避免(加法增大)拥塞窗口缓慢增大,防止网络过早出现拥塞
乘法减小,网络拥塞,ssthresh减半,执行慢开始算法
网络出现频繁拥塞,ssthresh下降的很快
快速重传(fast retransmit)
一旦发现包丢了,发送最后接收到的包的确认
,重复三次之后,接收方接收到确认,立即发送丢失的包
快速恢复(fast recovery)
从ssthresh值开始进行慢开始
MSS(Maximum Segment Size)每个段最大的数据部分大小
建立连接时确认
cwnd(congestion window)拥塞窗口
rwnd(receive window)接收窗口
swnd(send window)发送窗口
swnd = min(rwnd,cwnd)