主要内容:
- 超时与重传简单实例(见TCP/IP详解)
- 设置超时重传方法
- 基于计时器重传
- 快速重传
- 带选择确认的重传
- 伪超时与重传
- 包失序与包重复
- 目的度量
- 重新组包
- 与TCP重传相关的攻击
TCP重传机制
由于下层IP网络层或则路由器可能出现丢失、重复、失序包的情况、TCP要提供可靠数据传输服务必须cover住这些丢包重包异常情况并能够做出正常的处理。
注意,接收端给发送端的Ack确认只会确认最后一个连续的包,比如,发送端发了1,2,3,4,5一共五份数据,接收端收到了1,2,于是回ack 3,然后收到了4(注意此时3没收到),此时的TCP会怎么办?我们要知道,因为正如前面所说的,SeqNum和Ack是以字节数为单位,所以ack的时候,不能跳着确认,只能确认最大的连续收到的包,不然,发送端就以为之前的都收到了。
TCP的重传指:重传尚未确认的数据,TCP有两套独立的机制来完成重传:一是基于时间的,二是基于确认信息的构成。第二种比第一种更加高效。
(1)基于时间重传:TCP在发送数据的时候回设置一个计时器,若计时器超时任未收到数据的确认信息,则会引发相应的超时或则计时器的重传操作,计时器超时称为重传超时RTO(Retransmission Timeout)
(2)基于确认信息的构成重传称为快速重传:在没有发生延时的情况下,若TCP积累确认无法返回新的ACK或则当ACK包含的选择确认信息SACK表明出现失序报文段时,快速重传会推断出现丢失包。
1.设置超时重传RTO
TCP超时和重传的基础是:根据给定连接的数据传输往返延时RTT(Round-Trip Time)来设置RTO。
设置一个合理的RTO对于网络整体利用率至关重要。TCP会在传输过程中采样一些数据传输该确认信息所需要的时间的一些样本。每个此类的测量结果称为RTT样本。TCP首先根据一段时间内的样本值建立好的估计值,第二步是基于估计值设置RTO。RTO设置得当是保证TCP性能的关键。
下面主要介绍一些计算RTO的方法,只做概述ÿ