CN113965391A - 一种多数据包文件冒泡排序的方法 - Google Patents

一种多数据包文件冒泡排序的方法 Download PDF

Info

Publication number
CN113965391A
CN113965391A CN202111251571.9A CN202111251571A CN113965391A CN 113965391 A CN113965391 A CN 113965391A CN 202111251571 A CN202111251571 A CN 202111251571A CN 113965391 A CN113965391 A CN 113965391A
Authority
CN
China
Prior art keywords
time
file
files
data packet
data
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.)
Granted
Application number
CN202111251571.9A
Other languages
English (en)
Other versions
CN113965391B (zh
Inventor
徐文勇
田红伟
王伟旭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Shumo Technology Co ltd
Original Assignee
Chengdu Shumo Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chengdu Shumo Technology Co ltd filed Critical Chengdu Shumo Technology Co ltd
Priority to CN202111251571.9A priority Critical patent/CN113965391B/zh
Publication of CN113965391A publication Critical patent/CN113965391A/zh
Application granted granted Critical
Publication of CN113965391B publication Critical patent/CN113965391B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9057Arrangements for supporting packet reassembly or resequencing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3297Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving time stamps, e.g. generation of time stamps
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/121Timestamp

Abstract

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

Description

一种多数据包文件冒泡排序的方法
技术领域
本发明涉及网络数据包排序技术领域,尤其涉及一种多数据包文件冒泡排序的方法。
背景技术
一般网络攻击都分为多个阶段,如信息收集、入侵、漏洞利用、横向移动等,而在每个阶段想要准确捕获的攻击产生的流量,则需要在不同的位置(如:信息收集在互联网出口,横向移动在用户内部网络)进行网络数据包的捕获并且保存为数据包文件。而想要让完整的攻击链条得以重现,重复研究其攻击手法,以做防御措施,则需要将捕获下来的数据流量进行反复重放(保留原始数据报文时间戳),并且将在多个攻击环节的数据包文件进行整合分析。
由于在不同采集位置采集的数据包文件,分别处于不同时间线,则需要将时间线进行重新拼接。常规的排序算法是将数据报文读取到内存中,按照数据报文的时间进行标准冒泡排序,但由于数据包文件巨大(多达近TB级别),系统资源(内存)不足,计算排序困难,无法实现内存冒泡排序。
发明内容
本发明的目的在于根据现现有技术的不足,提供一种多数据包文件冒泡排序的方法。
具体通过以下技术方案实现:
一种多数据包文件冒泡排序的方法,其特征在于,包括以下步骤:
S1,初步读取文件:即依次遍历所有待排序的数据包文件,读取每个数据包文件的第一个数据报文的时间戳和最后一个数据报文的时间戳,并令数据包文件的第一个数据报文的时间戳和最后一个数据报文的时间戳分别为数据包文件自身的开始时间和结束时间;
S2,文件初步排序:根据读取到的数据包文件的开始时间和结束时间,获取数据包文件自身的时间跨度,并基于开始时间和结束时间的大小,以开始时间从小到大的方式进行排序,并将文件路径和文件开始结束时间作为结构体装载入队列中;依次从队列中取出结构体,读取文件结构体的开始结束时间,分别将存在时间交叉的不同数据包文件放置于不同的分组队列中,且每个分组队列中所有数据包文件按时间从小到大的顺序进行排列;
S3,时间批次划分:基于步骤S2中的排列结果,每个分组队列第一个数据包文件的开始时间和所有数据包文件的结束时间设置时间节点,并按照时间节点划分将所有的数据包文件划分为若干个时间批次,若干个时间批次对应了若干个无重叠的时间段,且所有时间批次的时间段无缝拼接构成一条完整的时间线;
S4,按时间批次依次读取文件:将每个分组队列中从数据包文件根据时间批次的先后顺序打开,并按照时间顺序同步读取每个分组队列中的数据包文件,针对每个分组队列,将数据包文件中的数据报文划分为若干个相同大小的预读缓存文件,每个预读缓存文件都包含有若干个按时间戳从小到大排序的数据报文;每读取出一个预读缓存文件都进行一次提交和缓存,然后将提交的预读缓存文件按照时间戳从小到大进行组内排列组合;
S5,文件冒泡排序:根据时间线分次接收并读取预读缓存文件,并对所有的预读缓存文件进行冒泡排序,依次保存并输出最小时间戳的数据报文。
具体的,所述文件初步排序包括以下步骤:
S21,基于中央处理器生成若干个数据采集通道,每个数据采集通道对应一条时间线,所有数据采集通道对应的时间线平行且相等;
S22,基于各数据采集通道读取数据包文件,每个数据采集通道中的数据包文件都按照时间的大小,在对应的时间线上进行无重叠时间段的排序。
S23,将数据包文件的排序状态进行存储记录。
具体的,所述时间批次划分包括以下步骤:
S31,将所有数据采集通道的中的第一个数据包文件开始时间进行大小对比,选择最小开始时间的对应位置自动生成时间节点;
S32,每个数据采集通道中,在每相邻两个数据包文件之间自动生成时间节点;
S33,将所有数据采集通道的中的最后一个数据包文件的结束时间进行大小对比,选择最大的结束时间的对应位置自动生成时间节点;
S34,将步骤S21—S23中设置的所有时间节点按照从小到大进行排序,并判断每相邻两个时间节点之间是否存在至少一个任意数据包文件的开始时间;若存在,则自动保留对应的两个时间节点;若不存在,则自动将对应的两个时间节点进行合并,合并后的时间节点满足步骤S22中设置时间节点的要求;
S35,根据时间节点划分时间批次,令每相邻两个时间节点构成一个时间批次。
优选的,所述按时间批次依次读取文件的过程中,预读缓存文件的大小为64K。
具体的,所述文件冒泡排序包括以下步骤:
S51,基于步骤3中的时间线划分若干个时间段;
S52,根据时间段的先后顺序依次读取相应的预读缓存文件,且每次接收并同步读取满足相应时间段的所有预读缓存文件;
S53,对读取到的预读缓存文件进行冒泡排序,依次保存并输出最小时间戳的数据报文;
S54,直至将其中一个预读缓存文件的数据报文全部输出,针对该文件进行再次读取与预读缓存文件相同大小的缓存文件,并参与缓存冒泡排序。
优选的,还包括步骤S7,即,将经过冒泡排序的数据报文以文件的形式写入新的数据包文件中,以做后续的分析或者复盘使用。
优选的,所述步骤S1中,读取数据包文件的第一个数据报文的时间戳是以二进制流方式打开数据包文件,并读取前64K字节,从偏移40字节之后读取4个字节,并将其装换为网络字节序形成秒级别时间戳。
优选的,所述步骤S1中,读取最后一个数据报文的时间戳是以二进制流方式打开数据包文件,并读取文件末尾的64K字节,并采用贪婪字节匹配方式,获取贪婪匹配的最后一次命中偏移,在偏移之后读取4个字节,并将其装换为网络字节序形成秒级别时间戳。
本技术方案带来的有益效果:
1)本技术方案将数据包文件中的数据报文完全按照真实时刻进行重新排序,方便后续进行攻击行为发现和复盘;为了避免同时打开的文件句柄数太多,根据批次选择性打开部分需要关注文件,避免与时刻无关的文件句柄造成的资源浪费;每个数据包文件执行预读策略,将参与的排序流程(预读缓存)在内存中进行,排序效率较高,且实现了对数据包文件拆分后重新组合,限制了参与冒泡排序的文件的大小,为快速将多数据包文件进行排序并且重放打下了良好的基础。
2)本技术方案通过生成若干个数据采集通道将所有数据包文件进行分组排序的方式,克服数据包文件之间存在时间跨度重叠为后序带来的读取困难,为简化对数据包文件的读取流程打下了基础,减轻了后续读取数据包文件的负担。
3)本技术方案通过生成时间节点的方式进行时间批次划分,以此实现当前在读数据包文件的关闭和下一个数据包文件的打开,确保顺利将每个数据采集通道中的数据包文件以此读完。
附图说明
图1为本技术方案的流程框图;
图2为本技术方案的分组状态和批次划分示意图。
具体实施方式
下面结合附图和实例对本发明做进一步说明,但不应理解为本发明仅限于以下实例,在不脱离本发明构思的前提下,本发明在本领域的变形和改进都应包含在本发明权利要求的保护范围内。
实施例1
本实施例公开了一种多数据包文件冒泡排序的方法,作为本发明一种基本的实施方案,如图1所示,包括以下步骤:
S1,初步读取文件:在数据报文采集时,可能导致部分乱序产生,为防止在保存数据报文时候的时序部分混乱,依次遍历所有待排序的数据包文件,读取每个数据包文件的第一个数据报文的时间戳(所谓第一个数据报文的时间戳,具体为当前数据包文件中最小的数据报文时间戳,为保证数据报文是最小的,需要多读取几个数据报文,取时间戳最小值)和最后一个数据报文的时间戳(所谓最后一个数据报文的时间戳,具体为当前数据包文件中最大的数据报文时间戳,反向按照数据报文的特征进行匹配,多读几个数据报文,取时间戳最大值),并令数据包文件的第一个数据报文的时间戳和最后一个数据报文的时间戳分别为数据包文件自身的开始时间和结束时间,即,初步读取文件的过程中,获取了每个数据包文件的开始时间和结束时间,为后期根据时间排序打下了良好的基础。
S2,文件初步排序:根据读取到的数据包文件的开始时间和结束时间,获取数据包文件自身的时间跨度(所述时间跨度是以开始时间为首,以结束时间为尾的时间段),并基于开始时间和结束时间的大小,以开始时间从小到大的方式进行排序,并将文件路径和文件开始结束时间作为结构体装载入队列中;依次从队列中取出结构体,读取文件结构体的开始结束时间,分别将存在时间交叉的不同数据包文件放置于不同的分组队列中,且每个分组队列中所有数据包文件按时间从小到大的顺序进行排列。所有待排序的数据包文件中,可能存在两个或两个以上数据包文件之间存在时间跨度上的重叠,具体为相应的数据包文件中存在时间戳相同的数据报文,为了便于后续根据时间顺序对数据报文进行读取和排序,需要使得时间跨度重叠的相关数据包文件并排接收同步读取,因此需将所有的数据包文件按照需求进行分组。
S3,时间批次划分:基于步骤S2中的排列结果,每个分组队列第一个数据包文件的开始时间和所有数据包文件的结束时间设置时间节点,并按照时间节点划分将所有的数据包文件划分为若干个时间批次,若干个时间批次对应了若干个无重叠的时间段,且所有时间批次的时间段无缝拼接构成一条完整的时间线。确保每组数据包文件中,处于当前批次的数据包文件被读取完后,当前数据包文件关闭,下一个数据包文件可顺利打开。
S4,按时间批次依次读取文件:将每个分组队列中从数据包文件根据时间批次的先后顺序打开,并按照时间顺序同步读取每个分组队列中的数据包文件,针对每个分组队列,将数据包文件中的数据报文划分为若干个相同大小的预读缓存文件,每个预读缓存文件都包含有若干个按时间戳从小到大排序的数据报文;每读取出一个(64K的)预读缓存文件都进行一次提交和缓存,然后将提交的预读缓存文件按照时间戳从小到大进行组内排列组合;
S5,文件冒泡排序:根据时间线分次接收并读取预读缓存文件,具体的,是根据所需读取预读缓存文件的大小对时间线进行划分,进一步实现分次;然后对所有的预读缓存文件进行冒泡排序,依次保存并输出最小时间戳的数据报文,以此实现将数据报文按时间戳从小到大进行排序。
本技术方案将数据包文件中的数据报文完全按照真实时刻进行重新排序,方便后续进行攻击行为发现和复盘;为了避免同时打开的文件句柄数太多,根据批次选择性打开部分需要关注文件,避免与时刻无关的文件句柄造成的资源浪费;每个数据包文件执行预读策略,将参与的排序流程(预读缓存)在内存中进行,排序效率较高,且实现了对数据包文件拆分后重新组合,限制了参与冒泡排序的文件的大小,为快速将多数据包文件进行排序并且重放打下了良好的基础。
实施例2
本实施例公开了一种多数据包文件冒泡排序的方法,作为本发明一种基本的实施方案,即实施例1中,文件初步排序包括以下步骤:
S21,基于中央处理器生成若干个数据采集通道,每个数据采集通道对应一条时间线,所有数据采集通道对应的时间线平行且相等;
S22,基于各数据采集通道读取数据包文件,每个数据采集通道中的数据包文件都按照时间的大小,在对应的时间线上进行无重叠时间段的排序。
S23,将数据包文件的排序状态进行存储记录。
如图2所示,在某种实际情况下,待排序的数据包文件有A1文件、A2文件、B1文件、B2文件、B3文件、C1文件、C2文件和D文件,且A1文件、A2文件、B1文件、B2文件、B3文件、C1文件、C2文件和D文件之间存在有不同程度的时间跨度重叠,在步骤S1中可获得A1文件、A2文件、B1文件、B2文件、B3文件、C1文件、C2文件和D文件的开始时间,基于步骤S1结果可知优先采集A1文件、B1文件、C1文件、和D文件,具体的,中央处理器首先生成通道A用以采集A1文件,在判断B1文件与A1文件存在时间跨度重叠后,生成通道B用以采集B1文件,在判断C1文件与A1文件和B1文件都存在时间跨度重叠后,生成通道C用以采集C1文件,在判断D文件与A1文件、B1和C1文件都存在时间跨度重叠后,生成通道D用以采集D文件;然后根据步骤S1的排序结果对剩下的数据包文件进行采集,具体的,拍断B2文件与A1文件、C1文件和D文件都存在时间跨度重叠,但与B1文件不存在时间跨度重叠后,通道B对B2文件进行采集;判断A2文件与B2文件、C1文件和D文件都存在时间跨度重叠,与A1文件不存在时间跨度重叠后,通道A对A2文件进行采集,以此类推,通道C对C2文件进行采集,通道B对B3文件进行采集,由此一来,将所有的数据包文件分为四组,且每个数据采集通道中的数据包文件都按照时间的大小,在对应的时间线上进行无重叠时间段的排序。
实施例3
本实施例公开了一种多数据包文件冒泡排序的方法,作为本发明一种基本的实施方案,即实施例2中,所述时间批次划分包括以下步骤:
S31,将所有数据采集通道的中的第一个数据包文件开始时间进行大小对比,选择最小开始时间的对应位置自动生成时间节点;
S32,每个数据采集通道中,在每相邻两个数据包文件之间自动生成时间节点;
S33,将所有数据采集通道的中的最后一个数据包文件的结束时间进行大小对比,选择最大的结束时间的对应位置自动生成时间节点;
S34,将步骤S21—S23中设置的所有时间节点按照从小到大进行排序,并判断每相邻两个时间节点之间是否存在至少一个任意数据包文件的开始时间;若存在,则自动保留对应的两个时间节点;若不存在,则自动将对应的两个时间节点进行合并,合并后的时间节点满足步骤S22中设置时间节点的要求;
S35,根据时间节点划分时间批次,令每相邻两个时间节点构成一个时间批次。
如图2所示,在A1文件、B1文件、C1文件、和D文件中选择最小开始时间对应的位置生成时间节点t1, A1文件与A2文件之间生成时间节点t3,B1文件与B2文件之间生成时间节点t2,B2文件与B3文件之间生成时间节点t5,C1文件与C2文件之间生成时间节点t4,在A2文件、B3文件、C2文件和D文件中选择最大结束时间对应的位置生成时间节点t6,其中,时间节点t1与间节点t2之间构成第一批次,间节点t2与时间节点t3之间构成第二批次,时间节点t3与时间节点t4之间构成第三批次,时间节点t4与时间节点t5之间构成第四批次,时间节点t5与时间节点t6之间构成第五批次。另外,若假设在实际情况中,时间节点t2与时间节点t3中,至少有一个时间节点同时满足A1文件与A2文件之间的位置和B1文件与B2文件之间的位置,则需要将时间节点t2与时间节点t3进行合并,合并后的时间节点在时间节点t2与时间节点t3之间,且同时满足A1文件与A2文件之间的位置和B1文件与B2文件之间的位置,或者合并后的时间节点为时间节点t2与时间节点t3中,同时满足A1文件与A2文件之间的位置和B1文件与B2文件之间的位置的时间节点。
进一步的,在按时间批次依次读取文件的过程中,根据时间批次划分结果,在时间节点t1时刻,将且仅需要打开包含t1时刻的文件,包括A1文件、B1文件、C1文件和D文件,然后同步(具体指时间上的同步)读取该四个文件,由于B1文件时间跨度最小,因此最先完成对B1文件的读取,完成对B1文件的读取后,触发时间节点t2,B1文件关闭,B2文件打开,开始对通道B中的B2文件进行读取,此时,A1文件、B1文件、C1文件和D文件参与同步读取,直到完成对A1文件的读取,触发时间节点t3,A1文件关闭,A2文件打开,以此类推,在时间节点t4时刻,C1文件关闭,C2文件打开,在时间节点t5时刻,B2文件关闭,B3文件打开,直至时间节点t6时刻,所有文件关闭,技术读取。在读取的过程中,在每个数据采集通道中,每读取出一个(64K的)预读缓存文件都进行一次提交和缓存,然后将提交的预读缓存文件按照时间戳从小到大进行组内排列组合。
实施例4
本实施例公开了一种多数据包文件冒泡排序的方法,作为本发明一种基本的实施方案,包括以下步骤:
S1,初步读取文件:在数据报文采集时,可能导致部分乱序产生,为防止在保存数据报文时候的时序部分混乱,依次遍历所有待排序的数据包文件,读取每个数据包文件的第一个数据报文的时间戳(所谓第一个数据报文的时间戳,具体为当前数据包文件中最小的数据报文时间戳,为保证数据报文是最小的,需要多读取几个数据报文,取时间戳最小值)和最后一个数据报文的时间戳(所谓最后一个数据报文的时间戳,具体为当前数据包文件中最大的数据报文时间戳,反向按照数据报文的特征进行匹配,多读几个数据报文,取时间戳最大值),并令数据包文件的第一个数据报文的时间戳和最后一个数据报文的时间戳分别为数据包文件自身的开始时间和结束时间,即,初步读取文件的过程中,获取了每个数据包文件的开始时间和结束时间,为后期根据时间排序打下了良好的基础。
其中,读取数据包文件的第一个数据报文的时间戳是以二进制流方式打开数据包文件,并读取前64K字节,从偏移40字节之后读取4个字节,并将其装换为网络字节序形成秒级别时间戳。读取最后一个数据报文的时间戳是以二进制流方式打开数据包文件,并读取文件末尾的64K字节,并采用贪婪字节匹配方式,匹配特征“4d3c b2a1 0200 0400 00000000 0000 0000 0008 0000 0100 0000”的24字节,获取贪婪匹配的最后一次命中偏移,在偏移之后读取4个字节,并将其装换为网络字节序形成秒级别时间戳。
S2,文件初步排序:根据读取到的数据包文件的开始时间和结束时间,获取数据包文件自身的时间跨度(所述时间跨度是以开始时间为首,以结束时间为尾的时间段),并基于开始时间和结束时间的大小,以开始时间从小到大的方式进行排序,并将文件路径和文件开始结束时间作为结构体装载入队列中;依次从队列中取出结构体,读取文件结构体的开始结束时间,分别将存在时间交叉的不同数据包文件放置于不同的分组队列中,且每个分组队列中所有数据包文件按时间从小到大的顺序进行排列。所有待排序的数据包文件中,可能存在两个或两个以上数据包文件之间存在时间跨度上的重叠,具体为相应的数据包文件中存在时间戳相同的数据报文,为了便于后续根据时间顺序对数据报文进行读取和排序,需要使得时间跨度重叠的相关数据包文件并排接收同步读取,因此需将所有的数据包文件按照需求进行分组。
S3,时间批次划分:基于步骤S2中的排列结果,每个分组队列第一个数据包文件的开始时间和所有数据包文件的结束时间设置时间节点,并按照时间节点划分将所有的数据包文件划分为若干个时间批次,若干个时间批次对应了若干个无重叠的时间段,且所有时间批次的时间段无缝拼接构成一条完整的时间线。确保每组数据包文件中,处于当前批次的数据包文件被读取完后,当前数据包文件关闭,下一个数据包文件可顺利打开。
S4,按时间批次依次读取文件:将每个分组队列中从数据包文件根据时间批次的先后顺序打开,并按照时间顺序同步读取每个分组队列中的数据包文件,针对每个分组队列,将数据包文件中的数据报文划分为若干个相同大小的预读缓存文件,每个预读缓存文件都包含有若干个按时间戳从小到大排序的数据报文;每读取出一个(64K的)预读缓存文件都进行一次提交和缓存,然后将提交的预读缓存文件按照时间戳从小到大进行组内排列组合;
S5,文件冒泡排序:根据时间线分次接收并读取预读缓存文件,具体的,是根据所需读取预读缓存文件的大小对时间线进行划分,进一步实现分次;然后对所有的预读缓存文件进行冒泡排序,依次保存并输出最小时间戳的数据报文,以此实现将数据报文按时间戳从小到大进行排序。具体包括以下步骤:
S51,基于步骤3中的时间线划分若干个时间段;
S52,根据时间段的先后顺序依次读取相应的预读缓存文件,且每次接收并同步读取满足相应时间段的所有预读缓存文件;
S53,对读取到的预读缓存文件进行冒泡排序,依次保存并输出最小时间戳的数据报文;
S54,直至将其中一个预读缓存文件的数据报文全部输出,针对该文件进行再次读取与预读缓存文件相同大小的缓存文件,并参与缓存冒泡排序。
进一步的,还包括步骤S7,即,将经过冒泡排序的数据报文以文件的形式写入新的数据包文件中,以做后续的分析或者复盘使用。

