CN112165457B - 一种文件重排的方法、系统、设备及可读存储介质 - Google Patents

一种文件重排的方法、系统、设备及可读存储介质 Download PDF

Info

Publication number
CN112165457B
CN112165457B CN202010923970.4A CN202010923970A CN112165457B CN 112165457 B CN112165457 B CN 112165457B CN 202010923970 A CN202010923970 A CN 202010923970A CN 112165457 B CN112165457 B CN 112165457B
Authority
CN
China
Prior art keywords
data packet
processed
linked list
file
message sequence
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.)
Active
Application number
CN202010923970.4A
Other languages
English (en)
Other versions
CN112165457A (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.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent 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 Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202010923970.4A priority Critical patent/CN112165457B/zh
Publication of CN112165457A publication Critical patent/CN112165457A/zh
Application granted granted Critical
Publication of CN112165457B publication Critical patent/CN112165457B/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
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请公开了一种文件重排的方法,包括:对获取到的抓包文件进行解析,得到报文序列;获取报文序列中每个数据包的发送编号及数据长度;根据发送编号及数据长度对报文序列中的数据包进行排序,并根据排序后的报文序列生成对应的重排文件。本申请所提供的技术方案,通过对获取到的抓包文件进行解析,得到报文序列,然后报文序列中数据包的发送编号及数据长度对每个数据包进行排序,并根据排序后的报文序列生成对应的重排文件,实现了乱序的抓包文件进行重排,得到数据包顺序正确的抓包文件,避免了乱序抓包文件对应用层协议分析的影响。本申请同时还提供了一种文件重排的系统、设备及可读存储介质,具有上述有益效果。

Description

一种文件重排的方法、系统、设备及可读存储介质
技术领域
本申请涉及文件重排领域,特别涉及一种文件重排的方法、系统、设备及可读存储介质。
背景技术
在TCP/IP协议栈中,应用层协议为实现可靠传输需要使用TCP作为传输层协议,分析这些协议时,一般使用wireshark、tcpdump等工具直接抓取网络上传递的数据包并存储为PCAP格式的抓包文件。TCP协议为实现有序的和可靠的数据传输对每个字节都设置了发送编号,在出现网络丢包等问题时发送端有可能重传数据包,同时TCP依赖的网络层协议IP也可能乱序到达,这就要求接收端根据发送编号对数据进行重新排序和去重,还原出发送端的原始数据并递交给上层协议。但是由于抓包软件是直接抓取链路层传输的数据帧,所有乱序重传数据都会被完整抓取,导致抓取到的抓包文件中数据包是乱序的,严重影响了对应用层协议的分析。
因此,如何对乱序的抓包文件进行重排,得到数据包顺序正确的抓包文件是本领域技术人员目前需要解决的技术问题。
发明内容
本申请的目的是提供一种文件重排的方法、系统、设备及可读存储介质,用于对乱序的抓包文件进行重排,得到数据包顺序正确的抓包文件。
为解决上述技术问题,本申请提供一种文件重排的方法,该方法包括:
对获取到的抓包文件进行解析,得到报文序列;
获取所述报文序列中每个数据包的发送编号及数据长度;
根据所述发送编号及所述数据长度对所述报文序列中的数据包进行排序,并根据排序后的报文序列生成对应的重排文件。
可选的,根据所述发送编号及所述数据长度对所述报文序列中的数据包进行排序,并根据排序后的报文序列生成对应的重排文件,包括:
建立所述重排文件,并确定所述报文序列中的第一个数据包为初始数据包;
将所述初始数据包写入重排文件,并根据所述初始数据包的发送编号及数据长度计算理论编号;
确定所述报文序列中所述初始数据包的下一个数据包为待处理数据包,并判断待处理数据包的发送编号与所述理论编号是否相同;
若是,则将所述待处理数据包写入所述重排文件,根据所述待处理数据包的发送编号及数据长度更新所述理论编号,并顺序扫描乱序链表,所述乱序链表中存有按发送编号由小到大顺序排列的表项;
若所述乱序链表当前表项的发送编号大于所述理论编号,则停止扫描所述乱序链表;
若所述乱序链表当前表项的发送编号等于所述理论编号,则将所述表项写入所述重排文件,并根据所述表项的发送编号及数据长度更新所述理论编号,释放当前表项并继续向后扫描所述乱序链表;
若所述乱序链表当前表项的发送编号与数据长度之和小于等于所述理论编号,则释放所述表项并继续向后扫描所述乱序链表;
当所述待处理数据包不为所述报文序列中的最后一个数据包时,将所述待处理数据包更新为所述报文序列中所述待处理数据包的下一个数据包,并返回执行判断待处理数据包的发送编号与所述理论编号是否相同的步骤。
可选的,当所述待处理数据包的发送编号与所述理论编号不相同时,还包括:
顺序扫描所述乱序链表;
若所述乱序链表中存在与所述待处理数据包相同的表项,则停止扫描所述乱序链表;
若所述乱序链表中存在被所述待处理数据包包含的表项,则将被包含的表项更新为所述待处理数据包;
若所述乱序链表中存在与所述待处理数据包部分重叠的表项,则将所述待处理数据包的非重叠部分作为新表项写入所述乱序链表中;
若所述乱序链表中不存在与所述待处理数据包有交集的表项,则将所述待处理数据包插入所述乱序链表的相应位置中;
当所述待处理数据包不为所述报文序列中的最后一个数据包时,将所述待处理数据包更新为所述报文序列中所述待处理数据包的下一个数据包,并返回执行判断待处理数据包的发送编号与所述理论编号是否相同的步骤。
可选的,当所述待处理数据包为所述报文序列中的最后一个数据包时,还包括:
判断所述乱序链表是否为空;
若是,则输出所述重排文件;
若否,则输出所述重排文件不完整的提示信息。
可选的,所述乱序链表具体为跳表。
本申请还提供一种文件重排的系统,该系统包括:
解析模块,用于对获取到的抓包文件进行解析,得到报文序列;
获取模块,用于获取所述报文序列中每个数据包的发送编号及数据长度;
排序模块,用于根据所述发送编号及所述数据长度对所述报文序列中的数据包进行排序,并根据排序后的报文序列生成对应的重排文件。
可选的,所述排序模块包括:
建立子模块,用于建立所述重排文件,并确定所述报文序列中的第一个数据包为初始数据包;
计算子模块,用于将所述初始数据包写入重排文件,并根据所述初始数据包的发送编号及数据长度计算理论编号;
第一判断子模块,用于确定所述报文序列中所述初始数据包的下一个数据包为待处理数据包,并判断待处理数据包的发送编号与所述理论编号是否相同;
第一更新子模块,用于若所述待处理数据包的发送编号与所述理论编号相同,则将所述待处理数据包写入所述重排文件,根据所述待处理数据包的发送编号及数据长度更新所述理论编号,并顺序扫描乱序链表,所述乱序链表中存有按发送编号由小到大顺序排列的表项;
第一停止子模块,用于若所述乱序链表当前表项的发送编号大于所述理论编号,则停止扫描所述乱序链表;
第二更新子模块,用于若所述乱序链表当前表项的发送编号等于所述理论编号,则将所述表项写入所述重排文件,并根据所述表项的发送编号及数据长度更新所述理论编号,释放当前表项并继续向后扫描所述乱序链表;
继续扫描子模块,用于若所述乱序链表当前表项的发送编号与数据长度之和小于等于所述理论编号,则释放所述表项并继续向后扫描所述乱序链表;
第三更新子模块,用于当所述待处理数据包不为所述报文序列中的最后一个数据包时,将所述待处理数据包更新为所述报文序列中所述待处理数据包的下一个数据包,并返回所述第一判断子模块执行判断待处理数据包的发送编号与所述理论编号是否相同的步骤。
可选的,所述排序模块还包括:
顺序扫描子模块,用于当所述待处理数据包的发送编号与所述理论编号不相同时,顺序扫描所述乱序链表;
第二停止子模块,用于若所述乱序链表中存在与所述待处理数据包相同的表项,则停止扫描所述乱序链表;
第四更新子模块,用于若所述乱序链表中存在被所述待处理数据包包含的表项,则将被包含的表项更新为所述待处理数据包;
写入子模块,用于若所述乱序链表中存在与所述待处理数据包部分重叠的表项,则将所述待处理数据包的非重叠部分作为新表项写入所述乱序链表中;
插入子模块,用于若所述乱序链表中不存在与所述待处理数据包有交集的表项,则将所述待处理数据包插入所述乱序链表的相应位置中;
第五更新子模块,用于当所述待处理数据包不为所述报文序列中的最后一个数据包时,将所述待处理数据包更新为所述报文序列中所述待处理数据包的下一个数据包,并返回执行判断待处理数据包的发送编号与所述理论编号是否相同的步骤。
本申请还提供一种文件重排设备,该文件重排设备包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述任一项所述文件重排的方法的步骤。
本申请还提供一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述文件重排的方法的步骤。
本申请所提供文件重排的方法,包括:对获取到的抓包文件进行解析,得到报文序列;获取报文序列中每个数据包的发送编号及数据长度;根据发送编号及数据长度对报文序列中的数据包进行排序,并根据排序后的报文序列生成对应的重排文件。
本申请所提供的技术方案,通过对获取到的抓包文件进行解析,得到报文序列,然后报文序列中数据包的发送编号及数据长度对每个数据包进行排序,并根据排序后的报文序列生成对应的重排文件,实现了乱序的抓包文件进行重排,得到数据包顺序正确的抓包文件,避免了乱序抓包文件对应用层协议分析的影响。本申请同时还提供了一种文件重排的系统、设备及可读存储介质,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例所提供的一种文件重排的方法的流程图;
图2为图1所提供的一种文件重排的方法中S103的一种实际表现方式的流程图;
图3为图1所提供的一种文件重排的方法中S103的另一种实际表现方式的流程图;
图4为本申请实施例所提供的一种文件重排的系统的结构图;
图5为本申请实施例所提供的一种文件重排设备的结构图。
具体实施方式
本申请的核心是提供一种文件重排的方法、系统、设备及可读存储介质,用于对乱序的抓包文件进行重排,得到数据包顺序正确的抓包文件。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
分析TCP协议实现可靠传输的方式可以发现,如果要对TCP协议上的应用层协议进行抓包分析,首先就需要实现部分协议栈的功能对PCAP抓包文件进行乱序重排,恢复出正确的数据包顺序。在Linux内核的TCP协议实现中,使用了红黑树处理和存储乱序到达的TCP报文,然后结合新到报文并查询红黑树恢复原始数据顺序。在TCP Offload的硬件实现中,处理乱序重排问题时一般使用有限数量的存储空间作为已到达不连续区间,乱序到达的TCP报文暂存在已到达不连续区间中,已到达不连续区间用尽时就直接丢弃新到的TCP报文,利用发送端的超时重传机制保证传输的可靠性。在某些简化的针对抓包文件的TCP乱序重排中,忽略了对TCP重传部分数据时的处理,只利用发送编号和期望的理论编号发送对抓包文件的数据帧进行重排。
Linux内核的TCP协议实现提供了最完整的TCP乱序重排方法,但红黑树的实现过于复杂,其中的数据合并等逻辑面向上层Socket接口,不适合对抓包文件进行处理。TCPOffload的硬件实现中采用的数量有限的已到达不连续区间不适合处理抓包文件中的严重乱序的情况,原因是抓包文件中的乱序重排是离线处理,不存在可以超时重传的发送端,在空间用尽时丢弃后续数据包会导致数据丢失。故本申请提供了一种文件重排的方法,用于解决上述问题。
请参考图1,图1为本申请实施例所提供的一种文件重排的方法的流程图。
其具体包括如下步骤:
S101:对获取到的抓包文件进行解析,得到报文序列;
在一个具体实施例中,抓包文件存储报文的格式如下:
Figure BDA0002667684660000061
其中,抓包文件头部分占用24个字节,记录文件版本号和链路类型等抓包的基本信息,之后是多组数据包头和数据包数据。数据包数据部分存储链路层数据帧,数据包头记录数据帧的元信息,具体如下表所示:
字段 长度 内容
TimestampHigh 4B 时间戳高位,精确到秒
TimestampLow 4B 时间戳低位,精确到微秒
CapLen 4B 数据区长度
Len 4B 离线数据长度,一般与CapLen相等
表1数据包头记录内容
在链路层使用以太网协议,网络层使用IP协议,传输层使用TCP协议时,数据包头部分记录的是以太网帧,以太网帧的有效负载是IP数据报,IP数据报的有效负载是TCP报文,TCP报文首部记录了源IP、源端口、目的IP、目的端口、发送编号seq、确认编号ack等信息。
S102:获取报文序列中每个数据包的发送编号及数据长度;
在本步骤中,获取报文序列中每个数据包的发送编号及数据长度的目的在于,遍历上述报文序列并重新排序后写入重排文件,实现对抓包文件的重排;
这里提到的发送编号即为TCP协议为实现可靠传输对数据设置的发送编号。
S103:根据发送编号及数据长度对报文序列中的数据包进行排序,并根据排序后的报文序列生成对应的重排文件。
可选的,这里提到的,根据发送编号及数据长度对报文序列中的数据包进行排序,并根据排序后的报文序列生成对应的重排文件,其具体可以通过执行图2所示的步骤实现,下面请参考图2,图2为图1所提供的一种文件重排的方法中S103的一种实际表现方式的流程图,其具体可以包括如下步骤:
S201:建立重排文件,并确定报文序列中的第一个数据包为初始数据包;
S202:将初始数据包写入重排文件,并根据初始数据包的发送编号及数据长度计算理论编号;
S203:确定报文序列中初始数据包的下一个数据包为待处理数据包;
S204:判断待处理数据包的发送编号与理论编号是否相同;
若是,则执行步骤S205。
S205:将待处理数据包写入重排文件,根据待处理数据包的发送编号及数据长度更新理论编号,并顺序扫描乱序链表;
这里提到的乱序链表中存有按发送编号由小到大顺序排列的表项,可选的,在一个具体实施例中,乱序链表的表项具体可以如下表所示:
字段名称 字段含义
seq 起始数据序号
len 数据长度
last 终止数据序号,等于seq+len-1
position 对应Packet Header位置
next 下一表项指针
表2乱序链表的表项
S206:若乱序链表当前表项的发送编号大于理论编号,则停止扫描乱序链表;
S207:若乱序链表当前表项的发送编号等于理论编号,则将表项写入重排文件,并根据表项的发送编号及数据长度更新理论编号,释放当前表项并继续向后扫描乱序链表;
S208:若乱序链表当前表项的发送编号与数据长度之和小于等于理论编号,则释放表项并继续向后扫描乱序链表;
S209:当待处理数据包不为报文序列中的最后一个数据包时,将待处理数据包更新为报文序列中待处理数据包的下一个数据包,并返回执行步骤S204。
可选的,针对于上一实施例的步骤S204,当待处理数据包的发送编号与理论编号不相同时,还可以执行图3所示的步骤,下面请参考图3,图3为图1所提供的一种文件重排的方法中S103的另一种实际表现方式的流程图,其具体可以包括如下步骤:
S301:顺序扫描乱序链表;
S302:若乱序链表中存在与待处理数据包相同的表项,则停止扫描乱序链表;
S303:若乱序链表中存在被待处理数据包包含的表项,则将被包含的表项更新为待处理数据包;
S304:若乱序链表中存在与待处理数据包部分重叠的表项,则将待处理数据包的非重叠部分作为新表项写入乱序链表中;
S305:若乱序链表中不存在与待处理数据包有交集的表项,则将待处理数据包插入乱序链表的相应位置中;
S306:当待处理数据包不为报文序列中的最后一个数据包时,将待处理数据包更新为报文序列中待处理数据包的下一个数据包,并返回执行步骤204。
可选的,当待处理数据包为报文序列中的最后一个数据包时,还可以执行如下步骤:
判断乱序链表是否为空;
若是,则输出重排文件;
若否,则输出重排文件不完整的提示信息。
可选的,这里提到的乱序链表具体为跳表。
在一个具体实施例中,在处理严重乱序的抓包文件时,为提高乱序链表的性能,可以将乱序链表的数据结构改为跳表。跳表是一种概率化的多层次索引的链表,在保持链表的线性结构的基础上,增加多层次的索引提高查询效率。跳表查询、增加、删除的效率在概率上与红黑树相当,能达到对数时间复杂度,但实现更为简单。
基于上述技术方案,本申请所提供的一种文件重排的方法,通过对获取到的抓包文件进行解析,得到报文序列,然后报文序列中数据包的发送编号及数据长度对每个数据包进行排序,并根据排序后的报文序列生成对应的重排文件,实现了乱序的抓包文件进行重排,得到数据包顺序正确的抓包文件,避免了乱序抓包文件对应用层协议分析的影响。
请参考图4,图4为本申请实施例所提供的一种文件重排的系统的结构图。
该系统可以包括:
解析模块100,用于对获取到的抓包文件进行解析,得到报文序列;
获取模块200,用于获取报文序列中每个数据包的发送编号及数据长度;
排序模块300,用于根据发送编号及数据长度对报文序列中的数据包进行排序,并根据排序后的报文序列生成对应的重排文件。
在上述实施例的基础上,在一个具体实施例中,排序模块300可以包括:
建立子模块,用于建立重排文件,并确定报文序列中的第一个数据包为初始数据包;
计算子模块,用于将初始数据包写入重排文件,并根据初始数据包的发送编号及数据长度计算理论编号;
第一判断子模块,用于确定报文序列中初始数据包的下一个数据包为待处理数据包,并判断待处理数据包的发送编号与理论编号是否相同;
第一更新子模块,用于若待处理数据包的发送编号与理论编号相同,则将待处理数据包写入重排文件,根据待处理数据包的发送编号及数据长度更新理论编号,并顺序扫描乱序链表,乱序链表中存有按发送编号由小到大顺序排列的表项;
第一停止子模块,用于若乱序链表当前表项的发送编号大于理论编号,则停止扫描乱序链表;
第二更新子模块,用于若乱序链表当前表项的发送编号等于理论编号,则将表项写入重排文件,并根据表项的发送编号及数据长度更新理论编号,释放当前表项并继续向后扫描乱序链表;
继续扫描子模块,用于若乱序链表当前表项的发送编号与数据长度之和小于等于理论编号,则释放表项并继续向后扫描乱序链表;
第三更新子模块,用于当待处理数据包不为报文序列中的最后一个数据包时,将待处理数据包更新为报文序列中待处理数据包的下一个数据包,并返回第一判断子模块执行判断待处理数据包的发送编号与理论编号是否相同的步骤。
在上述实施例的基础上,在一个具体实施例中,排序模块300还可以包括:
顺序扫描子模块,用于当待处理数据包的发送编号与理论编号不相同时,顺序扫描乱序链表;
第二停止子模块,用于若乱序链表中存在与待处理数据包相同的表项,则停止扫描乱序链表;
第四更新子模块,用于若乱序链表中存在被待处理数据包包含的表项,则将被包含的表项更新为待处理数据包;
写入子模块,用于若乱序链表中存在与待处理数据包部分重叠的表项,则将待处理数据包的非重叠部分作为新表项写入乱序链表中;
插入子模块,用于若乱序链表中不存在与待处理数据包有交集的表项,则将待处理数据包插入乱序链表的相应位置中;
第五更新子模块,用于当待处理数据包不为报文序列中的最后一个数据包时,将待处理数据包更新为报文序列中待处理数据包的下一个数据包,并返回执行判断待处理数据包的发送编号与理论编号是否相同的步骤。
在上述实施例的基础上,在一个具体实施例中,排序模块300还可以包括:
第二判断子模块,用于当待处理数据包为报文序列中的最后一个数据包时,判断乱序链表是否为空;
第一输出子模块,用于当乱序链表为空时,输出重排文件;
第二输出子模块,用于当乱序链表不为空时,输出重排文件不完整的提示信息。
在上述实施例的基础上,在一个具体实施例中,该乱序链表具体可以为跳表。
由于系统部分的实施例与方法部分的实施例相互对应,因此系统部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
请参考图5,图5为本申请实施例所提供的一种文件重排设备的结构图。
该文件重排设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)522(例如,一个或一个以上处理器)和存储器532,一个或一个以上存储应用程序542或数据544的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器532和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对装置中的一系列指令操作。更进一步地,处理器522可以设置为与存储介质530通信,在文件重排设备500上执行存储介质530中的一系列指令操作。
文件重排设备500还可以包括一个或一个以上电源525,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口558,和/或,一个或一个以上操作系统541,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述图1至图3所描述的文件重排的方法中的步骤由文件重排设备基于该图5所示的结构实现。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置、设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,功能调用装置,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上对本申请所提供的一种文件重排的方法、系统、设备及可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (8)

