一种高效的tcp会话重组方法技术

技术编号:17366081 阅读:37 留言:0更新日期:2018-02-28 17:57
一种高效的tcp会话重组方法涉及信息技术领域,本发明专利技术由会话缓存过程的流程、数据重组总体流程、数据块编号计算流程完成;与以往的报文重组方案相比,本发明专利技术通过B+树直接将报文组织成有序的数据结构,可以保证在乱序报文较多的时候也不会因为频繁的数据查找而降低重组效率,这个改进算法可以明显提升在乱序报文较多场景下重组系统的效率及整体性能,同时本方案简化了SEQ的比较流程和TCP会话的重组过程,使TCP会话重组过程及软件实现变得简单高效。

An efficient TCP session reorganization method

An efficient method for TCP session reorganization involves the field of information technology, the invention by the session cache process, data flow, data reorganization overall block number calculation process; compared with the previous packet restructuring program, through the B+ tree data structure will be organized into direct message order, can guarantee that it would not reordering messages more to reduce the recombination efficiency because of frequent data search, efficiency and overall performance of the improved algorithm can significantly improve the reorganization system in reordering messages more scenarios, and this scheme simplifies the process reengineering process and TCP SEQ's session, the TCP session restructuring process and the realization of software become simple and efficient.

【技术实现步骤摘要】
一种高效的tcp会话重组方法
本专利技术涉及信息
,尤其是数据通信领域中的通信处理

