一种多数据包文件冒泡排序的方法技术

技术编号:32020006 阅读:25 留言:0更新日期:2022-01-22 18:38
本发明专利技术涉及网络数据包排序技术领域,尤其涉及一种多数据包文件冒泡排序的方法,包括依次进行初步读取文件、文件初步排序、时间批次划分、按时间批次依次读取文件和文件冒泡排序。本技术方案将数据包文件中的数据报文完全按照真实时刻进行重新排序,方便后续进行攻击行为发现和复盘;为了避免同时打开的文件句柄数太多,根据批次选择性打开部分需要关注文件,避免与时刻无关的文件句柄造成的资源浪费;每个数据包文件执行预读策略,将参与的排序流程在内存中进行,排序效率较高,且实现了对数据包文件拆分后重新组合,限制了参与冒泡排序的文件的大小,为快速将多数据包文件进行排序并且重放打下了良好的基础。排序并且重放打下了良好的基础。排序并且重放打下了良好的基础。

【技术实现步骤摘要】
一种多数据包文件冒泡排序的方法


[0001]本专利技术涉及网络数据包排序
,尤其涉及一种多数据包文件冒泡排序的方法。

技术介绍

[0002]一般网络攻击都分为多个阶段,如信息收集、入侵、漏洞利用、横向移动等,而在每个阶段想要准确捕获的攻击产生的流量,则需要在不同的位置(如:信息收集在互联网出口,横向移动在用户内部网络)进行网络数据包的捕获并且保存为数据包文件。而想要让完整的攻击链条得以重现,重复研究其攻击手法,以做防御措施,则需要将捕获下来的数据流量进行反复重放(保留原始数据报文时间戳),并且将在多个攻击环节的数据包文件进行整合分析。
[0003]由于在不同采集位置采集的数据包文件,分别处于不同时间线,则需要将时间线进行重新拼接。常规的排序算法是将数据报文读取到内存中,按照数据报文的时间进行标准冒泡排序,但由于数据包文件巨大(多达近TB级别),系统资源(内存)不足,计算排序困难,无法实现内存冒泡排序。

技术实现思路