1.一种文件重排的方法,其特征在于,包括:
对获取到的抓包文件进行解析,得到报文序列;
获取所述报文序列中每个数据包的发送编号及数据长度;
根据所述发送编号及所述数据长度对所述报文序列中的数据包进行排序,并根据排序后的报文序列生成对应的重排文件;
根据所述发送编号及所述数据长度对所述报文序列中的数据包进行排序,并根据排序后的报文序列生成对应的重排文件,包括:
建立所述重排文件,并确定所述报文序列中的第一个数据包为初始数据包;
将所述初始数据包写入重排文件,并根据所述初始数据包的发送编号及数据长度计算理论编号;
确定所述报文序列中所述初始数据包的下一个数据包为待处理数据包,并判断待处理数据包的发送编号与所述理论编号是否相同;
若是,则将所述待处理数据包写入所述重排文件,根据所述待处理数据包的发送编号及数据长度更新所述理论编号,并顺序扫描乱序链表,所述乱序链表中存有按发送编号由小到大顺序排列的表项;
若所述乱序链表当前表项的发送编号大于所述理论编号,则停止扫描所述乱序链表;
若所述乱序链表当前表项的发送编号等于所述理论编号,则将所述表项写入所述重排文件,并根据所述表项的发送编号及数据长度更新所述理论编号,释放当前表项并继续向后扫描所述乱序链表;
若所述乱序链表当前表项的发送编号与数据长度之和小于等于所述理论编号,则释放所述表项并继续向后扫描所述乱序链表;
当所述待处理数据包不为所述报文序列中的最后一个数据包时,将所述待处理数据包更新为所述报文序列中所述待处理数据包的下一个数据包,并返回执行判断待处理数据包的发送编号与所述理论编号是否相同的步骤。
2.根据权利要求1所述的方法,其特征在于,当所述待处理数据包的发送编号与所述理论编号不相同时,还包括:
顺序扫描所述乱序链表;
若所述乱序链表中存在与所述待处理数据包相同的表项,则停止扫描所述乱序链表;
若所述乱序链表中存在被所述待处理数据包包含的表项,则将被包含的表项更新为所述待处理数据包;
若所述乱序链表中存在与所述待处理数据包部分重叠的表项,则将所述待处理数据包的非重叠部分作为新表项写入所述乱序链表中;
若所述乱序链表中不存在与所述待处理数据包有交集的表项,则将所述待处理数据包插入所述乱序链表的相应位置中;
当所述待处理数据包不为所述报文序列中的最后一个数据包时,将所述待处理数据包更新为所述报文序列中所述待处理数据包的下一个数据包,并返回执行判断待处理数据包的发送编号与所述理论编号是否相同的步骤。
3.根据权利要求1或2所述的方法,其特征在于,当所述待处理数据包为所述报文序列中的最后一个数据包时,还包括:
判断所述乱序链表是否为空;
若是,则输出所述重排文件;
若否,则输出所述重排文件不完整的提示信息。
4.根据权利要求3所述的方法,其特征在于,所述乱序链表具体为跳表。
5.一种文件重排的系统,其特征在于,包括:
解析模块,用于对获取到的抓包文件进行解析,得到报文序列;
获取模块,用于获取所述报文序列中每个数据包的发送编号及数据长度;
排序模块,用于根据所述发送编号及所述数据长度对所述报文序列中的数据包进行排序,并根据排序后的报文序列生成对应的重排文件;
所述排序模块包括:
建立子模块,用于建立所述重排文件,并确定所述报文序列中的第一个数据包为初始数据包;
计算子模块,用于将所述初始数据包写入重排文件,并根据所述初始数据包的发送编号及数据长度计算理论编号;
第一判断子模块,用于确定所述报文序列中所述初始数据包的下一个数据包为待处理数据包,并判断待处理数据包的发送编号与所述理论编号是否相同;
第一更新子模块,用于若所述待处理数据包的发送编号与所述理论编号相同,则将所述待处理数据包写入所述重排文件,根据所述待处理数据包的发送编号及数据长度更新所述理论编号,并顺序扫描乱序链表,所述乱序链表中存有按发送编号由小到大顺序排列的表项;
第一停止子模块,用于若所述乱序链表当前表项的发送编号大于所述理论编号,则停止扫描所述乱序链表;
第二更新子模块,用于若所述乱序链表当前表项的发送编号等于所述理论编号,则将所述表项写入所述重排文件,并根据所述表项的发送编号及数据长度更新所述理论编号,释放当前表项并继续向后扫描所述乱序链表;
继续扫描子模块,用于若所述乱序链表当前表项的发送编号与数据长度之和小于等于所述理论编号,则释放所述表项并继续向后扫描所述乱序链表;
第三更新子模块,用于当所述待处理数据包不为所述报文序列中的最后一个数据包时,将所述待处理数据包更新为所述报文序列中所述待处理数据包的下一个数据包,并返回所述第一判断子模块执行判断待处理数据包的发送编号与所述理论编号是否相同的步骤。
6.根据权利要求5所述的系统,其特征在于,所述排序模块还包括:
顺序扫描子模块,用于当所述待处理数据包的发送编号与所述理论编号不相同时,顺序扫描所述乱序链表;
第二停止子模块,用于若所述乱序链表中存在与所述待处理数据包相同的表项,则停止扫描所述乱序链表;
第四更新子模块,用于若所述乱序链表中存在被所述待处理数据包包含的表项,则将被包含的表项更新为所述待处理数据包;
写入子模块,用于若所述乱序链表中存在与所述待处理数据包部分重叠的表项,则将所述待处理数据包的非重叠部分作为新表项写入所述乱序链表中;
插入子模块,用于若所述乱序链表中不存在与所述待处理数据包有交集的表项,则将所述待处理数据包插入所述乱序链表的相应位置中;
第五更新子模块,用于当所述待处理数据包不为所述报文序列中的最后一个数据包时,将所述待处理数据包更新为所述报文序列中所述待处理数据包的下一个数据包,并返回执行判断待处理数据包的发送编号与所述理论编号是否相同的步骤。
7.一种文件重排设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至4任一项所述文件重排的方法的步骤。
8.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述文件重排的方法的步骤。
CN202010923970.4A 2020-09-04 2020-09-04 一种文件重排的方法、系统、设备及可读存储介质 Active CN112165457B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010923970.4A CN112165457B (zh) 2020-09-04 2020-09-04 一种文件重排的方法、系统、设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010923970.4A CN112165457B (zh) 2020-09-04 2020-09-04 一种文件重排的方法、系统、设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN112165457A CN112165457A (zh) 2021-01-01
CN112165457B true CN112165457B (zh) 2022-12-23

