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重传计时器浅析

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

关于TCP乱序和重传的问题

TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面。所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获。关于TCP这个协议的细节,我还是推荐你去...
  • cws1214
  • cws1214
  • 2016年09月04日 09:50
  • 6948

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

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

关于TCP乱序和重传的问题

TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面。所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获。关于TCP这个协议的细节,我还是推荐你去...

linux TCP超时重传

TCP超时重传是保证TCP可靠性传输的机制之一,当超时后仍没有收到应答报文,就重传数据包并设置超时时钟(超时时间一般增大到原超时时间2倍);直到收到应答报文或超过最大重试次数。 linux TC...
  • Morphad
  • Morphad
  • 2013年06月04日 11:16
  • 14476

TCP详解(3):重传、流量控制、拥塞控制……

数据传输  在TCP的数据传送状态,很多重要的机制保证了TCP的可靠性和强壮性。它们包括:使用序号,对收到的TCP报文段进行排序以及检测重复的数据;使用校验和来检测报文段的错误;使用确认和计时器来检测...
  • kzq_qmi
  • kzq_qmi
  • 2015年07月18日 10:46
  • 7205

一站式学习Wireshark(四):网络性能排查之TCP重传与重复ACK

一站式学习Wireshark(四):网络性能排查之TCP重传与重复ACK

四-网络性能排查之TCP重传与重复ACK

TCP错误恢复功能: TCP的错误恢复功能是定位,诊断及修复网络延时的最佳工具。延时可以在单程也可以往返方向测量。高延时是网络管理员的头号大敌。本节我们讨论TCP高延时是如何导致序列号和确认号乱...

TCP慢启动、拥塞避免、快速重传、快速恢复

原文地址:http://blog.csdn.net/itmacar/article/details/12278769 作者总结的很好,收藏学习! 为了防止网络的拥塞现象,TCP提出了一系列的拥塞控...
  • GS_008
  • GS_008
  • 2016年03月18日 13:03
  • 288

TCP的核心系列 — 重传队列的更新和时延的采样(二)

在tcp_clean_rtx_queue()中,并非对每个ACK都进行时延采样。是否进行时延采样,跟这个ACK是否为 重复的ACK、这个ACK是否确认了重传包,以及是否使用时间戳选项都有关系。 本文...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TCP的重传
举报原因:
原因补充:

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