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重传

转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese    介绍   TCP的主要任务是很简单:打包和发送数据。TCP与...
  • xiongyingzhuantu
  • xiongyingzhuantu
  • 2014年10月09日 10:30
  • 14440

TCP超时重传、滑动窗口、拥塞控制、快重传和快恢复

TCP超时重传  原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成功为止。   影响超时重传机制协议效率的一个关键参数是重...
  • qq_26499321
  • qq_26499321
  • 2017年05月08日 19:33
  • 690

TCP重传计时器浅析

  • 2014年05月29日 14:10
  • 692KB
  • 下载

TCP重传缓冲区

TCP重传缓冲区的攻击与防御策略分析
  • dingzongfu
  • dingzongfu
  • 2016年01月28日 00:25
  • 508

TCP的超时重传机制与拥塞避免

TCP超时与重传机制      TCP协议是一种面向连接的可靠的传输层协议,它保证了数据的可靠传输,对于一些出错,超时丢包等问题TCP设计的超时与重传机制。其基本原理:在发送一个数据之后,就开启一...
  • ahafg
  • ahafg
  • 2016年04月04日 21:45
  • 7132

Tcp重传

http://www.vants.org/?post=36 Ø  为什么TCP存在重传 TCP是一种可靠的协议,在网络交互的过程中,由于TCP报文是封装在IP协议中的,IP协议的无连接特性...
  • wwww4
  • wwww4
  • 2015年08月19日 15:29
  • 1208

TCP超时重传

TCP提供可靠的运输层。它使用的方法之一就是确认从另一端收到的数据。但数据和确认都有可能会丢失。TCP通过在发送时设置一个定时器来解决这种问题。如果当定时器溢出时还没有收到确认,它就重传该数据。 ...
  • zhuaimiao1
  • zhuaimiao1
  • 2015年09月26日 23:01
  • 440

TCP重传分析

0x01 缘由      最近在结合linux tcp/ip协议栈,以及上层socket编程来进行相关学习,学习过程中发现一些有趣的东西,但是也想做做记录。于是有了这篇文章。      tcp超时...
  • pangyemeng
  • pangyemeng
  • 2017年09月15日 10:52
  • 271

TCP的超时与重传

1. TCP提供可靠连接的途径是通过接受方确认发送方的数据实现的,数据和确认都可能丢失,这就需要及时发现数据或者确认丢失而进行重传。重传最重要的是要确定超时间隔和重传频率。 2. 对于每个连接,TCP...
  • jsh13417
  • jsh13417
  • 2013年08月24日 11:04
  • 11660

TCP/IP详解--几类定时器的作用(重传 保活定时器)

与数据链路层的ARQ协议相类似,TCP使用超时重发的重传机制。即:TCP每发送一个报文段,就对此报文段设置一个超时重传计时器。此计时器设置的超时重传时间RTO(Retransmission Time...
  • yusiguyuan
  • yusiguyuan
  • 2014年04月02日 21:33
  • 2853
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TCP的重传
举报原因:
原因补充:

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