- 浏览: 37020 次
- 性别:
- 来自: 安徽
最新评论
为什么TCP存在重传
TCP是一种可靠的协议,在网络交互的过程中,由于TCP报文是封装在IP协议中的,IP协议的无连接特性导致其可能在交互的过程中丢失,在这种情况下,TCP协议如何保障其传输的可靠性呢?
T C P通过在发送数据报文时设置一个超时定时器来解决这种问题,如果在定时器溢出时还没有收到来自对端对发送报文的确认,它就重传该数据报文。
导致重传的常见状况
1 数据报传输中途丢失
发送端的数据报文在网络传输的过程中,被中间链路或中间设备丢弃,这个过程如下图所示:
http://www.vants.org/content/plugins/kl_album/upload/201204/5e981114fc891f777000c53d4289de7720120428235735832498302.png
2 接收端的ACK确认报文在传输中途丢失
发送端发送的数据报文到达了接受端,接受端也针对接收到的报文发送了相应的ACK确认报文,但是,这个ACK确认报文被中间链路或中间设备丢弃了,该过程如下图所示:
http://www.vants.org/content/plugins/kl_album/upload/201204/6664785ef961b21101098c8eff2687fa201204282357351936960557.png
3 接收端异常未响应ACK或被接收端丢弃
发送端发送的数据报文到达了接收端,但是,接收端由于种种原因,直接忽略该数据报文,或者接收到报文但并没有发送针对该报文的ACK确认报文,这个过程如下图所示:
http://www.vants.org/content/plugins/kl_album/upload/201204/a573654c1b0efba94e77278075e9781220120428235736785537663.png
TCP重传间隔时间和TCP重传次数
一般TCP报文的重传超时时间
TCP重传时间间隔有着多种不同的算法,最常见的就是《TCP/IP详解卷1》中关于超时重传的算法。具体算法不再赘述,请大家参考《TCP/IP详解卷1》第21章《TCP的超时与重传》。
SYN报文重传间隔时间
在实际情况下,由于SYN报文是TCP连接的第一个报文,如果该报文在传输的过程中丢弃了,那么发送方则无法测量RTT,也就无法根据RTT来计算RTO。因此,SYN重传的算法就要简单一些,SYN重传时间间隔一般根据系统实现的不同稍有差别,windows系统一般将第一次重传超时设为3秒,以后每次超时重传时间为上一次的2倍,如下图所示:
http://www.vants.org/content/plugins/kl_album/upload/201204/449365268df27cb49eede253c79d1a9f201204282357361466437206.png
报文重传的次数
TCP报文重传的次数也根据系统设置的不同而有区分,有些系统,一个报文只会被重传3次,如果重传三次后还未收到该报文的确认,那么就不再尝试重传,直接reset重置该TCP连接,但有些要求很高的业务应用系统,则会不断的重传被丢弃的报文,以尽最大可能保证业务数据的正常交互。
重传对业务应用的影响
1 保障了业务的可靠性
TCP的重传存在原因就是为了保障TCP的可靠性,正是由于TCP存在重传的机制,那些基于TCP的业务应用在网络交互的过程中,不再担心由于丢包、包损坏等导致的一系列应用问题了。
2 反映网络通讯的状况
由于IP协议的不可靠性和网络系统的复杂性,少量的报文丢失和TCP重传是正常的,但是如果业务交互过程中,存在大量的TCP重传,会严重影响业务系统交互的效率,导致业务系统出现缓慢甚至无响应的情况发生。
一般而言,出现大量TCP重传说明网络通讯的状况非常糟糕,需要站在网络层的角度分析丢包和重传的原因。
在实际的分析过程中,我们如何确认一个TCP报文是重传报文
在实际的数据交互过程中,重传报文一般具有以下两个特征:一是TCP交互序列号突然下降,二是其在TCP报头中的序列号、数据长度、应用数据等参数跟前面某TCP报文一致。
1 序列号突然下降(一般是TCP重传)
在TCP报文传输的过程中,因为其需要不断的交互应用数据,因此,TCP报文的序列号会不断的变大。正常情况下,TCP序列号不会出现下降的情况,出现序列号下降,一般都是TCP的重传报文导致的。如下图所示:
http://www.vants.org/content/plugins/kl_album/upload/201204/d137fb910b47bd09b0e2ade3bedab48720120428235735551345327.png
在上图中,服务器端交互的TCP报文序列号从24481开始一直处于不断上升的趋势,但是服务器的第六个TCP报文序列号却突然下降为20161,这个情形,基本上可以肯定这第六个TCP报文是前面某个报文的重传报文。
2 根据序列号、长度甚至应用数据等确认是哪一个报文的重传。
在数据交互过程中,一般情况下,TCP重传的报文跟传输中被丢弃的报文在序列号、数据长度、应用字段值上都是一样的,我们可以利用这个特征来确定某个具体的TCP报文是否是前面某个报文的重传。下图是一个客户端存在重传的数据流图:
http://www.vants.org/content/plugins/kl_album/upload/201204/41e06ec87c2390d2611758160cf544b7201204282357361572704656.png
在上图中,我们看到客户端第三个报文和第四个报文的序列号(Seq)、下一个序列号(Next Seq)以及载荷长度都是一样的,那么我们可以肯定客户端的第四个报文是客户端第三个报文的重传。
现在很多的网络分析工具的专家诊断系统基本上都可以针对TCP重传直接告警,我们不需要在去深入分析这个过程了,为我们节省了大量的分析时间。
TCP是一种可靠的协议,在网络交互的过程中,由于TCP报文是封装在IP协议中的,IP协议的无连接特性导致其可能在交互的过程中丢失,在这种情况下,TCP协议如何保障其传输的可靠性呢?
T C P通过在发送数据报文时设置一个超时定时器来解决这种问题,如果在定时器溢出时还没有收到来自对端对发送报文的确认,它就重传该数据报文。
导致重传的常见状况
1 数据报传输中途丢失
发送端的数据报文在网络传输的过程中,被中间链路或中间设备丢弃,这个过程如下图所示:
http://www.vants.org/content/plugins/kl_album/upload/201204/5e981114fc891f777000c53d4289de7720120428235735832498302.png
2 接收端的ACK确认报文在传输中途丢失
发送端发送的数据报文到达了接受端,接受端也针对接收到的报文发送了相应的ACK确认报文,但是,这个ACK确认报文被中间链路或中间设备丢弃了,该过程如下图所示:
http://www.vants.org/content/plugins/kl_album/upload/201204/6664785ef961b21101098c8eff2687fa201204282357351936960557.png
3 接收端异常未响应ACK或被接收端丢弃
发送端发送的数据报文到达了接收端,但是,接收端由于种种原因,直接忽略该数据报文,或者接收到报文但并没有发送针对该报文的ACK确认报文,这个过程如下图所示:
http://www.vants.org/content/plugins/kl_album/upload/201204/a573654c1b0efba94e77278075e9781220120428235736785537663.png
TCP重传间隔时间和TCP重传次数
一般TCP报文的重传超时时间
TCP重传时间间隔有着多种不同的算法,最常见的就是《TCP/IP详解卷1》中关于超时重传的算法。具体算法不再赘述,请大家参考《TCP/IP详解卷1》第21章《TCP的超时与重传》。
SYN报文重传间隔时间
在实际情况下,由于SYN报文是TCP连接的第一个报文,如果该报文在传输的过程中丢弃了,那么发送方则无法测量RTT,也就无法根据RTT来计算RTO。因此,SYN重传的算法就要简单一些,SYN重传时间间隔一般根据系统实现的不同稍有差别,windows系统一般将第一次重传超时设为3秒,以后每次超时重传时间为上一次的2倍,如下图所示:
http://www.vants.org/content/plugins/kl_album/upload/201204/449365268df27cb49eede253c79d1a9f201204282357361466437206.png
报文重传的次数
TCP报文重传的次数也根据系统设置的不同而有区分,有些系统,一个报文只会被重传3次,如果重传三次后还未收到该报文的确认,那么就不再尝试重传,直接reset重置该TCP连接,但有些要求很高的业务应用系统,则会不断的重传被丢弃的报文,以尽最大可能保证业务数据的正常交互。
重传对业务应用的影响
1 保障了业务的可靠性
TCP的重传存在原因就是为了保障TCP的可靠性,正是由于TCP存在重传的机制,那些基于TCP的业务应用在网络交互的过程中,不再担心由于丢包、包损坏等导致的一系列应用问题了。
2 反映网络通讯的状况
由于IP协议的不可靠性和网络系统的复杂性,少量的报文丢失和TCP重传是正常的,但是如果业务交互过程中,存在大量的TCP重传,会严重影响业务系统交互的效率,导致业务系统出现缓慢甚至无响应的情况发生。
一般而言,出现大量TCP重传说明网络通讯的状况非常糟糕,需要站在网络层的角度分析丢包和重传的原因。
在实际的分析过程中,我们如何确认一个TCP报文是重传报文
在实际的数据交互过程中,重传报文一般具有以下两个特征:一是TCP交互序列号突然下降,二是其在TCP报头中的序列号、数据长度、应用数据等参数跟前面某TCP报文一致。
1 序列号突然下降(一般是TCP重传)
在TCP报文传输的过程中,因为其需要不断的交互应用数据,因此,TCP报文的序列号会不断的变大。正常情况下,TCP序列号不会出现下降的情况,出现序列号下降,一般都是TCP的重传报文导致的。如下图所示:
http://www.vants.org/content/plugins/kl_album/upload/201204/d137fb910b47bd09b0e2ade3bedab48720120428235735551345327.png
在上图中,服务器端交互的TCP报文序列号从24481开始一直处于不断上升的趋势,但是服务器的第六个TCP报文序列号却突然下降为20161,这个情形,基本上可以肯定这第六个TCP报文是前面某个报文的重传报文。
2 根据序列号、长度甚至应用数据等确认是哪一个报文的重传。
在数据交互过程中,一般情况下,TCP重传的报文跟传输中被丢弃的报文在序列号、数据长度、应用字段值上都是一样的,我们可以利用这个特征来确定某个具体的TCP报文是否是前面某个报文的重传。下图是一个客户端存在重传的数据流图:
http://www.vants.org/content/plugins/kl_album/upload/201204/41e06ec87c2390d2611758160cf544b7201204282357361572704656.png
在上图中,我们看到客户端第三个报文和第四个报文的序列号(Seq)、下一个序列号(Next Seq)以及载荷长度都是一样的,那么我们可以肯定客户端的第四个报文是客户端第三个报文的重传。
现在很多的网络分析工具的专家诊断系统基本上都可以针对TCP重传直接告警,我们不需要在去深入分析这个过程了,为我们节省了大量的分析时间。
发表评论
-
PPPD拨号返回结果码
2015-09-18 11:12 68100: pppd已经断开,或者已经成功建立连接后请求方又中 断 ... -
3G相关定时器说明
2014-08-06 10:05 838计时器和计数器RNC 计 ... -
PDP激活被拒绝原因码表
2012-07-19 20:55 2751om: http://wireless.agilent.com ... -
PDP激活被拒绝原因码表
2012-07-19 20:15 0方便查询:这些值是真正的原因,但要注意分析问题时尤其对二次开发 ... -
MTK NVRAM
2012-06-28 19:50 1613nvram是程序用来搭建FAT文件系统的那一块,是fla ... -
TBF与PDP激活
2012-06-18 21:28 1153PDP先激活,CCCH上下行TBF建立流程如下:1、下行TBF ... -
C语言中的内存对齐问题
2012-05-29 10:31 753.C语言中的内存对齐 ... -
MTK内存管理
2012-04-20 00:36 4532MTK 内存管理 分类: MTK2011- ... -
MTK Timer
2012-04-18 14:33 40811. GPTI_StartItem 要精准很多,但是只能 ... -
WinSocket编程——原始套接字[转]
2012-03-26 09:23 4848WinSocket编程——原始套接字[转] ... -
TCP三次握手各种异常
2012-03-20 11:04 1362和TCP三次握手有关的面试题 分类: 网络 ... -
Windows API串口编程参考
2012-03-15 14:12 3349Windows API串口编程参 ... -
V.24 & V.35
2012-03-12 20:25 918V.24 & V.35 (2011-08 ... -
【C语言】while与for执行效率对比【转】
2012-03-12 19:00 1588【C语言】while与for执行效率对比【转】 C语言 ... -
[转]ASCII,Unicode,UTF-8,GB2312编码之间的关系
2012-03-12 18:59 902[转]ASCII,Unicode,UTF-8,GB231 ... -
NVRAM的简单添加 【转】
2012-02-29 10:14 815NVRAM的简单添加 MTK 在这里我只 ... -
MTK获取基站的cell_id 【转】
2012-02-29 10:07 1026MTK获取基站的cell_id 博客分类 ... -
MTK的HTTP连接方式
2012-02-29 10:08 843MTK的HTTP连接方式 博客分类: ... -
MTK中怎样创建和使用lib
2012-02-28 17:17 696MTK中怎样创建和使用lib 博客分类: MT ... -
MMI 和L4通信【转】
2012-02-28 17:16 1097MMI 和L4通信 博客分类: MTK ...
相关推荐
在一个TCP连接中,TCP每发送一个报文段, 就对此报文段设置一个超时重传计时器。 那么当发送多个报文段时,究竟有几个重传计时器?
TCP重传 滑动窗口 流量控制 拥塞控制 330-371
p164 - p198 TCP重传 滑动窗口 流量控制 拥塞控制
此项设定于主机间的初始通信,并基于接收到的数据包RTT进调整,以形成真正的RTO。图11-1 TCP重传过程的概念视图当数据包被发送出去,但接收没有发
物联网应用的关键技术之一就是要实现嵌入式设备的网络化,其中一种思路就是在...以嵌入式Web服务为例,紧紧围绕嵌入式Web服务器应用的具体要求,详细分析了如何设计并实现TCP重传队列。测试结果表明,该设计思路可行。
9.2.3 在SYN_SENT状态不要重传SYN 78 9.2.4 发送器的糊涂窗口避免机制 78 9.2.5 有RST或SYN标志时强制发送报文段 79 9.2.6 发送MSS选项 80 9.2.7 是否发送时间戳选项 80 9.2.8 发送T/TCP的CC选项 80 9.2.9 根据TCP...
SND.UNA :是个绝对指针,它指向的是已发送但未收到确认的第个字节的序列号,也就是 #2 的第个字节。SND.NXT :也是个绝对指针,它指向未发送但可发送
软件名字叫“TCPUDPDbg”,是一个TCP和UDP协议的网络连接测试工具,支持服务器模式和客户端模式,支持多连接,可同时对多路网络连接进行操作,支持发送汉字,支持十六进制发送和接收方式。非常好用,强烈推荐!
针对TCP重传易导致延时抖动大、降低流媒体播放质量的问题,提出了使用TCP传输实时视频时,播放质量不受TCP重传影响的必要条件,即视频帧发送延时、播放缓冲区延时与网络往返时间需要满足一定的关系式。建立了视频帧...
w5500TCP server解决有时连接断开问题,可以保持客户端和服务器端一直通信
TCP超时和重传机制之停等协议ARQ
练习二 TCP重传机制 任务一 TCP重传机制分析 练习三 TCP拥塞控制机制分析 任务一 TCP拥塞控制分析 第4部分 应用层(3个任务) 实验20 域名服务协议(DNS)分析 练习二 域名查询与高速缓存 任务一 DNS正向查询 实验...
网络协议分析器wireshark在Linux安装的全套软件
本文描述了tcp数据传输的三次握手过程和每个包传输路径,重传方式
TCP/IP协议下的文件传输(包括超过4G的文件) 支持断点续传
列哪个字段TCP有,UDP没有的 (2.0分) 2.0 分 • A、 源端口 • B、 目的端口 • C、 序号 • D、 检验和 我的答案:C 2 传输层可以通过标识不同的应用: (2.0分) ...TCP重传计时器设置的重传时间:
核心技能训练报告 ----移动通信中VoLTE信令流程分析 学生姓名 专业班级 学 号 指导教师 完成时间 ...3.4 SBC传输协议TCP重传次数优化 15 3.5 系统间邻区优化 17 3.6 重定向掉话 18
Wireshark(四):网络性能排查之TCP重传与重复ACK Wireshark(五):TCP窗口与拥塞处理 Wireshark(六):狙击网络高延时点 Wireshark(七):Statistics统计工具功能详解与应用 Wireshark(八):应用Wireshark...
课时5 TCP重传技术的研究 课时6 用途广泛的ICMP协议 课时7 容易被忽视的DHCP协议 课时8 不可或缺的DNS协议 课时9 每天都要接触的HTTP协议 课时10 为安全而生的HTTPS协议 课时11 协议中的活化石--FTP 课时12 固若金汤...
这篇文章是下篇,所以如果你对TCP不熟悉的话...从前面的TCP重传机制我们知道Timeout的设置对于重传非常重要。1.设长了,重发就慢,丢了老半天才重发,没有效率,性能差;2.设短了,会导致可能并没有丢就重发。于是重发