TCP重传机制
tcp重传机制包括超时重传、快速重传、带选择确认的重传(SACK)、重复SACK四种
超时重传:
超时重传是tcp协议保证数据可靠性的一个重要机制
原理是在发送某一个数据以后开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,就会重新发送数据,直到发送成功为止
快速重传:
快速重传不以时间为驱动,以数据驱动,基于接收端的反馈信息来引发重传
快速重传流程如下:
但是快速重传只解决了超时时间的问题,但是它还存在一个问题,那就是重传的时候是重传之前的一个,还是重传所有的问题
带选择确认的重传(SACK):
TCP 提供了带选择确认的重传(即 SACK,Selective Acknowledgment)以解决应该重传多少个包的问题。
SACK机制就是,在快速重传的基础上,接收方返回最近收到报文段的序列号范围,这样发送方就知道接收方哪些数据包是没收到的。这样就很清楚应该重传哪些数据包。
流程如下:
发送⽅收到了三次同样的 ACK 确认报⽂,于是就会触发快速重发机制,通过 SACK 信息发现只有200~299 这段数据丢失,则重发时,就只选择了这个 TCP 段进⾏重发。
重复SACK:
D-SACK,英文是 Duplicate SACK,是在 SACK 的基础上做了一些扩展,主要用来告诉发送方,有哪些数据包,自己重复接受了。
DSACK 的目的是帮助发送方判断,是否发生了包失序、ACK 丢失、包重复或伪重传。让 TCP 可以更好的做网络流控。
流程如下:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)