(12)发明专利申请
(10)申请公布号 CN 111478865 A(43)申请公布日 2020.07.31
(21)申请号 202010272122.1(22)申请日 2020.04.09
(71)申请人 成都深思科技有限公司
地址 610041 四川省成都市高新区天府大
道北段1700号7栋1单元2119号(72)发明人 马晓东 袁涟枫
(74)专利代理机构 北京天奇智新知识产权代理
有限公司 11340
代理人 许驰(51)Int.Cl.
H04L 12/953(2013.01)
权利要求书1页 说明书3页 附图2页
()发明名称
一种基于区间管理算法的TCP流重组技术(57)摘要
本发明公开了一种基于区间管理算法的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流重组方式下,重组完整度不足的问题。
CN 111478865 ACN 111478865 A
权 利 要 求 书
1/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。
2
CN 111478865 A
说 明 书
一种基于区间管理算法的TCP流重组技术
1/3页
技术领域
[0001]本发明涉及计算机应用技术领域,尤其涉及一种基于区间管理算法的TCP流重组技术。
背景技术
[0002]传输控制协议(TransportControlProtocol,TCP)是目前Internet中广泛采用的一种传输协议,它为各个主机之间提供可靠、按序传输、端到端的数据包传输服务,数据在网络上使用TCP协议进行传输的时候,需要将数据拆分成多个报文进行传输,由于网络环境的复杂性,比如网络设备的参差不齐、信号传输过程中的衰减和干扰等因素,经常会导致TCP数据报文的乱序或丢包重传等情况。在许多行业领域,都需要对网关出口的流量进行嗅探捕获,并针对其进行流量审计。在审计过程中都会采用到TCP流重组技术,只有将TCP流数据报文重组以后,才能还原完整的TCP会话,从而获取到TCP传输的真实内容,再用于流量审计。由于重组TCP流需要考虑TCP数据报文的乱序、重叠、丢包、重传等许多复杂情况,导致现有的TCP流重组技术大都具有效率低下、重组不完整、程序内存占用过高等问题。发明内容
[0003]本发明的目的就在于为了解决上述问题设计了一种基于区间管理算法的TCP流重组技术。
[0004]本发明通过以下技术方案来实现上述目的:[0005]一种基于区间管理算法的TCP流重组技术,包括以下步骤:[0006]S1:接收TCP报文,按四元组计算session hash值,从缓存中取出session相关信息,如为空,则新建session相关结构;[0007]S2:判断确认队列是否为空,为空则将报文直接放进确认队列、更新区间树、记录报文传输方向和next seq,返回S1;不为空,则执行S3;[0008]S3:根据四元组判断报文传输方向,如与上一条报文方向一致,则执行S5;不一致,则执行S4;[0009]S4:判断当前报文ACK是否等于上一报文next seq,等于则表示两报文为连续报文,将报文放入确认队列、更新区间树、记录报文传输方向和next seq,否则执行S6;[0010]S5:判断当前报文seq是否等于上一报文next seq,等于则表示两报文为连续报文,将当前报文放入确认队列、更新区间树、记录报文传输方向和next seq,否则执行S6;[0011]S6:计算当前报文的区间值,从区间树中查询此区间值;如果查到,则表示当前报文为重复报文,丢弃即可;如未查到,则表示当前报文为乱序报文,放入待确认队列,执行S7;
[0012]S7:当待确认队列中报文数量大于n,有n个报文堆积待重组;如果n大于5,很可能传输过程中间中有丢包行为,产生了数据空洞,导致后续报文不能确认,这时应从待确认报文队列中取出报文无视空洞,按后续顺序强制加入确认队列;
3
CN 111478865 A[0013]
说 明 书
2/3页
S8:当前TCP报文重组结束,继续返回执行S1。
[0014]本发明的有益效果在于:解决了在传统TCP流重组方式下,因乱序报文查询效率过低导致重组效率低,不能满足在大流量环境下的TCP流重组的问题;解决了在传统TCP流重组方式下,重组完整度不足的问题。附图说明
[0015]图1是本发明一种基于区间管理算法的TCP流重组技术的流程图;
[0016]图2是本发明一种基于区间管理算法的TCP流重组技术的区间管理算法原理图。具体实施方式
[0017]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。[0018]因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0019]应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。[0020]在本发明的描述中,需要理解的是,术语“上”、“下”、“内”、“外”、“左”、“右”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,或者是本领域技术人员惯常理解的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的设备或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的。[0021]此外,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0022]在本发明的描述中,还需要说明的是,除非另有明确的规定和限定,“设置”、“连接”等术语应做广义理解,例如,“连接”可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接连接,也可以通过中间媒介间接连接,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。[0023]下面结合附图,对本发明的具体实施方式进行详细说明。[0024]如图1、图2所示,一种基于区间管理算法的TCP流重组技术,包括以下步骤:[0025]S1:接收TCP报文,按四元组计算session hash值,从缓存中取出session相关信息,如为空,则新建session相关结构;[0026]S2:判断确认队列是否为空,为空则将报文直接放进确认队列、更新区间树、记录报文传输方向和next seq,返回S1;不为空,则执行S3;[0027]S3:根据四元组判断报文传输方向,如与上一条报文方向一致,则执行S5;不一致,
4
CN 111478865 A
说 明 书
3/3页
则执行S4;[0028]S4:判断当前报文ACK是否等于上一报文next seq,等于则表示两报文为连续报文,将报文放入确认队列、更新区间树、记录报文传输方向和next seq,否则执行S6;[0029]S5:判断当前报文seq是否等于上一报文next seq,等于则表示两报文为连续报文,将当前报文放入确认队列、更新区间树、记录报文传输方向和next seq,否则执行S6;[0030]S6:计算当前报文的区间值,从区间树中查询此区间值;如果查到,则表示当前报文为重复报文,丢弃即可;如未查到,则表示当前报文为乱序报文,放入待确认队列,执行S7;
[0031]S7:当待确认队列中报文数量大于n,有n个报文堆积待重组;如果n大于5,很可能传输过程中间中有丢包行为,产生了数据空洞,导致后续报文不能确认,这时应从待确认报文队列中取出报文无视空洞,按后续顺序强制加入确认队列;[0032]S8:当前TCP报文重组结束,继续返回执行S1。
[0033]区间管理算法区是在平衡树基础上进行扩展得到的支持以区间为元素的动态集合的操作,其中每个节点的关键值是区间的左端点。通过建立这种特定的结构,可以使区间的元素的查找和插入都可以在O(lgn)的时间内完成,如附图2。每一个节点代表一个报文,节点区间的左右值分别为报文的序列号(seq)和序列号+当前报文长度(len)-1,比如数据报文seq为1,len为100,此数据报文对应的节点的区间为[1,100]。[0034]ACK包确认机制,ACK是对接收到的数据进行确认,在发送端一次性发送多个数据报文时,如201、301、401的数据报文,不必等到接收端的一一确认,只需要知道401的确认报文,即可认为201、301、401报文都接收到了,系统就可以对201、301、401进行TCP流重组。[0035]序列号包确认机制,当发送端一次性发生多个数据报文时,如201、301的数据报文,接收端的ACK暂未到来,可以根据201数据报文的序列号加上当前报文长度等于301数据报文的序列号,判断301即为201后面连续的包,即可对201,301进行TCP流重组。[0036]本发明的技术方案不限于上述具体实施例的,凡是根据本发明的技术方案做出的技术变形,均落入本发明的保护范围之内。
5
CN 111478865 A
说 明 书 附 图
1/2页
图1
6
CN 111478865 A
说 明 书 附 图
2/2页
7
图2
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- haog.cn 版权所有 赣ICP备2024042798号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务