网络正常和网络异常情况:
- 数据顺利到达对端,对端顺利响应ACK;
- 数据包中途丢失;
- 数据包顺利到达,但ACK报文中途丢失;
- 数据包顺利到达,但对端异常未响应ACK或被对端丢弃。
超时重传
TCP每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间到了,但还没有收到确认,就要重传这一报文段,这个就叫做“超时重传”。
重传超时时间RTO:
RTO是指发送端发送数据后、重传数据前等待接收方确认该数据报文ACK的时间。
RTO是影响超时重传机制协议效率的一个关键参数:
- 设长了,重发就慢,没有效率、性能差;
- 设短了,重发就快,会增加网络拥塞,导致更多的重传,更多的超时导致更多的重发。
RTO设置:
TCP协议使用自适应算法以适应互联网分组传输时延的变化。TCP监视每个连接的性能,由每一个TCP的连接情况推算出合适的RTO值。当连接时延性能发生变化时,TCP也能够相应地自动修改RTO的设定,以适应这种网络的变化。
连接往返时间RTT:
引入RTT是为了动态的设置RTO,RTT指发送端从发送TCP包开始到接收到它的相应所耗费的传输时间。
RTO与RTT不同之处如图所示:
所以,自适应重传算法的关键就在于对当前RTT的准确估计,以便适时调整RTO。