[发明专利]基于Libnids的协议还原方法有效
申请号: | 201610532683.4 | 申请日: | 2016-07-07 |
公开(公告)号: | CN106209698B | 公开(公告)日: | 2019-07-23 |
发明(设计)人: | 白肖;陈宏伟;何建锋;刘亚轩 | 申请(专利权)人: | 西安交大捷普网络科技有限公司 |
主分类号: | H04L12/953 | 分类号: | H04L12/953;H04L29/06 |
代理公司: | 西安新思维专利商标事务所有限公司 61114 | 代理人: | 黄秦芳 |
地址: | 710075 陕*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于Libnids的协议还原方法,根据接收到的数据包为IP分片的第一个包获取所述第一个包对应的四元组,之后,根据所述第一个包对应的四元组查找流结构,并且对所述查找到的流结构重建加入用于保存IP分片序列号的序列号队列;当接收到的数据包为IP分片的非第一个包时,根据该数据包的目的IP查找到对应的HOST,在查找到的HOST对应的若干个流结构中查找对应的流结构,将该数据包直接写入该流结构的对应的内存中。本发明将零散的内存分配和释放改为大内存,有效地节省了内存的分配和释放的时间,提高了内存管理的效率,有效节省了文件操作所消耗的时间,无需线程中的文件拷贝等操作,节省了很大的时间。 | ||
搜索关键词: | 基于 libnids 协议 还原 方法 | ||
【主权项】:
1.一种基于Libnids的协议还原方法,其特征在于,该方法为:接收到的数据包为IP分片的第一个包时,获取所述第一个包对应的四元组,之后,根据所述第一个包对应的四元组查找流结构,并且对所述查找到的流结构重建加入用于保存IP分片序列号的序列号队列;当接收到的数据包为IP分片的非第一个包时,根据该数据包的目的IP查找到对应的HOST,在查找到的HOST对应的若干个流结构中查找对应的流结构,将该数据包直接写入该流结构的对应的内存中;所述将该数据包直接写入该流结构的对应的内存中,具体为:在Libnids的半连接结构体struct half_stream中加入内存节点的指针变量,在接收到连接数据,确定需要空间的时候则调用节点申请的接口获取一个内存节点;在连接关闭或者超时的时候,将内存节点作为参数传递给协议处理队列,协议处理线程也能够直接从内存中获取数据,等到协议处理线程将所有的解析工作完成之后,再将所有的内存信息写到磁盘文件中,最后调用内存节点的释放接口;Libnids写内存直接在Libnids里面判断连接的半连接数据是否需要,并且在连接结束的时候将对应的节点插入到对应线程的处理队列中;或者,所述将该数据包直接写入该流结构的对应的内存中,具体为:在接收到IP分片的第一个包时创建内存,所述内存的起始地址保存在流结构的半连接中,同时还保存着第一个数据包的序列号起始值、内存的当前偏移值、以及一个地址偏移队列;当一个需要写入的数据包到达时,根据序列号确定内存中的偏移地址,直接写入;如果该序列号与半连接中保存的当前偏移值相等,则说明该数据包是连续的,如果不相等,则说明该数据包比之前的数据包先到了,需要保存其序列号到地址偏移队列中,每次当前偏移值修改时都需要与这个队列中的值进行比较,如果找到相等的则证明之后的数据包已经到了,需要把当前偏移值继续修改到没有记录数据包的地方。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安交大捷普网络科技有限公司,未经西安交大捷普网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610532683.4/,转载请声明来源钻瓜专利网。