技术介绍
TCP/IP协议现在已经广泛的被应用到网络数据通讯上。数据在网络上使用TCP/IP协议进行传输的时候,需要将数据拆分成多个报文进行传输。而在网络安全、DPI数据采集、上网行为审计等领域都会用到TCP会话的重组技术。只有将数据包重组以后,才能还原一次完整的TCP会话,以达到获取网络传输真实内容的目的。一方面,由于网络传输的多种原因,一组数据包通过网络传输到同一个目的地时,会经过不同的路由路径到达同一目的地,由于不同路径的网络质量不完全一致,就会导致达目的地的一组数据包可能会发生顺序改变。另一方面,在传输过程中,由于TCP协议具有重传机制,在数据传递过程中,若发生了某个报文丢失或传输延迟过大的情况,则TCP协议会要求这个报文重传,而重传会导致某一组有序TCP报文在网络传递的时候发生很严重的顺序错乱。以上两种报文顺序错乱的问题会严重影响TCP会话重组及还原的成功率。在申请号为CN201510705482.5的专利申请文件中提到:当接收到TCP报文时,根据所述TCP报文中包括的IP地址和端口查询对应的会话表项;根据所述TCP报文的方向、所述TCP报文的序号以及所述方向按序接收到的TCP报文的序号,确定所述TCP报文的类别;若所述TCP报文为乱序报文,则将所述TCP报文加入所述方向的乱序报文链表;若所述TCP报文为顺序报文,则判断所述方向的乱序报文链表中是否存在与所述TCP报文匹配的链表节点;若存在,将该链表节点和所述TCP报文加入到所述方向的顺序报文链表;否则,将所述TCP报文加入所述方向的顺序报文链表。申请号为CN201510705482.5方案的问题是:使用链表存储乱序节点会带来乱序节点查找任务,当乱序报文比较多的情况下,会存在大量的乱序节点遍历查找任务,过多的遍历查找会严重影响报文重组的效率。另外对乱序报文进行存储时会因报文的大小不固定而引发复杂的内存管理效率及内存命中的问题,申请过多的大小不一致的内存也容易导致内存碎片化而降低重组效率。针对TCP会话重组过程普遍存在的低效率问题,本方案实现了一种简单高效的TCP报文重组方法。通过将TCP报文组织成固定大小的数据块,然后以B+树的结构形式进行组织管理,从而提高了TCP会话的重组效率和成功率,实现了高性能的TCP会话重组算法及软件模块。
技术实现思路
基于现有技术的不足本专利技术提供了一种高效的tcp会话重组装置,由数据缓存模块和数据重组模块组成;数据缓存模块由会话查询模块、会话起始偏移记录模块、会话结束偏移记录模块、数据块编号计算记录模块和B+树生成模块组成;会话查询模块的作用是当接收到TCP报文时,根据TCP报文中包括的IP地址和端口查询对应的会话表项;会话表项包括会话起始偏移、会话结束偏移,会话结束标记、以及存储数据块的B+树结构;会话起始偏移记录模块的作用是在接收到TCP报文的首包时,根据TCP报文的IP和端口信息创建会话表项,记录会话起始偏移,结束偏移;起始偏移的值为首包的SEQ值+1,结束偏移初始化为与起始偏移相同;首包的判断依据为报文类型是SYN或者SYN+ACK报文;会话结束偏移记录模块的作用是在接收到的TCP报文是本次TCP报文最后一个包时,更新会话信息中的结束偏移,结束偏移值应为报文的SEQ值;同时会话结束偏移记录模块在会话表项中放置会话结束标记;数据块编号计算和记录模块的作用是在接收到TCP报文时,根据当前TCP报文的SEQ值,负载长度,以及会话表项中保存的会话起始、结束偏移,计算出当前数据包对应数据块的起始偏移,结束偏移以及数据块编号;起始、结束偏移值的计算方法为:若当前TCP报文的SEQ值小于会话起始偏移值则起始偏移应为当前TCP报文的SEQ值加上32位无符号整数的最大值,否则起始偏移值应为当前TCP报文的SEQ值,结束偏移应为起始偏移值加上数据包长度;B+树生成模块的作用是:1.在接收到TCP报文时,根据刚接收到的TCP报文的数据块编号,从B+树中查找对应的数据块;2.当刚接收的TCP报文的数据块不在B+树中时,申请数据块内存,初始化数据块编号,将刚接收的TCP报文的数据块作为新申请数据块插入到B+树中;3.当刚接收的TCP报文的数据块在B+树中时,更新在B+树中查找到的数据块,具体方法是将刚接收的TCP报文的数据块中的数据拷贝到找到的数据块的指定位置,并更新数据块使用标记;数据重组模块用于TCP会话结束时的处理,当检测到TCP会话结束标记时,将B+树中缓存的有序数据块的数据取出,进行数据重组,重组时只需遍历会话表项中的B+树,将对应块结构中的数据输出即可,遍历会话表项中的B+树时,只需校验会话起始偏移与会话结束偏移之间的数据使用标记,若均被标记为有效,则将对应块结构中的数据输出以完成会话重组,否则此会话被视为数据不完整会话,放弃数据重组,然后回收此B+树各节点的内存块。本专利技术还包括一种高效的tcp会话重组方法,由会话缓存步骤,数据重组步骤,数据块编号步骤完成;(1)会话缓存步骤1)接收TCP报文后,根据IP和端口查询出对应的会话表项信息;2)根据当前TCP报文的SEQ值,负载长度,以及会话表项中保存的会话起始、结束偏移,计算出当前数据包对应数据块的起始偏移,结束偏移以及数据块编号;起始、结束偏移值的计算方法为:若当前报文的SEQ值小于会话起始偏移值则起始偏移应为当前报文的SEQ值加上32位无符号整数的最大值,否则起始偏移值应为当前报文的SEQ值;结束偏移应为起始偏移值加上数据包长度;3)根据数据块编号在B+树中查找对应的数据块信息;数据块信息包含本数据块的起始偏移、结束偏移,以及本数据块的使用状态,本数据块的使用状态是数据块中的一个数据段,以每一位表示一个字节信息,若对应的数据位的字节已经填充则将其置为1,以表示以填充;4)当找不到数据块,则申请新的数据块内存,初始化数据块编号,数据块起始、结束偏移,并插入到B+树中;数据块起始偏移为数据块编号乘以数据块大小,数据块结束偏移为数据块起始偏移加上数据块大小;5)更新查找到的数据块的数据和新插入的数据块上的数据,同步更新数据块使用标记;具体的更新方法为:将本数据块对应数据包的数据拷贝到待更新数据块的数据存储位置,并更新数据块使用标记,将对应数据位置标记为1;(2)数据重组步骤1)从驱动或其他报文捕获装置上接收TCP报文;2)判断报文是否是上行或者下行报文的首包,若报文是SYN或者SYN+ACK报文,则根据此报文的IP和端口信息创建会话表项,并记录会话起始偏移、结束偏移;起始偏移、结束偏移的值为首包的SEQ值+1;会话表项包含会话数据缓存过程所需的B+树结构以及,会话起始、结束偏移,会话结束标记;其中B+树结构将以数据块编号作为KEY;3)判断接收到的报文是否是本会话最后一个包,若是则更新会话信息中的结束偏移,结束偏移值应为报文的SEQ值;同时在会话表项中置会话结束标记;4)对数据报文执行报文数据缓存操作;5)检查是否有会话结束标记,若有则执行数据重组;重组时只需遍历会话表项中的B+树,将对应块结构中的数据输出即可;重组过程中根据数据块中的使用状态标记,确认是否有数据块丢失本文档来自技高网
...
一种高效的tcp会话重组方法

