快捷搜索: 王者荣耀 脱发

计算机网络——重传机制

超时重传:

超时重传顾名思义就是当发送数据一定时间后没有收到回应,那么就会触发超时重传,那么超时重传的时间限制是多少呢。在计网基础学习中我们接触了时延RTT,RTT表示一次发送一次回应的总时间,RTT的时长是不确定的。而RTO是超时重传的时间,RTO的时间会略大于RTT的时间。有人会问RTT时间不是不确定的吗,怎么每次都确定RTO比RTT大一点呢?这个问题应该问学概率统计的哈哈哈。

但是所有丢失的信息都进行超时重传效率会很低,因为要等待一段时间。

快速重传:

当发送的连续的数据包中有一个包丢失了,那么后续包的期望值Ack就会定位到那个包,例如一组包的序号分别为1,11,21,31,41,其中11丢失了,那么21,31,41的ack期望号Ack都会设置为11的期望接收号Ack。这样就可以快速重传信息。但是有个大问题,就是如果1包11包同时丢了,那么21,31,41都会提示1包的Ack,那么发送方就不知道是补上1包还是补上1包和11包。

SACK:

这种⽅式需要在 TCP 头部「选项」字段⾥加⼀个SACK的东⻄,它可以将缓存接收信息的地图发送给发送方,这样发送方就可以知道哪些数据收到了,哪些数据没收到,知道了这些信息,就可以只重传丢失的数据。

D-SACK:

触发重发机制有两种情况,一个是发送的数据包丢失了,还有一种是接收到数据了,但是应答包丢失了。前面三种都是针对发送包丢失了,而D-SACK则是针对应答包丢失的情况。当应答包丢失后,发送方触发重传机制,此时接收方已有这部分数据,所以就会接祖SACK回复这部分我有了。还有一种情况是数据包发送延迟了,发送发触发快速重传,接收方接收后原先的超时数据包到达了,此时就可以用SACK表示我有数据包了。

使用D-SACK的优点

1.可以让发送方知道,是发送的包丢失了,还是回应的ACK丢失了

2.可以知道是不是发送方的数据包被网络延迟了

3.可以知道网络中是不是把发送方的数据包复制了

经验分享 程序员 微信小程序 职场和发展