TCP的重传机制是什么?
TCP的重传机制是什么?
题眼:重传机制的目的和区别
数据在网络传输过程中,有可能存在数据丢失的情况,这个时候需要使用TCP的重传机制。常见的重传机制有四种:
- 超时重传:重传机制的其中一个方式,就是在发送数据时,设定一个定时器,当超过指定的时间后,没有收到对方的 ACK 确认应答报文,就会重发该数据。缺点:RTO时间是个动态值,可能会变得很长,另外还存在重传单个还是全部的问题。
- 快速重传:当收到三次同样的ACK就认为存在丢失,不再等超时直接重传。也就是不以时间为驱动,改为以数据驱动。优点:没有了超时时长的问题;缺点:依然没有解决重传单个包还是全部。
- SACK方法:选择性确认。这种方式需要在 TCP 头部「选项」字段里加一个 SACK 的东西,它可以将已收到的数据的信息发送给「发送方」,这样发送方就可以知道哪些数据收到了,哪些数据没收到,知道了这些信息,就可以只重传丢失的数据。
- Duplicate SACK:又称 D-SACK,其主要使用了 SACK 来告诉「发送方」有哪些数据被重复接收了。
参考答案:
TCP的可靠性是通过应答和重传机制来实现的,如果在传输过程中出现了数据丢失的情况,就需要重新发送。常见的重传机制有四种:超时重传、快速重传、SACK和D-SACK。
超时重传最简单,就是设置一个定时器,如果没有收到答复就认为没有发送成功,会再发一次。它的缺点是RTO时间是个动态值,可能会变得很长,另外还存在重传单个还是全部的问题。快速重传解决了超时重传等待时长的问题,当收到三次相同的ACK后,就直接认为发送失败,开始重传。它一样没有解决重传单个包还是全包的问题。SACK和D-SACK重传,会在头部加一个字段,告诉发送方具体是哪个包没收到,这样就可以只发送丢失的包就行了。
引申:什么是快速重传?