Claims (8)

1.一种多数据包文件冒泡排序的方法,其特征在于,包括以下步骤:
S1,初步读取文件:即依次遍历所有待排序的数据包文件,读取每个数据包文件的第一个数据报文的时间戳和最后一个数据报文的时间戳,并令数据包文件的第一个数据报文的时间戳和最后一个数据报文的时间戳分别为数据包文件自身的开始时间和结束时间;
S2,文件初步排序:根据读取到的数据包文件的开始时间和结束时间,获取数据包文件自身的时间跨度,并基于开始时间和结束时间的大小,以开始时间从小到大的方式进行排序,并将文件路径和文件开始结束时间作为结构体装载入队列中;依次从队列中取出结构体,读取文件结构体的开始结束时间,分别将存在时间交叉的不同数据包文件放置于不同的分组队列中,且每个分组队列中所有数据包文件按时间从小到大的顺序进行排列;
S3,时间批次划分:基于步骤S2中的排列结果,每个分组队列第一个数据包文件的开始时间和所有数据包文件的结束时间设置时间节点,并按照时间节点划分将所有的数据包文件划分为若干个时间批次,若干个时间批次对应了若干个无重叠的时间段,且所有时间批次的时间段无缝拼接构成一条完整的时间线;
S4,按时间批次依次读取文件:将每个分组队列中从数据包文件根据时间批次的先后顺序打开,并按照时间顺序同步读取每个分组队列中的数据包文件,针对每个分组队列,将数据包文件中的数据报文划分为若干个相同大小的预读缓存文件,每个预读缓存文件都包含有若干个按时间戳从小到大排序的数据报文;每读取出一个预读缓存文件都进行一次提交和缓存,然后将提交的预读缓存文件按照时间戳从小到大进行组内排列组合;
S5,文件冒泡排序:根据时间线分次接收并读取预读缓存文件,并对所有的预读缓存文件进行冒泡排序,依次保存并输出最小时间戳的数据报文。
2.如权利要求1所述一种多数据包文件冒泡排序的方法,其特征在于:所述文件初步排序包括以下步骤:
S21,基于中央处理器生成若干个数据采集通道,每个数据采集通道对应一条时间线,所有数据采集通道对应的时间线平行且相等;
S22,基于各数据采集通道读取数据包文件,每个数据采集通道中的数据包文件都按照时间的大小,在对应的时间线上进行无重叠时间段的排序;
S23,将数据包文件的排序状态进行存储记录。
3.如权利要求2所述一种多数据包文件冒泡排序的方法,其特征在于:所述时间批次划分包括以下步骤:
S31,将所有数据采集通道的中的第一个数据包文件开始时间进行大小对比,选择最小开始时间的对应位置自动生成时间节点;
S32,每个数据采集通道中,在每相邻两个数据包文件之间自动生成时间节点;
S33,将所有数据采集通道的中的最后一个数据包文件的结束时间进行大小对比,选择最大的结束时间的对应位置自动生成时间节点;
S34,将步骤S21—S23中设置的所有时间节点按照从小到大进行排序,并判断每相邻两个时间节点之间是否存在至少一个任意数据包文件的开始时间;若存在,则自动保留对应的两个时间节点;若不存在,则自动将对应的两个时间节点进行合并,合并后的时间节点满足步骤S22中设置时间节点的要求;
S35,根据时间节点划分时间批次,令每相邻两个时间节点构成一个时间批次。
4.如权利要求1所述一种多数据包文件冒泡排序的方法,其特征在于:所述按时间批次依次读取文件的过程中,预读缓存文件的大小为64K。
5.如权利要求4所述一种多数据包文件冒泡排序的方法,其特征在于:所述文件冒泡排序包括以下步骤:
S51,基于步骤3中的时间线划分若干个时间段;
S52,根据时间段的先后顺序依次读取相应的预读缓存文件,且每次接收并同步读取满足相应时间段的所有预读缓存文件;
S53,对读取到的预读缓存文件进行冒泡排序,依次保存并输出最小时间戳的数据报文;
S54,直至将其中一个预读缓存文件的数据报文全部输出,针对该文件进行再次读取与预读缓存文件相同大小的缓存文件,并参与缓存冒泡排序。
6.如权利要求1所述一种多数据包文件冒泡排序的方法,其特征在于:还包括步骤S7,即,将经过冒泡排序的数据报文以文件的形式写入新的数据包文件中,以做后续的分析或者复盘使用。
7.如权利要求1所述一种多数据包文件冒泡排序的方法,其特征在于:所述步骤S1中,读取数据包文件的第一个数据报文的时间戳是以二进制流方式打开数据包文件,并读取前64K字节,从偏移40字节之后读取4个字节,并将其装换为网络字节序形成秒级别时间戳。
8.如权利要求1所述一种多数据包文件冒泡排序的方法,其特征在于:所述步骤S1中,读取最后一个数据报文的时间戳是以二进制流方式打开数据包文件,并读取文件末尾的64K字节,并采用贪婪字节匹配方式,获取贪婪匹配的最后一次命中偏移,在偏移之后读取4个字节,并将其装换为网络字节序形成秒级别时间戳。
CN202111251571.9A 2021-10-27 2021-10-27 一种多数据包文件冒泡排序的方法 Active CN113965391B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111251571.9A CN113965391B (zh) 2021-10-27 2021-10-27 一种多数据包文件冒泡排序的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111251571.9A CN113965391B (zh) 2021-10-27 2021-10-27 一种多数据包文件冒泡排序的方法