[0004]本专利技术的目的在于根据现现有技术的不足,提供一种多数据包文件冒泡排序的方法。
[0005]具体通过以下技术方案实现:一种多数据包文件冒泡排序的方法,其特征在于,包括以下步骤:S1,初步读取文件:即依次遍历所有待排序的数据包文件,读取每个数据包文件的第一个数据报文的时间戳和最后一个数据报文的时间戳,并令数据包文件的第一个数据报文的时间戳和最后一个数据报文的时间戳分别为数据包文件自身的开始时间和结束时间;S2,文件初步排序:根据读取到的数据包文件的开始时间和结束时间,获取数据包文件自身的时间跨度,并基于开始时间和结束时间的大小,以开始时间从小到大的方式进行排序,并将文件路径和文件开始结束时间作为结构体装载入队列中;依次从队列中取出结构体,读取文件结构体的开始结束时间,分别将存在时间交叉的不同数据包文件放置于不同的分组队列中,且每个分组队列中所有数据包文件按时间从小到大的顺序进行排列;S3,时间批次划分:基于步骤S2中的排列结果,每个分组队列第一个数据包文件的开始时间和所有数据包文件的结束时间设置时间节点,并按照时间节点划分将所有的数据包文件划分为若干个时间批次,若干个时间批次对应了若干个无重叠的时间段,且所有时间批次的时间段无缝拼接构成一条完整的时间线;S4,按时间批次依次读取文件:将每个分组队列中从数据包文件根据时间批次的先后顺序打开,并按照时间顺序同步读取每个分组队列中的数据包文件,针对每个分组队列,将数据包文件中的数据报文划分为若干个相同大小的预读缓存文件,每个预读缓存文
件都包含有若干个按时间戳从小到大排序的数据报文;每读取出一个预读缓存文件都进行一次提交和缓存,然后将提交的预读缓存文件按照时间戳从小到大进行组内排列组合;S5,文件冒泡排序:根据时间线分次接收并读取预读缓存文件,并对所有的预读缓存文件进行冒泡排序,依次保存并输出最小时间戳的数据报文。
[0006]具体的,所述文件初步排序包括以下步骤:S21,基于中央处理器生成若干个数据采集通道,每个数据采集通道对应一条时间线,所有数据采集通道对应的时间线平行且相等;S22,基于各数据采集通道读取数据包文件,每个数据采集通道中的数据包文件都按照时间的大小,在对应的时间线上进行无重叠时间段的排序。
[0007]S23,将数据包文件的排序状态进行存储记录。
[0008]具体的,所述时间批次划分包括以下步骤:S31,将所有数据采集通道的中的第一个数据包文件开始时间进行大小对比,选择最小开始时间的对应位置自动生成时间节点;S32,每个数据采集通道中,在每相邻两个数据包文件之间自动生成时间节点;S33,将所有数据采集通道的中的最后一个数据包文件的结束时间进行大小对比,选择最大的结束时间的对应位置自动生成时间节点;S34,将步骤S21—S23中设置的所有时间节点按照从小到大进行排序,并判断每相邻两个时间节点之间是否存在至少一个任意数据包文件的开始时间;若存在,则自动保留对应的两个时间节点;若不存在,则自动将对应的两个时间节点进行合并,合并后的时间节点满足步骤S22中设置时间节点的要求;S35,根据时间节点划分时间批次,令每相邻两个时间节点构成一个时间批次。
[0009]优选的,所述按时间批次依次读取文件的过程中,预读缓存文件的大小为64K。
[0010]具体的,所述文件冒泡排序包括以下步骤:S51,基于步骤3中的时间线划分若干个时间段;S52,根据时间段的先后顺序依次读取相应的预读缓存文件,且每次接收并同步读取满足相应时间段的所有预读缓存文件;S53,对读取到的预读缓存文件进行冒泡排序,依次保存并输出最小时间戳的数据报文;S54,直至将其中一个预读缓存文件的数据报文全部输出,针对该文件进行再次读取与预读缓存文件相同大小的缓存文件,并参与缓存冒泡排序。
[0011]优选的,还包括步骤S7,即,将经过冒泡排序的数据报文以文件的形式写入新的数据包文件中,以做后续的分析或者复盘使用。
[0012]优选的,所述步骤S1中,读取数据包文件的第一个数据报文的时间戳是以二进制流方式打开数据包文件,并读取前64K字节,从偏移40字节之后读取4个字节,并将其装换为网络字节序形成秒级别时间戳。
[0013]优选的,所述步骤S1中,读取最后一个数据报文的时间戳是以二进制流方式打开数据包文件,并读取文件末尾的64K字节,并采用贪婪字节匹配方式,获取贪婪匹配的最后一次命中偏移,在偏移之后读取4个字节,并将其装换为网络字节序形成秒级别时间戳。
[0014]本技术方案带来的有益效果:
1)本技术方案将数据包文件中的数据报文完全按照真实时刻进行重新排序,方便后续进行攻击行为发现和复盘;为了避免同时打开的文件句柄数太多,根据批次选择性打开部分需要关注文件,避免与时刻无关的文件句柄造成的资源浪费;每个数据包文件执行预读策略,将参与的排序流程(预读缓存)在内存中进行,排序效率较高,且实现了对数据包文件拆分后重新组合,限制了参与冒泡排序的文件的大小,为快速将多数据包文件进行排序并且重放打下了良好的基础。
[0015]2)本技术方案通过生成若干个数据采集通道将所有数据包文件进行分组排序的方式,克服数据包文件之间存在时间跨度重叠为后序带来的读取困难,为简化对数据包文件的读取流程打下了基础,减轻了后续读取数据包文件的负担。
[0016]3)本技术方案通过生成时间节点的方式进行时间批次划分,以此实现当前在读数据包文件的关闭和下一个数据包文件的打开,确保顺利将每个数据采集通道中的数据包文件以此读完。
附图说明
[0017]图1为本技术方案的流程框图;图2为本技术方案的分组状态和批次划分示意图。
具体实施方式
[0018]下面结合附图和实例对本专利技术做进一步说明,但不应理解为本专利技术仅限于以下实例,在不脱离本专利技术构思的前提下,本专利技术在本领域的变形和改进都应包含在本专利技术权利要求的保护范围内。
[0019]实施例1本实施例公开了一种多数据包文件冒泡排序的方法,作为本专利技术一本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种多数据包文件冒泡排序的方法,其特征在于,包括以下步骤:S1,初步读取文件:即依次遍历所有待排序的数据包文件,读取每个数据包文件的第一个数据报文的时间戳和最后一个数据报文的时间戳,并令数据包文件的第一个数据报文的时间戳和最后一个数据报文的时间戳分别为数据包文件自身的开始时间和结束时间;S2,文件初步排序:根据读取到的数据包文件的开始时间和结束时间,获取数据包文件自身的时间跨度,并基于开始时间和结束时间的大小,以开始时间从小到大的方式进行排序,并将文件路径和文件开始结束时间作为结构体装载入队列中;依次从队列中取出结构体,读取文件结构体的开始结束时间,分别将存在时间交叉的不同数据包文件放置于不同的分组队列中,且每个分组队列中所有数据包文件按时间从小到大的顺序进行排列;S3,时间批次划分:基于步骤S2中的排列结果,每个分组队列第一个数据包文件的开始时间和所有数据包文件的结束时间设置时间节点,并按照时间节点划分将所有的数据包文件划分为若干个时间批次,若干个时间批次对应了若干个无重叠的时间段,且所有时间批次的时间段无缝拼接构成一条完整的时间线;S4,按时间批次依次读取文件:将每个分组队列中从数据包文件根据时间批次的先后顺序打开,并按照时间顺序同步读取每个分组队列中的数据包文件,针对每个分组队列,将数据包文件中的数据报文划分为若干个相同大小的预读缓存文件,每个预读缓存文件都包含有若干个按时间戳从小到大排序的数据报文;每读取出一个预读缓存文件都进行一次提交和缓存,然后将提交的预读缓存文件按照时间戳从小到大进行组内排列组合;S5,文件冒泡排序:根据时间线分次接收并读取预读缓存文件,并对所有的预读缓存文件进行冒泡排序,依次保存并输出最小时间戳的数据报文。2.如权利要求1所述一种多数据包文件冒泡排序的方法,其特征在于:所述文件初步排序包括以下步骤:S21,基于中央处理器生成若干个数据采集通道,每个数据采集通道对应一条时间线,所有数据采集通道对应的时间线平行且相等;S22,基于各数据采集通道读取数据包文件,每个数据采集通道中的数据包文件都按照时间的大小,在对应的时间线上进行无重叠时间段的排序;S23,将数据包文件的排序状态进行存储记录。3.如权利要求2所述一种多数据包文件冒泡排序的方法,其特征在于:所述时间批次划分包括以下步骤:S31,将所...

【专利技术属性】
技术研发人员:徐文勇田红伟王伟旭
申请(专利权)人:成都数默科技有限公司
类型:发明
国别省市:

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

1