TCP重传
超时重传
在发送数据时,设置一个定时器,当超过指定时间还没收到ACK报文确认应答报文就重发该数据。
发生情况:数据包丢失,确认应答丢失。
超时重传时间RTO一般略大约RTT,并且会根据网络状况动态变化。
快速重传
快速重传以数据驱动重传,当连续收到三个相同的ACK且在定时器过期之前就触发重传重传报文。
问题:不知道是重传ACK的还是重传所有的。
SACK方法()
也是收到三个相同的ACK就触发重传,不过该方法会在TCP头部加一个sack字段用来将缓存的地图发送给对方,就可以知道哪些数据收到哪些数据没有收到,重传的时候就可以选择性重传。
D-SACK
主要使用SACK让发送方知道有哪些数据被重复接收了。
可以让发送方知道是发出去的包丢失了,还是ACK报文丢失了。
可以知道是否是发送方的包被网络延迟了。