Publications (2)

Publication Number Publication Date
CN113965391A true CN113965391A (zh) 2022-01-21
CN113965391B CN113965391B (zh) 2023-10-20

Family

ID=79467256

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111251571.9A Active CN113965391B (zh) 2021-10-27 2021-10-27 一种多数据包文件冒泡排序的方法

Country Status (1)

Country Link
CN (1) CN113965391B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002045364A1 (en) * 2000-11-30 2002-06-06 Netrake Corporation Engine for reassembling and reordering packetized data
CN103069757A (zh) * 2011-08-17 2013-04-24 华为技术有限公司 一种报文重组重排序方法、装置和系统
CN107729135A (zh) * 2016-08-11 2018-02-23 阿里巴巴集团控股有限公司 按序进行并行数据处理的方法和装置
CN111061684A (zh) * 2019-12-31 2020-04-24 成都科来软件有限公司 一种数据包文件时序恢复系统
WO2020125792A1 (zh) * 2018-12-21 2020-06-25 深圳市中兴微电子技术有限公司 数据输出方法及装置、存储介质及设备
CN111813515A (zh) * 2020-06-29 2020-10-23 中国平安人寿保险股份有限公司 基于多进程的任务调度方法、装置、计算机设备及介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002045364A1 (en) * 2000-11-30 2002-06-06 Netrake Corporation Engine for reassembling and reordering packetized data
CN103069757A (zh) * 2011-08-17 2013-04-24 华为技术有限公司 一种报文重组重排序方法、装置和系统
CN107729135A (zh) * 2016-08-11 2018-02-23 阿里巴巴集团控股有限公司 按序进行并行数据处理的方法和装置
WO2020125792A1 (zh) * 2018-12-21 2020-06-25 深圳市中兴微电子技术有限公司 数据输出方法及装置、存储介质及设备
CN111061684A (zh) * 2019-12-31 2020-04-24 成都科来软件有限公司 一种数据包文件时序恢复系统
CN111813515A (zh) * 2020-06-29 2020-10-23 中国平安人寿保险股份有限公司 基于多进程的任务调度方法、装置、计算机设备及介质

