TCP超时与重传

由于下层网络层(IP)可能出现丢失、重复或失序包的情况, TCP协议提供可靠数据传输服务。为保证数据传输的正确性,TCP重传其认为已丢失的包。TCP根据接收端返回至发送端的一系列确认信息来判断是否出现丢包。当数据段或确认信息丢失, TCP启动重传操作,重传尚未确认的 数据。TCP拥有两套独立机制来完成重传,一是基于时间,二是基于确认信息的构成。第二种方法通常比第一种更高效。

TCP在发送数据时会设置一个计时器,若至计时器超时仍未收到数据确认信息,则会引发相应的超时或基于计时器的重传操作,计时器超时称为重传超时(RTO)。另一种方式的重传称为快速重传,通常发生在没有延时的情况下。若TCP累积确认无法返回新的ACK,或者当ACK包含的选择确认信息(SACK)表明出现失序报文段时,快速重传会推断出现丢包。
超时与重传的概念本身比较简单,但是实际细节比较复杂,其中RTO的设置是关键,那么如何设置RTO的值呢?
首先需要知道下面的几个概念:
RTT(Round Trip Time):往返时延,也就是数据包从发出去到收到对应 ACK 的时间。RTT 是针对连接的,每一个连接都有各自独立的 RTT。
RTO(Retransmission Time Out):重传超时,也就是前面说的超时时间。
srtt:平滑的RTT估计值。
rttvar :平方偏差的EWMA。

具体的计算方法在这里不在深究。

快速重传,根据接收端的反馈信息来引发重传,而非重传计时器的超时,算法可以概况如下:TCP发送端在观测到至少dupthresh个重复ACK后,即重传可能丢失的数据分组,而不必要等到重传计时器超时。当然也可以同时发送新的数据。根据重复ACK推断的丢包通常与网络拥塞有关,因此伴随快速重传应触发拥塞控制机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值