超时重传
触发条件:
数据包丢失;确认应答号丢失;
超时重传时间应该略大于RTT;
重发数据再超时,就超时时间间隔加倍;
快速重传
不以时间为驱动,以数据驱动;
连续收到3个相同的ack确认号,表示有数据需要重传,比如seq2丢失,345都发送成功,只会返回ack2,这就触发重传机制;
弊端:
如果23都丢失了,456发送成功都回复ack2,是重传一个还是所有;
重传一个2,重传3的话还需要再连续收到三个相同ack才重传;
重传所有,重复的456多余重传;
SACK
TCP头部加入SACK,将收到的数据信息发送给发送方,就可以知道需要重传哪些丢失的数据;