Also Published As

Publication number Publication date
CN113965391B (zh) 2023-10-20

Similar Documents

Publication Publication Date Title
CN102523241B (zh) 基于决策树高速并行处理的网络流量在线分类方法及装置
CN102307149A (zh) Ip查找方法和装置以及路由更新方法和装置
US20130070777A1 (en) Reordering Network Traffic
CN101635848A (zh) 一种视频文件的编辑方法和装置
CN110796098B (zh) 内容审核模型的训练及审核方法、装置、设备和存储介质
WO2012162949A1 (zh) 一种报文重组重排序方法、装置和系统
CN1798103A (zh) 业务量生成器和监视器
US11151073B1 (en) Augmenting data plane functionality with field programmable integrated circuits
CN104641602A (zh) 输出实时网络流量延迟以及缓冲区占用
JP7074839B2 (ja) パケット処理
CN110096628B (zh) 一种基于字符串的快速匹配识别方法和装置
CN102571946B (zh) 一种基于对等网络的协议识别与控制系统的实现方法
CN111240599B (zh) 数据流存储方法及装置
CN110505307B (zh) 一种网间交通流数据的交换方法及系统
CN113965391A (zh) 一种多数据包文件冒泡排序的方法
CN110932971A (zh) 一种基于请求信息逐层重构的域间路径分析方法
CN112235254A (zh) 一种高速主干网中Tor网桥的快速识别方法
CN110958187A (zh) 一种面向分布式机器学习参数同步差异化数据传输方法
CN115378881A (zh) 基于联邦学习的家庭路由器数据流识别方法和识别架构
CN103095595A (zh) 一种基于单向并行多链表的网络数据管理方法及系统
CN108566335A (zh) 一种基于NetFlow的网络拓扑生成方法
CN112769520B (zh) 一种基于ip分片的完整数据包留存方法及系统
CN101938404B (zh) 用于数据流量管理的随机早期丢弃方法和装置
KR20120084880A (ko) 하둡 맵리듀스에서 네트워크 패킷 분석을 위한 입력포맷
CN110110764A (zh) 基于混合式网络的随机森林策略优化方法、存储介质

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
GR01 Patent grant
GR01 Patent grant