论文部分内容阅读
TCP最重要并且最复杂的概念之一就是其处理超时和重传的方式,和其他可靠的协议一样,TCP希望目的站成功地从数据流中接收新的字节之后能够回送确认信息。每发出一个报文段,TCP就设定一个定时器并等待确认信息。如果在报文段中的数据未确认之前定时器超时,TCP就认为该报文段已经丢失或出现损坏,从而重传这一报文段。 在理论上,测定一个往返时间样本是很简单的,只需把收到确认信息的时间值减去发送这个报文段的起始时间值即可。但是,存在着这样的一种情况,TCP数据报文段重发后,当确认到达的时侯,无法确定这次确认是对于首次发送的报文的确认,还是对于后来重发的报文的确认,即TCP重传二义性问题(retransmission ambiguity)。 对于TCP重传确认中的二义问题,目前主要有两种解决方案:一种是Karn算法(Karn’s Algorithm),另一种是TCP时间戳选项(TCP Timestamps option)。本文将提出一种新的解决方法:用TCP报文头中四位保留位通过置位来解决这一问题,并对已有的两种方案和置位法进行讨论。 在介绍TCP的时候把它当做TCP/IP互联网协议族的一部分,但它是一个独立的通用协议,也适用于别的传输系统。例如,由于TCP极少参与底层网络的操作,它除了在复杂的互联网上运行之外,还可以在以太网之类的简单网络上运行。实际上,TCP的应用十分广泛。现在全球每时每刻有着无法估量的巨大通信量是基于TCP的,因此TCP报文段错误重传将导致巨大的网络资源的浪费,本文所提出的置位法,适用于大窗口的TCP连接。由于往返时间RTT测量方法所导致的错误重传,较之Karn算法,可避免由于采样率远远小于数据率而导致的错误重传。而且在于解决TCP的重传二义性方面,置位法占用的比特数,远远少于时间戳选项。 RFC 2988中指出“唯一的TCP能安全的使用重传报文段的情况是当TCP的时间戳选项被使用的时候,因为时间戳选项去除了是哪个数据报文段触发了确认报文段的二义性问题”,置位法的出现使得这一情况并不唯一。