Family

ID=73857738

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010923970.4A Active CN112165457B (zh) 2020-09-04 2020-09-04 一种文件重排的方法、系统、设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN112165457B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111711566B (zh) * 2020-07-03 2021-07-27 西安电子科技大学 多路径路由场景下的接收端乱序重排方法
CN112949258A (zh) * 2021-02-25 2021-06-11 深圳市元征科技股份有限公司 数据处理方法、装置、电子设备及存储介质
CN113452621B (zh) * 2021-06-11 2022-02-25 北京连山科技股份有限公司 一种简单高效的多链路数据去重方法
CN114143268B (zh) * 2021-10-25 2024-02-06 航天恒星科技有限公司 基于tcp的报文接收方法及装置、电子设备及存储介质
CN114024924B (zh) * 2022-01-05 2022-04-12 北京安博通科技股份有限公司 一种tcp流重组方法、装置、电子设备及存储介质
CN114786212B (zh) * 2022-03-29 2023-04-25 江苏睿沃水利技术研究院有限公司 一种物联网传输控制方法、设备及在物联网组网中的应用

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105743728A (zh) * 2014-12-11 2016-07-06 杭州迪普科技有限公司 一种保证数据块顺序的方法及装置
CN105939297B (zh) * 2015-10-26 2019-03-15 杭州迪普科技股份有限公司 一种tcp报文重组方法和装置
CN110381051A (zh) * 2019-07-12 2019-10-25 苏州浪潮智能科技有限公司 一种报文解析的方法、系统、设备及计算机可读存储介质
CN110855584B (zh) * 2019-10-16 2022-02-01 武汉绿色网络信息服务有限责任公司 一种tcp乱序重组的方法和装置