【技术保护点】
一种高效的tcp会话重组方法,其特征在于由会话缓存步骤,数据重组步骤,数据块编号步骤完成;(1)会话缓存步骤1)接收TCP报文后,根据IP和端口查询出对应的会话表项信息;2)根据当前TCP报文的SEQ值,负载长度,以及会话表项中保存的会话起始、结束偏移,计算出当前数据包对应数据块的起始偏移,结束偏移以及数据块编号;起始、结束偏移值的计算方法为:若当前报文的SEQ值小于会话起始偏移值则起始偏移应为当前报文的SEQ值加上32位无符号整数的最大值,否则起始偏移值应为当前报文的SEQ值;结束偏移应为起始偏移值加上数据包长度;3)根据数据块编号在B+树中查找对应的数据块信息;数据块信息包含本数据块的起始偏移、结束偏移,以及本数据块的使用状态,本数据块的使用状态是数据块中的一个数据段,以每一位表示一个字节信息,当对应的数据位的字节已经填充则将其置为1;4)当找不到数据块,则申请新的数据块内存,初始化数据块编号,数据块起始、结束偏移,并插入到B+树中;数据块起始偏移为数据块编号乘以数据块大小,数据块结束偏移为数据块起始偏移加上数据块大小;5)更新查找到的数据块的数据和新插入的数据块上的数据,同步更新数据块使用标记;具体的更新方法为:将本数据块对应数据包的数据拷贝到待更新数据块的数据存储位置,并更新数据块使用标记,将对应数据位置标记为1;(2)数据重组步骤1)从驱动或其他报文捕获装置上接收TCP报文;2)判断报文是否是上行或者下行报文的首包,若报文是SYN或者SYN+ACK报文,则根据此报文的IP和端口信息创建会话表项,并记录会话起始偏移、结束偏移;起始偏移、结束偏移的值为首包的SEQ值+1;会话表项包含会话数据缓存过程所需的B+树结构以及,会话起始、结束偏移,会话结束标记;其中B+树结构将以数据块编号作为KEY;3)判断接收到的报文是否是本会话最后一个包,若是则更新会话信息中的结束偏移,结束偏移值应为报文的SEQ值;同时在会话表项中置会话结束标记;4)对数据报文执行报文数据缓存操作;5)检查是否有会话结束标记,若有则执行数据重组;重组时只需遍历会话表项中的B+树,将对应块结构中的数据输出即可;重组过程中根据数据块中的使用状态标记,确认是否有数据块丢失,根据会话的起始偏移和结束偏移确认重组数据的结束;若重组了该会话起始偏移和结束偏移之间的所有数据且无数据块丢失则重组完成,否则表示会话失败,重组无法完成,丢弃重组数据;(3)数据块编号步骤1)将当前偏移值初始化为数据包起始偏移值;2)将起始偏移值除以系统中定义的数据块固定大小值获取商数,作为当前数据偏移数据块编号;3)当前的数据块编号对应的数据块结束偏移值<=数据包的结束偏移值表示当前数据包属于更多的数据块,将当前偏移值更新为数据块结束偏移值+1,迭代计算下一个数据块编号。...

【技术特征摘要】
1.一种高效的tcp会话重组方法,其特征在于由会话缓存步骤,数据重组步骤,数据块编号步骤完成;(1)会话缓存步骤1)接收TCP报文后,根据IP和端口查询出对应的会话表项信息;2)根据当前TCP报文的SEQ值,负载长度,以及会话表项中保存的会话起始、结束偏移,计算出当前数据包对应数据块的起始偏移,结束偏移以及数据块编号;起始、结束偏移值的计算方法为:若当前报文的SEQ值小于会话起始偏移值则起始偏移应为当前报文的SEQ值加上32位无符号整数的最大值,否则起始偏移值应为当前报文的SEQ值;结束偏移应为起始偏移值加上数据包长度;3)根据数据块编号在B+树中查找对应的数据块信息;数据块信息包含本数据块的起始偏移、结束偏移,以及本数据块的使用状态,本数据块的使用状态是数据块中的一个数据段,以每一位表示一个字节信息,当对应的数据位的字节已经填充则将其置为1;4)当找不到数据块,则申请新的数据块内存,初始化数据块编号,数据块起始、结束偏移,并插入到B+树中;数据块起始偏移为数据块编号乘以数据块大小,数据块结束偏移为数据块起始偏移加上数据块大小;5)更新查找到的数据块的数据和新插入的数据块上的数据,同步更新数据块使用标记;具体的更新方法为:将本数据块对应数据包的数据拷贝到待更新数据块的数据存储位置,并更新数据块使用标记,将对应数据位置标记为1;(2)数据重组步骤1)从驱动或其他报文...

【专利技术属性】
技术研发人员:林飞柯彦伟赵喜荣聂军毛俊
申请(专利权)人:北京亚鸿世纪科技发展有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1