TCP超时与重传

本文介绍了TCP协议中的重传机制,包括基于计时器的重传和基于确认信息的快速重传。阐述了如何设置重传超时时间(RTO),以及在丢包情况下TCP如何通过重复确认(ACK)和选择确认(SACK)进行高效的数据重传。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       TCP拥有两套独立机制来完成重传,一是基于时间,二是基于确认信息的构成。后者通常比前者更有效。

       TCP在发送数据时会设置一个计时器,若至计时器超时仍未收到数据确认信息,则会引发相应的超时或基于计时器的重传操作,计时器超时称为重传超时(RTO)。另一种方式的重传称为快速重传,通常发生在没有延时的情况下。若TCP累计确认无法返回新的ACK,或者当ACK包含的选择确认信息(SACK)表明出现失序报文段时,快速重传会推断出现丢包。

设置重传超时

TCP超时与重传的基础是怎样根据给定连接的RTT设置RTO。

经典方法和标准方法
重传二义性:假设一个包的传输出现超时,该数据包会被重传,接着收到一个确认信息。那么该信息是对第一次还是第二次传输的确认就存在二义性。

带时间戳选项的RTT测量:TCP时间戳选项(TSOPT)作为PAWS算法的基础,还可用作RTT测量(RTTM)。它允许发送者在返回的对应确认信息中携带一个32比特的数。时间戳值(TSV)携带于初始SYN的TSOPT中,并在SYN+ACK的TSOPT的TSER部分返回,依次设定srtt、rttvar与RTO的值。
时间戳选项使得发送端即使在丢包、延时、失序的情况下也能测量RTT。


基于计时器的重传
       一旦TCP发送端得到了基于时间变化的RTT测量值,就能据此设置RTO,发送报文段时应确保重传计时器设置合理。TCP将超时重传视为相当重要的事件,当发生这种情况时,它通过降低当前数据发送率来对此快速响应。两种方法实现:
    1.基于拥塞控制机制减小发送窗口大小
    2.每当一个重传报文段被再次重传时,则增大RTO退避因子。


快速重传
       快速重传机制基于接收端的反馈信息来引发重传,而非重传计时器的超时。与超时重传相比,快速重传更能有效地修复丢包情况。当接收到失序报文段时,TCP需要立即生成确认信息(重复ACK),并且失序情况表明在后续数据到达前出现了丢段,即接收端缓存出现了空缺。发送端的工作即为尽快的、高效地填补该空缺。
       当失序数据到达时,重复ACK应该立即返回,不能延时发送。原因在于使发送端尽早得知失序报文段,并告诉其空缺在哪。当采用SACK时,重复ACK通常也包含SACK信息,利用该信息可获知多个空缺。
TCP发送端在观测到至少dupthresh(通常为3)个重复ACK后,即重传可能丢失的数据分组,而不必等到重传计时器超时。

带选择确认的重传

       TCP接收端可提供SACK功能,通过TCP头部的累积ACK号字段来描述其接收到的数据。ACK号与接收端缓存中的其他数据之间的间隔称为空缺。
       TCP发送端的任务是通过重传丢失的数据来填补接收端
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值