参考:CSDN_TCP的重传机制_博主.Pr Young,对描述进行了整理与结合个人的理解进行编写。
在发送数据时,设定一个定时器,当超过指定的时间后,没有收到对方的 ACK 确认应答报文,就会重发该数据。
当数据包丢失或确认应答ACK丢失之后,将发生超时重传。



工作方式与SACK一样,主要是针对ack丢失的情况和网络延时的情况,SACK有不同的表示方式。
Duplicate SACK又称 D-SACK,其主要使用了 SACK 来告诉「发送方」有哪些数据被重复接收了。
解释图中表示内容:
接收方发给发送方的两个 ACK 确认应答都丢失了。第一个包的定时器到了并没有收到接收方回复的ACK确认,将重传第一个数据包(3000 ~ 3499)。
好巧不巧,这次重传的数据回复的ACK终于正常被发送方收到,但ACK内容是:ACK=4000、SACK=3000~3499,意为成功接收了前面的报文,期待下一个数据包编号是4000开始,但收到了重复的数据:3000~3500。
发送方根据回复的ACK、SACK知道发送的数据没有丢,只是接收方的 ACK 确认报文丢了。
