TCP 面试系列第八弹,TCP 快重传与快恢复。
快重传算法首先要求接收方每收到一个失序的报文段后就立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方)而不要等待自己发送数据时才进行捎带确认。
快重传示意图如下:
如上图所示,接收方收到了 M1 和 M2 后都分别发出了确认。现假定接收方没有收到 M3 但接着收到了 M4。显然,接收方不能确认 M4,因为 M4 是收到的失序报文段(按照顺序的 M3 还没有收到)。
根据之前介绍的 TCP 可靠传输原理,接收方可以什么都不做,也可以在适当时机发送一次对 M2 的确认。但按照快重传算法的规定,接收方应及时发送对 M2 的重复确认,这样做可以让发送方及早知道报文段 M3 没有到达接收方。因此,接下来,发送方发送 M5 和 M6 后,接收方收到后,也还是要再次发出对 M2 的重复确认。
快重传算法规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段 M3,而不必继续等待为 M3