TCP重传,滑动窗口,流量控制,拥塞控制
TCP重传机制:
- 超时重传
- 快速重传
- SACK
- D-SACK
通过序列号与确认应答判断是否要重传
超时重传:
超过指定时间没有收到确认应答报文,就会重发该数据
触发超时重传的情况:
- 数据包丢失
- 确认应答丢失
RTT:数据发送时刻到接受到确认的时刻的差值 包的往返时间
RTO:超时重传时间
RTO太长或太短:
- 太长,效率差,重发慢,丢了半天才重发,性能差
- 太短:没有丢就重发,增加网络拥塞,导致更多的超时
超时重传时间RTO的值应该略大于报文往返RTT的值
如果超时重发的数据,再次超时的时候,又需要重传,TCP的策略是超时间隔加倍
也就是每次遇到一次超时重传的时候,都会将下一次超时时间间隔设为先前值的两倍。两次超时,就说明网络环境差,不宜频繁发送
超时重传缺点:
超时周期长,用快速重传机制来解决
快速重传
不以时间为驱动,而是以数据驱动重传
当收到三个相同的ACK报文,会在定时器过期之前,重传丢失的报文段
缺点:不知道重传一个,还是重传所有的问题
于是有了SACK方法:选择性确认
在TCP头部加一个SACK,可以将已收到的数据的信息发送给发送方
这样就可以知道哪些数据接收到了,哪些数据没收到,知道了这些信息,就可以只重传丢失的数据了
相当于是快速重传知道了该重传一个还