CN102761403B - 探测tcp丢包的方法、装置及tcp协议栈的探测端 - Google Patents

探测tcp丢包的方法、装置及tcp协议栈的探测端 Download PDF

Info

Publication number
CN102761403B
CN102761403B CN201210218630.7A CN201210218630A CN102761403B CN 102761403 B CN102761403 B CN 102761403B CN 201210218630 A CN201210218630 A CN 201210218630A CN 102761403 B CN102761403 B CN 102761403B
Authority
CN
China
Prior art keywords
packet
protocol stack
detection
common protocol
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201210218630.7A
Other languages
English (en)
Other versions
CN102761403A (zh
Inventor
辛智敏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sangfor Technologies Co Ltd
Original Assignee
Sangfor Network Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sangfor Network Technology Shenzhen Co Ltd filed Critical Sangfor Network Technology Shenzhen Co Ltd
Priority to CN201210218630.7A priority Critical patent/CN102761403B/zh
Publication of CN102761403A publication Critical patent/CN102761403A/zh
Application granted granted Critical
Publication of CN102761403B publication Critical patent/CN102761403B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开一种探测TCP丢包的装置,包括:探测小包处理模块,用于在向普通协议栈发送数据包之后且数据被普通协议栈确认前,从已经发送的数据包中提取部分数据生成探测小包并向普通协议栈发送;丢包判断模块,用于根据普通协议栈反馈的ACK或SACK应答判断已发送数据包的丢包情况。本发明还提供一种探测TCP丢包的方法和TCP协议栈。本发明可解决在RTT发生变化的情况下应答包不及时反馈导致的不必要重传;同时也可解决重传包必须通过超时重传定时器超时驱动的缺陷,可以精确发现丢包,立即重传。

Description

探测TCP丢包的方法、装置及TCP协议栈的探测端
技术领域
本发明涉及互联网技术应用领域,更具体地,涉及一种探测TCP丢包的方法、装置及TCP协议栈。 
背景技术
随着互联网技术的日益普及,互联网在人们生活和工作中所起的作用越来越重要。可以毫不夸张的说,互联网已经与人们的生活和工作息息相关,甚至密不可分。众所周知,承载互联网数据包的载体是各式各样的协议栈,例如TCP(Transmission Control Protocol,传输控制协议)、UDP(User Datagram Protocol,用户数据包协议)、ICMP(Internet Control Message Protocol,互联网控制报文协议)、STCP(Scalable Transmission Control Protocol,可扩展的传输控制协议)等等。其中,TCP以稳定可靠的传输方式,占据了巨头地位,大约超过90%的业务选择了TCP。 
越来越多的业务搬上了互联网,而且在未来相当长的一段时间将会有更多的业务通过互联网完成,数据的剧增必然会导致数据包的丢失。互联网的新型领域——移动互联网的投入,更是以指数级的数量递增,但是无线网络传输本身错误率远远高于有线传输,从而进一步加剧了数据包的丢失概率。这时,对数据包是否丢失做出准确判断显得至关重要。现有技术中,TCP协议栈对丢包的处理过程包括:①通过三次重复ACK(Acknowledgement character,确认字符)判断丢包,然后快速重传;②通过TCP特性SACK(Selective Acknowledgment,选择性重传反馈标识)判断丢包;③重复ACK和SACK均无法判断的情况通过超时重传定时器超时判断。其中第①、②步是可以很快发现丢包的。在第③步,超时重传定时器是根据之前统计的RTT(Round-Trip Time,往返时延)重传的,但在丢包期间,RTT是无法估算的,其次RTT会指数递增,因此将直接导致数据长时间得不到传输,带宽得不到利用,表现在传输速度明显下降,带宽利用率明显不足。 
发明内容
本发明的主要目的在于提供一种探测TCP丢包的方法和装置,旨在解决现有技术中数据长时间得不到传输,带宽得不到利用的技术问题。 
为了实现发明目的,本发明提供一种探测TCP丢包的方法,包括以下步骤: 
在向普通协议栈发送数据包之后且数据被普通协议栈确认前,从已经发送的数据包中提取部分数据生成探测小包并向普通协议栈发送; 
根据普通协议栈反馈的ACK或SACK应答判断已发送数据包的丢包情况。 
优选地,所述在向普通协议栈发送数据包之后且数据被普通协议栈确认前,向普通协议栈发送探测小包包括: 
在数据发送完毕后,启用探测定时器; 
在探测定时器超时时从已经发送的数据包中提取部分数据生成探测小包; 
将探测小包发送给对端普通协议栈。 
优选地,所述根据普通协议栈反馈的ACK或SACK应答判断已发送数据包的丢包情况包括: 
判断所述ACK或SACK应答是否为对探测小包的应答; 
当所述ACK或SACK应答为对探测小包的应答时,判定重传数据包丢失; 
对重传队列重新进行标识。 
优选地,在启用探测定时器之后还包括: 
设置探测定时器的定时周期小于往返时延RTT。 
优选地,所述在探测定时器超时时从已经发送的数据包中提取部分数据生成探测小包包括: 
提取已发送数据包中的一位数据作为探测小包。 
本发明还提供一种探测TCP丢包的装置,包括: 
探测小包处理模块,用于在向普通协议栈发送数据包之后且数据被普通协议栈确认前,从已经发送的数据包中提取部分数据生成探测小包并向普通协议栈发送; 
丢包判断模块,用于根据普通协议栈反馈的ACK或SACK应答判断已发送数据包的丢包情况。 
优选地,所述探测小包处理模块包括: 
探测定时器启动单元,用于在数据发送完毕后,启用探测定时器; 
探测小包生成单元,用于在探测定时器超时时从已经发送的数据包中提取部分数据生成探测小包; 
探测小包发送单元,用于将探测小包发送给对端普通协议栈。 
优选地,所述丢包判断模块具体用于: 
判断所述ACK或SACK应答是否为对探测小包的应答; 
当所述ACK或SACK应答为对探测小包的应答时,判定重传数据包丢失; 
对重传队列重新进行标识。 
优选地,所述探测定时器启动单元还用于在启用探测定时器之后,设置探测定时器的定时周期小于往返时延RTT。 
优选地,所述探测小包生成单元具体用于: 
提取已发送数据包中的一位数据作为探测小包。 
本发明还提供一种TCP协议栈,其包括探测TCP丢包的装置,该探测TCP丢包的装置包括: 
探测小包处理模块,用于在向普通协议栈发送数据包之后且数据被普通协议栈确认前,从已经发送的数据包中提取部分数据生成探测小包并向普通协议栈发送; 
丢包判断模块,用于根据普通协议栈反馈的ACK或SACK应答判断已发送数据包的丢包情况。 
本发明在通过从已发送数据包中提取部分数据作为探测包发送至普通协议栈,以探测获取二次重传的丢包情况,既解决了在RTT发生变化的情况下应答包不及时反馈导致的不必要重传;同时也解决了重传包必须通过超时重传定时器超时驱动的缺陷,可以精确发现丢包,立即重传。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
附图说明
图1为本发明一实施方式中探测TCP丢包的装置的结构示意图; 
图2为本发明一实施例中探测小包处理模块的结构示意图; 
图3为本发明一实施方式中探测TCP丢包的方法的流程图; 
图4为本发明一实施例中提取部分数据生成探测小包并向普通协议栈发送的流程图; 
图5为本发明一实施例中根据普通协议栈反馈的ACK或SACK应答判断丢包情况的流程图。 
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。 
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施方式提供一种探测TCP丢包的装置,参照图1,该装置包括: 
探测小包处理模块10,用于在向普通协议栈发送数据包之后且数据被普通协议栈确认前,从已经发送的数据包中提取部分数据生成探测小包并向普通协议栈发送; 
丢包判断模块20,用于根据普通协议栈反馈的ACK或SACK应答判断已发送数据包的丢包情况。 
本发明实施方式中,探测TCP丢包的装置设置在探测端的协议栈,该协议栈与普通协议栈进行数据交互,与普通协议栈一样,探测端的协议栈也是TCP协议栈。在探测端的协议栈发送数据后,但是还未被对端确认的中间某时刻,探测小包处理模块10从普通数据包中选择少量字节(例如一个字节或者两个字节)探测包发送出去,因为探测包极小,基本不会因为中间路由器的缓存不够而丢弃;接着可能会收到普通协议栈的ACK应答或者与探测包对应的特殊SACK应答,因为探测包比数据包延迟发送,所以ACK应答、特殊的SACK应答必然可以反映出已发送数据包的丢失情况,而且可以确定重传数据包的丢失情况;最后丢包判断模块20再根据应答反馈快速做出后续处理。 
本发明实施方式在通过探测TCP丢包的装置从已发送数据包中提取部分数据作为探测包发送至普通协议栈,以探测获取二次重传的丢包情况,既解决了在RTT发生变化的情况下应答包不及时反馈导致的不必要重传;同时也解决了重传包必须通过超时重传定时器超时驱动的缺陷,可以精确发现丢包,立即重传。 
参照图2所示,在本发明的一个较佳实施例中,探测小包处理模块10包括: 
探测定时器启动单元11,用于在数据发送完毕后,启用探测定时器;本发明实施例中,在探测端的协议栈设置探测定时器,在协议栈发送数据至普通协议栈之后,尚未被普通协议栈确认之前,探测定时器启动单元11即启用该探测定时器。本发明实施例中,探测定时器启动单元11还用于在启用探测定时器之后,设置探测定时器的定时周期小于往返时延RTT,以保证探测小包的有效性。 
探测小包生成单元12,用于在探测定时器超时时从已经发送的数据包中提取部分数据生成探测小包;本发明实施例中,如果探测定时器没有超时,则继续原始协议栈流程,即发送接收业务包,如果探测定时器超时则探测小包生成单元12通知探测小包发送单元13。在本发明实施例中,探测小包生成单元12可具体用于:提取已发送数据包中的一位数据作为探测小包。当然探测小包也可以为两位(字节)数据,能保证数据顺利传送即可。 
探测小包发送单元13,用于将探测小包发送给对端普通协议栈。 
本发明实施例中,丢包判断模块20可具体用于: 
判断所述ACK或SACK应答是否为对探测小包的应答; 
当所述ACK或SACK应答为对探测小包的应答时,判定重传数据包丢失; 
对重传队列重新进行标识。 
由于探测小包是从已发送数据包中提取的,如果ACK或SACK应答为对探测小包的应答,则说明普通协议栈未接收到重传数据,数据已经丢失,此时丢包判断模块20对重传队列重新进行标识,例如对丢失的数据重新进行标识,以发送丢失的数据。 
本发明还提供一种探测TCP丢包的方法,该方法基于上述探测TCP丢包的装置实现。如图3所示,在一实施方式中,该方法包括以下步骤: 
步骤S10,在向普通协议栈发送数据包之后且数据被普通协议栈确认前,从已经发送的数据包中提取部分数据生成探测小包并向普通协议栈发送;例如,在探测端的协议栈发送数据后,但是还未被对端确认的中间某时刻,探测TCP丢包的装置中的探测小包处理模块10从普通数据包中选择少量字节(例如一个字节或者两个字节)探测包发送出去,因为探测包极小,基本不会因为中间路由器的缓存不够而丢弃;接着可能会收到普通协议栈的ACK应答或者与探测包对应的特殊SACK应答,因为探测包比数据包延迟发送,所 以ACK应答、特殊的SACK应答必然可以反映出已发送数据包的丢失情况,而且可以确定重传数据包的丢失情况。 
步骤S20,根据普通协议栈反馈的ACK或SACK应答判断已发送数据包的丢包情况。例如,探测TCP丢包的装置中的丢包判断模块20根据应答反馈快速做出后续处理。 
具体的,参照图4所示,本发明的一个较佳实施例中,上述步骤S10可包括: 
步骤S11,在数据发送完毕后,启用探测定时器;例如,本发明实施例中,在探测端的协议栈设置探测定时器,在协议栈发送数据至普通协议栈之后,尚未被普通协议栈确认之前,探测定时器启动单元11即启用该探测定时器。本发明实施例中,探测定时器启动单元11还用于在启用探测定时器之后,设置探测定时器的定时周期小于往返时延RTT,以保证探测小包的有效性。 
步骤S12,在探测定时器超时时从已经发送的数据包中提取部分数据生成探测小包;例如,如果探测定时器超时则探测小包生成单元12通知探测小包发送单元13。在本发明实施例中,探测小包生成单元12可具体用于:提取已发送数据包中的一位数据作为探测小包。当然探测小包也可以为两位(字节)数据,能保证数据顺利传送即可。 
步骤S13,将探测小包发送给对端普通协议栈。 
参照图5所示,本发明上述实施例中,步骤S20可包括: 
步骤S21,判断所述ACK或SACK应答是否为对探测小包的应答; 
步骤S22,当所述ACK或SACK应答为对探测小包的应答时,判定重传数据包丢失;由于探测小包是从已发送数据包中提取的,如果ACK或SACK应答为对探测小包的应答,则说明普通协议栈未接收到重传数据,数据已经丢失。 
步骤S23,对重传队列重新进行标识。例如丢包判断模块20对重传队列重新进行标识,以发送丢失的数据。 
本发明还提供一种TCP协议栈,其包含探测TCP丢包的装置,该探测TCP丢包的装置的功能及工作原理请参见前述图1至图5所对应的实施例,包含了前述实施例中的所有技术方案。由于具有上述探测TCP丢包的装置,本发明TCP协议栈可以解决在RTT发生变化的情况下应答包不及时反馈导致 的不必要重传;同时也解决了重传包必须通过超时重传定时器超时驱动的缺陷,可以精确发现丢包,立即重传。 
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。 

Claims (9)

1.一种探测TCP丢包的方法,其特征在于,包括以下步骤:
在向包括普通协议栈的对端发送数据包之后且数据被包括普通协议栈的对端确认前,从已经发送的数据包中提取部分数据生成探测小包并向包括普通协议栈的对端发送;
根据包括普通协议栈的对端反馈的ACK或SACK应答判断已发送数据包的丢包情况;
所述根据包括普通协议栈的对端反馈的ACK或SACK应答判断已发送数据包的丢包情况包括:
判断所述ACK或SACK应答是否为对探测小包的应答;
当所述ACK或SACK应答为对探测小包的应答时,判定重传数据包丢失;
对重传队列重新进行标识。
2.如权利要求1所述的方法,其特征在于,所述在向包括普通协议栈的对端发送数据包之后且数据被包括普通协议栈的对端确认前,向包括普通协议栈的对端发送探测小包包括:
在数据发送完毕后,启用探测定时器;
在探测定时器超时时从已经发送的数据包中提取部分数据生成探测小包;
将探测小包发送给包括普通协议栈的对端。
3.如权利要求2所述的方法,其特征在于,在启用探测定时器之后还包括:
设置探测定时器的定时周期小于往返时延RTT。
4.如权利要求3所述的方法,其特征在于,所述在探测定时器超时时从已经发送的数据包中提取部分数据生成探测小包包括:
提取已发送数据包中的一位数据作为探测小包。
5.一种探测TCP丢包的装置,其特征在于,包括:
探测小包处理模块,用于在向包括普通协议栈的对端发送数据包之后且数据被包括普通协议栈的对端确认前,从已经发送的数据包中提取部分数据生成探测小包并向包括普通协议栈的对端发送;
丢包判断模块,用于根据包括普通协议栈的对端反馈的ACK或SACK应答判断已发送数据包的丢包情况;
所述丢包判断模块具体用于:
判断所述ACK或SACK应答是否为对探测小包的应答;
当所述ACK或SACK应答为对探测小包的应答时,判定重传数据包丢失;
对重传队列重新进行标识。
6.如权利要求5所述的装置,其特征在于,所述探测小包处理模块包括:
探测定时器启动单元,用于在数据发送完毕后,启用探测定时器;
探测小包生成单元,用于在探测定时器超时时从已经发送的数据包中提取部分数据生成探测小包;
探测小包发送单元,用于将探测小包发送给包括普通协议栈的对端。
7.如权利要求6所述的装置,其特征在于,所述探测定时器启动单元还用于在启用探测定时器之后,设置探测定时器的定时周期小于往返时延RTT。
8.如权利要求7所述的装置,其特征在于,所述探测小包生成单元具体用于:
提取已发送数据包中的一位数据作为探测小包。
9.一种包括TCP协议栈的探测端,其特征在于,包括如权利要求5~8中任一项所述的探测TCP丢包的装置。
CN201210218630.7A 2012-06-28 2012-06-28 探测tcp丢包的方法、装置及tcp协议栈的探测端 Expired - Fee Related CN102761403B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210218630.7A CN102761403B (zh) 2012-06-28 2012-06-28 探测tcp丢包的方法、装置及tcp协议栈的探测端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210218630.7A CN102761403B (zh) 2012-06-28 2012-06-28 探测tcp丢包的方法、装置及tcp协议栈的探测端

Publications (2)

Publication Number Publication Date
CN102761403A CN102761403A (zh) 2012-10-31
CN102761403B true CN102761403B (zh) 2014-12-17

Family

ID=47055731

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210218630.7A Expired - Fee Related CN102761403B (zh) 2012-06-28 2012-06-28 探测tcp丢包的方法、装置及tcp协议栈的探测端

Country Status (1)

Country Link
CN (1) CN102761403B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014117359A1 (zh) * 2013-01-31 2014-08-07 华为技术有限公司 反馈丢包的消息处理方法及装置
CN104104480B (zh) * 2014-07-31 2017-11-14 北京蓝汛通信技术有限责任公司 用于tcp协议的重传包丢失检测方法和装置
CN108650064A (zh) * 2018-05-08 2018-10-12 昆明理工大学 一种有效检测重传数据包丢失并预防重传超时方法
CN112615760B (zh) * 2020-12-18 2022-07-08 京信网络系统股份有限公司 数据传输方法、装置、基站和存储介质
CN112565024B (zh) * 2021-01-06 2023-04-07 北京网深科技有限公司 一种对网络数据包丢失进行告警的方法
CN113098668A (zh) * 2021-03-31 2021-07-09 中国光大银行股份有限公司 多数据采集点判断tcp会话中丢包是否被重传的方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1748393A (zh) * 2003-03-20 2006-03-15 西门子公司 数据包的发送方法和发送设备
CN101552661A (zh) * 2009-03-26 2009-10-07 吕晓雯 一种差错控制方法
CN101646202A (zh) * 2009-08-25 2010-02-10 普天信息技术研究院有限公司 一种半静态调度下行传输的实现方法
CN101765004A (zh) * 2008-12-25 2010-06-30 上海寰创通信科技有限公司 一种优化无线视频tcp传输的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1748393A (zh) * 2003-03-20 2006-03-15 西门子公司 数据包的发送方法和发送设备
CN101765004A (zh) * 2008-12-25 2010-06-30 上海寰创通信科技有限公司 一种优化无线视频tcp传输的方法
CN101552661A (zh) * 2009-03-26 2009-10-07 吕晓雯 一种差错控制方法
CN101646202A (zh) * 2009-08-25 2010-02-10 普天信息技术研究院有限公司 一种半静态调度下行传输的实现方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张杰等.坚持计时器.《计算机网络》.机械工业出版社,2010,第211页. *

Also Published As

Publication number Publication date
CN102761403A (zh) 2012-10-31

Similar Documents

Publication Publication Date Title
CN102761403B (zh) 探测tcp丢包的方法、装置及tcp协议栈的探测端
JP6522855B2 (ja) パケット送信方法およびユーザ機器
EP2119085B1 (en) Enhanced error control communication systems and methods
CN109327288B (zh) 数据传输加速方法、装置及系统
WO2018121294A1 (zh) 一种报文传输方法、终端、网络设备及通信系统
JP5523350B2 (ja) Tcpフロー制御のための方法及び装置
CN102217258B (zh) 探测处理方法、数据发送端、数据接收端以及通信系统
CN101510816B (zh) 基于路径关联化的多路径并行传输方法
KR102046792B1 (ko) 송신 노드로부터 목적지 노드로의 데이터 전송 방법
CA2466231A1 (en) Time-aware best-effort hole-filling retry method and system for network communications
KR20040078160A (ko) 부정응답 (nak) 의 수신시 개시되는 중단 타이머를이용한, 자동 재송신 요청 (arq) 프로토콜에서의라운드 트립 시간의 적응 측정
EP2486686A1 (en) An efficient application-layer automatic repeat request retransmission method for reliable real-time data streaming in networks
CN107005341B (zh) 无线电设备中的sdu的失序递送
CN105262746A (zh) 一种基于udp协议保证数据可靠传输的方法
CN109981385A (zh) 一种实现丢包检测的方法、装置和系统
CN102769520A (zh) 基于sctp协议的无线网络拥塞控制方法
JPWO2010064421A1 (ja) 通信装置、通信方法
CN101309129B (zh) 针对单独数据包或最后一个数据包的重传控制方法和系统
US9510242B2 (en) Reducing superfluous traffic in a network
US20080195911A1 (en) Automatic repeat request (arq) reset method
WO2014194493A1 (zh) 一种减少传输控制层确认报文的方法、装置和系统
CN102917076A (zh) 基于冗余编码的http报文传输、发送和接收方法
CN113965959A (zh) 一种车载智能数据无连接可靠传输方法
CN104243107A (zh) 数据传输方法、装置、终端、服务器及系统
Gurtov et al. Resolving acknowledgment ambiguity in non-SACK TCP

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20200612

Address after: Nanshan District Xueyuan Road in Shenzhen city of Guangdong province 518000 No. 1001 Nanshan Chi Park building A1 layer

Patentee after: SANGFOR TECHNOLOGIES Inc.

Address before: 518000 Nanshan Science and Technology Pioneering service center, No. 1 Qilin Road, Guangdong, Shenzhen 418, 419,

Patentee before: Sangfor Network Technology (Shenzhen) Co.,Ltd.

TR01 Transfer of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20141217