CN111478865A - 一种基于区间管理算法的tcp流重组技术 - Google Patents
一种基于区间管理算法的tcp流重组技术 Download PDFInfo
- Publication number
- CN111478865A CN111478865A CN202010272122.1A CN202010272122A CN111478865A CN 111478865 A CN111478865 A CN 111478865A CN 202010272122 A CN202010272122 A CN 202010272122A CN 111478865 A CN111478865 A CN 111478865A
- Authority
- CN
- China
- Prior art keywords
- message
- queue
- messages
- interval
- tcp
- 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.)
- Withdrawn
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9057—Arrangements for supporting packet reassembly or resequencing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种基于区间管理算法的TCP流重组技术,涉及计算机应用技术领域,S1接收TCP报文,计算session hash值,取出session相关信息;S2确认队列是否为空;S3判断报文传输方向;S4判断ACK是否等于上一报文next seq;S5判断seq是否等于上一报文next seq;S6计算当前报文的区间值;S7确认队列中报文数量大于n;n大于5,有丢包行为,产生数据空洞,从待确认报文队列中取出报文无视空洞,按后续顺序强制加入确认队列;S8重组结束,返回S1;解决了在传统TCP流重组方式下,因乱序报文查询效率过低导致重组效率低,不能满足在大流量环境下的TCP流重组的问题;解决了在传统TCP流重组方式下,重组完整度不足的问题。
Description
技术领域
本发明涉及计算机应用技术领域,尤其涉及一种基于区间管理算法的TCP流重组技术。
背景技术
传输控制协议(TransportControlProtocol,TCP)是目前Internet中广泛采用的一种传输协议,它为各个主机之间提供可靠、按序传输、端到端的数据包传输服务,数据在网络上使用TCP协议进行传输的时候,需要将数据拆分成多个报文进行传输,由于网络环境的复杂性,比如网络设备的参差不齐、信号传输过程中的衰减和干扰等因素,经常会导致TCP数据报文的乱序或丢包重传等情况。在许多行业领域,都需要对网关出口的流量进行嗅探捕获,并针对其进行流量审计。在审计过程中都会采用到TCP流重组技术,只有将TCP流数据报文重组以后,才能还原完整的TCP会话,从而获取到TCP传输的真实内容,再用于流量审计。由于重组TCP流需要考虑TCP数据报文的乱序、重叠、丢包、重传等许多复杂情况,导致现有的TCP流重组技术大都具有效率低下、重组不完整、程序内存占用过高等问题。
发明内容
本发明的目的就在于为了解决上述问题设计了一种基于区间管理算法的TCP流重组技术。
本发明通过以下技术方案来实现上述目的:
一种基于区间管理算法的TCP流重组技术,包括以下步骤:
S1:接收TCP报文,按四元组计算session hash值,从缓存中取出session相关信息,如为空,则新建session相关结构;
S2:判断确认队列是否为空,为空则将报文直接放进确认队列、更新区间树、记录报文传输方向和next seq,返回S1;不为空,则执行S3;
S3:根据四元组判断报文传输方向,如与上一条报文方向一致,则执行S5;不一致,则执行S4;
S4:判断当前报文ACK是否等于上一报文next seq,等于则表示两报文为连续报文,将报文放入确认队列、更新区间树、记录报文传输方向和next seq,否则执行S6;
S5:判断当前报文seq是否等于上一报文next seq,等于则表示两报文为连续报文,将当前报文放入确认队列、更新区间树、记录报文传输方向和next seq,否则执行S6;
S6:计算当前报文的区间值,从区间树中查询此区间值;如果查到,则表示当前报文为重复报文,丢弃即可;如未查到,则表示当前报文为乱序报文,放入待确认队列,执行S7;
S7:当待确认队列中报文数量大于n,有n个报文堆积待重组;如果n大于5,很可能传输过程中间中有丢包行为,产生了数据空洞,导致后续报文不能确认,这时应从待确认报文队列中取出报文无视空洞,按后续顺序强制加入确认队列;
S8:当前TCP报文重组结束,继续返回执行S1。
本发明的有益效果在于:解决了在传统TCP流重组方式下,因乱序报文查询效率过低导致重组效率低,不能满足在大流量环境下的TCP流重组的问题;解决了在传统TCP流重组方式下,重组完整度不足的问题。
附图说明
图1是本发明一种基于区间管理算法的TCP流重组技术的流程图;
图2是本发明一种基于区间管理算法的TCP流重组技术的区间管理算法原理图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在本发明的描述中,需要理解的是,术语“上”、“下”、“内”、“外”、“左”、“右”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,或者是本领域技术人员惯常理解的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的设备或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本发明的描述中,还需要说明的是,除非另有明确的规定和限定,“设置”、“连接”等术语应做广义理解,例如,“连接”可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接连接,也可以通过中间媒介间接连接,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
下面结合附图,对本发明的具体实施方式进行详细说明。
如图1、图2所示,一种基于区间管理算法的TCP流重组技术,包括以下步骤:
S1:接收TCP报文,按四元组计算session hash值,从缓存中取出session相关信息,如为空,则新建session相关结构;
S2:判断确认队列是否为空,为空则将报文直接放进确认队列、更新区间树、记录报文传输方向和next seq,返回S1;不为空,则执行S3;
S3:根据四元组判断报文传输方向,如与上一条报文方向一致,则执行S5;不一致,则执行S4;
S4:判断当前报文ACK是否等于上一报文next seq,等于则表示两报文为连续报文,将报文放入确认队列、更新区间树、记录报文传输方向和next seq,否则执行S6;
S5:判断当前报文seq是否等于上一报文next seq,等于则表示两报文为连续报文,将当前报文放入确认队列、更新区间树、记录报文传输方向和next seq,否则执行S6;
S6:计算当前报文的区间值,从区间树中查询此区间值;如果查到,则表示当前报文为重复报文,丢弃即可;如未查到,则表示当前报文为乱序报文,放入待确认队列,执行S7;
S7:当待确认队列中报文数量大于n,有n个报文堆积待重组;如果n大于5,很可能传输过程中间中有丢包行为,产生了数据空洞,导致后续报文不能确认,这时应从待确认报文队列中取出报文无视空洞,按后续顺序强制加入确认队列;
S8:当前TCP报文重组结束,继续返回执行S1。
区间管理算法区是在平衡树基础上进行扩展得到的支持以区间为元素的动态集合的操作,其中每个节点的关键值是区间的左端点。通过建立这种特定的结构,可以使区间的元素的查找和插入都可以在O(lgn)的时间内完成,如附图2。每一个节点代表一个报文,节点区间的左右值分别为报文的序列号(seq)和序列号+当前报文长度(len)-1,比如数据报文seq为1,len为100,此数据报文对应的节点的区间为[1,100]。
ACK包确认机制,ACK是对接收到的数据进行确认,在发送端一次性发送多个数据报文时,如201、301、401的数据报文,不必等到接收端的一一确认,只需要知道401的确认报文,即可认为201、301、401报文都接收到了,系统就可以对201、301、401进行TCP流重组。
序列号包确认机制,当发送端一次性发生多个数据报文时,如201、301的数据报文,接收端的ACK暂未到来,可以根据201数据报文的序列号加上当前报文长度等于301数据报文的序列号,判断301即为201后面连续的包,即可对201,301进行TCP流重组。
本发明的技术方案不限于上述具体实施例的限制,凡是根据本发明的技术方案做出的技术变形,均落入本发明的保护范围之内。
Claims (1)
1.一种基于区间管理算法的TCP流重组技术,其特征在于,包括以下步骤:
S1:接收TCP报文,按四元组计算sessionhash值,从缓存中取出session相关信息,如为空,则新建session相关结构;
S2:判断确认队列是否为空,为空则将报文直接放进确认队列、更新区间树、记录报文传输方向和nextseq,返回S1;不为空,则执行S3;
S3:根据四元组判断报文传输方向,如与上一条报文方向一致,则执行S5;不一致,则执行S4;
S4:判断当前报文ACK是否等于上一报文nextseq,等于则表示两报文为连续报文,将报文放入确认队列、更新区间树、记录报文传输方向和nextseq,否则执行S6;
S5:判断当前报文seq是否等于上一报文nextseq,等于则表示两报文为连续报文,将当前报文放入确认队列、更新区间树、记录报文传输方向和next seq,否则执行S6;
S6:计算当前报文的区间值,从区间树中查询此区间值;如果查到,则表示当前报文为重复报文,丢弃即可;如未查到,则表示当前报文为乱序报文,放入待确认队列,执行S7;
S7:当待确认队列中报文数量大于n,有n个报文堆积待重组;如果n大于5,很可能传输过程中间中有丢包行为,产生了数据空洞,导致后续报文不能确认,这时应从待确认报文队列中取出报文无视空洞,按后续顺序强制加入确认队列;
S8:当前TCP报文重组结束,继续返回执行S1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010272122.1A CN111478865A (zh) | 2020-04-09 | 2020-04-09 | 一种基于区间管理算法的tcp流重组技术 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010272122.1A CN111478865A (zh) | 2020-04-09 | 2020-04-09 | 一种基于区间管理算法的tcp流重组技术 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111478865A true CN111478865A (zh) | 2020-07-31 |
Family
ID=71751250
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010272122.1A Withdrawn CN111478865A (zh) | 2020-04-09 | 2020-04-09 | 一种基于区间管理算法的tcp流重组技术 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111478865A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113791901A (zh) * | 2021-08-31 | 2021-12-14 | 上海弘积信息科技有限公司 | 一种高效的负载均衡设备tcp重传实现方法 |
CN114726920A (zh) * | 2022-06-07 | 2022-07-08 | 恒生电子股份有限公司 | Tcp数据的处理方法及装置 |
CN115190090A (zh) * | 2022-07-12 | 2022-10-14 | 国泰君安证券股份有限公司 | 基于哈希表和队列结构的tcp流重组行情监控处理方法、系统、装置、处理器及存储介质 |
-
2020
- 2020-04-09 CN CN202010272122.1A patent/CN111478865A/zh not_active Withdrawn
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113791901A (zh) * | 2021-08-31 | 2021-12-14 | 上海弘积信息科技有限公司 | 一种高效的负载均衡设备tcp重传实现方法 |
CN113791901B (zh) * | 2021-08-31 | 2023-12-26 | 上海弘积信息科技有限公司 | 一种高效的负载均衡设备tcp重传实现方法 |
CN114726920A (zh) * | 2022-06-07 | 2022-07-08 | 恒生电子股份有限公司 | Tcp数据的处理方法及装置 |
CN115190090A (zh) * | 2022-07-12 | 2022-10-14 | 国泰君安证券股份有限公司 | 基于哈希表和队列结构的tcp流重组行情监控处理方法、系统、装置、处理器及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5816718B2 (ja) | 通信装置、通信システム、およびデータ通信の中継方法 | |
EP0570220B1 (en) | Acknowledgment protocol for serial data network with out-of-order delivery | |
CN111478865A (zh) | 一种基于区间管理算法的tcp流重组技术 | |
US7355971B2 (en) | Determining packet size in networking | |
JP5942706B2 (ja) | 監視装置,監視プログラム,監視方法 | |
US20090135851A1 (en) | Transport layer and model for an advanced metering infrastructure (ami) network | |
EP2183890B1 (en) | Aggregate data frame generation | |
CN101217429B (zh) | 基于tcp时间戳选项确定tcp报文之间的引发关系的方法 | |
US10355961B2 (en) | Network traffic capture analysis | |
US6765889B1 (en) | Communication method and system | |
US20100189105A1 (en) | Efficiency Improvement For Shared Communications Networks | |
CN104025550B (zh) | 从数据项获得信息的方法及装置 | |
EP3525421B1 (en) | Data transmission method and apparatus | |
EP3637703B1 (en) | Message transmission methods and proxy servers | |
Topór-Kamiński et al. | Delays models of measurement and control data transmission network | |
US8156209B1 (en) | Aggregation devices processing keep-alive messages of point-to-point sessions | |
WO2002041603A1 (fr) | Dispositif et procédé de commande de distribution de données | |
CN111131179B (zh) | 业务处理方法、装置、网络设备及存储介质 | |
CN112468513B (zh) | 一种企业网的终端管理通信方法 | |
EP1505759B1 (en) | Method and device for transmitting/receiving data using acknowledged transport layer protocols | |
Ennis et al. | Overview of a broad-band local area network protocol architecture | |
CN114598651A (zh) | 数据传输方法以及装置 | |
EP3829134B1 (en) | Method for transferring large amounts of data through a telematic network in an efficient and reliable manner and at high-speed | |
Kato et al. | Intelligent protocol analyzer with TCP behavior emulation for interoperability testing of TCP/IP protocols | |
Kliazovich et al. | DAWL: a delayed-ACK scheme for MAC-level performance enhancement of wireless LANs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20200731 |
|
WW01 | Invention patent application withdrawn after publication |