TCP的重传

原创 2007年09月26日 14:21:00
最近在做TCP相关的分析, 在设计重传检测时,对于重传的具体规定有点犯糊涂了,RFC793是这么描述的:When the TCP transmits a segment containing data, it puts a copy on a retransmission queue and starts a timer; when the acknowledgment for that data is received, the segment is deleted from the queue.  If the acknowledgment is not received before the timer runs out, the segment is retransmitted. RFC里只简单地说segment需要被重传,如何重传呢?重传报文是否一定要于原报文完全一致呢?是否可以多个报文组成一个大报文重传呢?还是可以split成多个?重传的边界是否必须是和原报文一致呢?

       这些问题的答案严重影响设计的复杂程度,在网上搜索了一通,无果,于是发了条短信给以前的同事,呵呵,讨论了半天,也没得出确定的结论。今天又看了一下《TCP/IP Illustrated, Volume 1, The Protocols》,在21章居然提到了这个问题,“When TCP times out and retransmits, it does not have to retransmit the identical segment again. Instead, TCP is allowed to perform repacketization, sending a bigger segment, which can increase performance. (Naturally, this bigger segment cannot exceed the MSS announced by the other receiver.) This is allowed in the protocol because TCP identifies the data being sent and acknowledged by its byte number, not its segment number.” 所以说重传报文完全没有必要和原报文一致,是可以把多个报文重组为一个大的报文进行重传的。

       在网上下载了一个开源的TCP/IP协议栈(http://sics.se/~sdam/lwip/),研究了一下TCP的实现,因为TCP是基于字节流的,所以很自然就可以处理传输过程中出现的边界不对齐,一个报文分为多个处理,多个报文合并为一个等等情况,看来这些情况都是有可能出现,要做一个健壮的设计,这些情况都应该能够处理。

       一直以为自己对TCP协议还是比较了解的,结果发现一个重传问题都搞不定,关于TCP的RFC那么多,我一个都没有完整看过。今天翻看《TCP/IP Illustrated, Volume 1, The Protocols》时,发现不少知识点已经有点不认识我了,唉,看来还是应该扎扎实实多看点书地。。。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

TCP超时与重传

  • 2012-07-03 15:40
  • 669KB
  • 下载

liunx下TCP的超时与重传

  • 2011-05-25 11:53
  • 669KB
  • 下载

27-TCP 协议(快重传与快恢复)

很遗憾的是,这里一节我没办法用实验演示给你看,但是我尽量用文字和图叙述清楚。慢启动和拥塞避免算法是在 1988 年提出的,而快重传和快恢复是 1990 年提出的。既然这两个新算法是时隔两年后才提出的,...

TCP重传计时器浅析

  • 2014-05-29 14:10
  • 692KB
  • 下载

转载:TCP超时重传机制探索

转载来自:黑夜路人的文章,位置:http://blog.csdn.net/heiyeshuwu/article/details/46402517 TCP超时重传机制探索 作者:...

TCP快速重传与快速恢复原理分析

超时重传是TCP协议保证数据可靠性的一个重要机制,其原理是在发送一个数据以后就开启一个计时器,在一定时间内如果没有得到发送数据报的ACK报文,那么就重新发送数据,知道发送成功为止。这是数据丢包的情况下...

TCP可靠传输及流量控制系列三:重传时间RTO计算

RTO的计算 1、数据结构 TCP中用于计算重传时间RTO的数据结构定义在tcp协议控制块中。 struct tcpcb { ....... /*动态计算的数据包发送确认的往返时间*/ s...

TCP接收到重叠数据(overlap)后的行为解析-附带一个有关Delay ACK和超时重传的优化

本文写于国庆长假第一天早晨,正好碰到今天热线值班,终于不用假期出去添堵折腾了(14年来[自离开高中],从来没有过过一个完整的可以休息的假期!预定了N次在家的假期,失败了N次,谎称过几次加班,但也不是长...
  • dog250
  • dog250
  • 2016-10-01 09:18
  • 2440

网络编程基础(5)-协议概要-TCP的超时重传

在两端通信过程中,发送的数据和确认应答都存在丢失的可能。如下图: 对此,TCP规定发送数据时设置一个重传定时器,如果在定时器溢出的时候还没有收到该数据的确认,那么重传该数据。 一方面TCP确实需要...

TCP超时重传

TCP提供可靠的运输层。它使用的方法之一就是确认从另一端收到的数据。但数据和确认都有可能会丢失。TCP通过在发送时设置一个定时器来解决这种问题。如果当定时器溢出时还没有收到确认,它就重传该数据。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)