Also Published As

Publication number Publication date
CN112165457A (zh) 2021-01-01

Similar Documents

Publication Publication Date Title
CN112165457B (zh) 一种文件重排的方法、系统、设备及可读存储介质
US20170300595A1 (en) Data packet extraction method and apparatus
CN114584560B (zh) 一种分片帧重组方法及装置
CN106156037B (zh) 数据处理方法、装置及系统
CN107395559B (zh) 基于redis的数据处理方法及设备
CN106027414A (zh) 一种面向hdfs的网络报文并行读取方法
CN109151245B (zh) 基于fpga的图像数据传输方法、系统、存储介质及fpga
CN109587082B (zh) 一种基于Linux操作系统的报文异步转发系统及方法
CN1271833C (zh) 无需ip重组分发分组的装置和方法
EP3672189A1 (en) Data transmission method, device and system
CN115567460B (zh) 数据包处理方法及装置
US11190301B2 (en) Method and device for setting out-of-order value of network
CN103647666A (zh) 一种统计呼叫详细记录报文并实时输出结果的方法及装置
CN109842511B (zh) 一种tcp性能参数的确定方法及系统
US9130827B2 (en) Sampling from distributed streams of data
EP3480696A1 (en) Adaptive event aggregation
CN112351049B (zh) 数据传输方法、装置、设备及存储介质
Yazdani et al. Age of information analysis for instantly decompressible IoT protocols
CN113630442B (zh) 数据传输方法、装置及系统
CN112685619A (zh) 一种网页表格数据通用抓取方法
CN102752189A (zh) 一种处理报文的方法及设备
CN115225593B (zh) 分片报文重组方法、装置、设备和介质
CN115484202B (zh) 一种基于int的轻量化路径探测方法
Schilken et al. Efficient graph-color compression with neighborhood-informed Bloom filters
CN110688085A (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