CN109547389A - 一种码流文件重组的方法及装置 - Google Patents
一种码流文件重组的方法及装置 Download PDFInfo
- Publication number
- CN109547389A CN109547389A CN201710670170.4A CN201710670170A CN109547389A CN 109547389 A CN109547389 A CN 109547389A CN 201710670170 A CN201710670170 A CN 201710670170A CN 109547389 A CN109547389 A CN 109547389A
- Authority
- CN
- China
- Prior art keywords
- datasegment
- data
- connection identifier
- message data
- processed
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供一种码流文件重组方法及装置。所述方法包括获取待处理码流包,从所述待处理码流包中获取连接标识、报文数据DataSegment和序号seq;若所述报文数据DataSegment不为空,则根据所述连接标识获取与所述连接标识相对应的数据存储空间buffer;根据所述序号seq获取相对偏移量seq1,然后将所述相对偏移量seq1与所述数据存储空间buffer的长度相比,获取与所述报文数据DataSegment相对应的内存块在所述数据存储空间buffer中的位置,并将所述报文数据DataSegment拷贝到所述内存块中。本发明实施例提供的通过计算所述待处理码流包的所述相对偏移量seq1来获取与所述报文数据DataSegment相对应的所述内存块的位置,免去了构造TCP报文段组织结构的复杂过程,并大幅提升了查询和定位所述内存块位置的效率。
Description
技术领域
本发明实施例移动通信领域,尤其涉及一种码流文件重组方法及装置。
背景技术
随着互联网OTT业务的发展,传统语音业务市场进一步受到挤压,低值化的趋势已经愈发明显,中国移动从传统语音经营转向流量经营势不可挡,流量业务传统的离线计费模式造成的高时延、高欠费成为流量业务运营的短板,在线计费很好的解决了这些问题,在线计费上线后,批价、合帐、信控、提醒等方面效率有了极大提高。在线计费是通过Diameter消息交互进行资源授权、连接放通、实时结算与信用控制,其依据是网元上报的消息,在线消息与离线话单相比,存在易失性、数据量大,查看不便等问题,因此必须进行在线计费系统的消息稽核,才可确保网元设备和BOSS系统在线环节的稳定性与精确性。依托于TCP协议的Diameter消息,在传输过程中可能发生消息重传、迟传、乱序等问题,如何高速准确地对TCP数据段进行重组落地,是Diameter消息稽核亟待解决的问题。
现有TCP数据段重组算法依赖于每个TCP数据包通过连接标识确定其所属的TCP连接,针对每个TCP连接建立一个对应的连接节点结构,并用一定的数据结构将所有TCP连接结构组织起来,形成TCP连接组织结构。
在实现本发明实施例的过程中,发明人发现实际生产环境中,待建连接可能建立失败,重组算法需要缓存大量TCP连接,并进行查找,造成TCP组织结构复杂庞大,系统资源浪费严重,查找效率低下。TCP数据包在缓冲区的存储位置是随机且不连续的,造成每到达一个数据包,都需要在缓冲区依次查找定位,大幅降低查询和定位效率。
发明内容
本发明实施例提供一种码流文件重组方法及装置,用以解决现有技术中对码流文件进行TCP重组需要构造TCP报文段组织结构的复杂过程,降低了重组效率。其中所述方法包括:
获取待处理码流包,从所述待处理码流包中获取连接标识、报文数据DataSegment和序号seq;
若所述报文数据DataSegment不为空,则根据所述连接标识获取与所述连接标识相对应的数据存储空间buffer;
根据所述序号seq获取相对偏移量seq1,然后将所述相对偏移量seq1与所述数据存储空间buffer的长度相比,获取与所述报文数据DataSegment相对应的内存块在所述数据存储空间buffer中的位置,并将所述报文数据DataSegment拷贝到所述内存块中。
另一方面本发明实施例提供一种码流文件重组装置,所述装置包括:
获取模块,用于获取待处理码流包,从待处理码流包中获取连接标识、报文数据DataSegment和序号seq,并发送给分析模块;
所述分析模块,用于若所述报文数据DataSegment不为空,则根据所述连接标识获取与所述连接节点相对应的数据存储空间buffer,根据所述序号seq获取相对偏移量seq1,然后将所述相对偏移量seq1与所述数据存储空间buffer的长度相比,获取与所述报文数据DataSegment相对应的在所述数据存储空间buffer中分配的内存块位置,并将所述报文数据DataSegment和所述内存块位置信息发送给所述存储模块;
所述存储模块,将所述报文数据DataSegment拷贝到所述内存块中。
又一方面本发明实施例提供一种计算机设备,其特征在于,包括存储器和处理器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行下述方法:码流文件重组方法。
还一方面本发明实施例提供了一种计算机程序,包括程序代码,所述程序代码用于执行如下操作:
所述处理器用于调用所述存储器中的逻辑指令,以执行如下方法:
码流文件重组的方法。
再一方面本发明实施例提供一种计算机可读存储介质,用于存储如前所述的计算机程序令。
本发明实施例提供的码流文件重组方法及装置,通过计算所述待处理码流包的所述相对偏移量seq1来获取与所述报文数据DataSegment相对应的所述内存块的位置,免去了构造TCP报文段组织结构的复杂过程,并大幅提升了查询和定位所述内存块位置的效率。
附图说明
图1为本发明实施例的码流文件重组方法流程图;
图2为依据本发明实施例的码流文件重组装置流程示意图;
图3为本发明实施例的一种计算机设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例的码流文件重组方法流程图,如图1所示,其中所述方法包括:
步骤S01、获取待处理码流包,从所述待处理码流包中获取连接标识、报文数据DataSegment和序号seq;
步骤S02、若所述报文数据DataSegment不为空,则根据所述连接标识获取与所述连接标识相对应的数据存储空间buffer;
步骤S03、根据所述序号seq获取相对偏移量seq1,然后将所述相对偏移量seq1与所述数据存储空间buffer的长度相比,获取与所述报文数据DataSegment相对应的内存块在所述数据存储空间buffer中的位置,并将所述报文数据DataSegment拷贝到所述内存块中。
在对码流文件进行分析之前,先用抓包工具在一个固定的时间段内对码流包进行抓取,例如WinNetCap在网络侧进行抓包、或者Wireshark在路由侧进行抓包,抓取到的所有码流包组成离线码流文件,然后再对所述离线码流文件中的码流包逐一进行分析,同时再继续抓取下一时间段的离线码流文件。
先从离线码流文件中获取待处理码流包,所述待处理码流包至少包括有Pcap头、ethernet头、IP头、TCP头和TCP数据报文,其中由于本发明不需要Pcap头和ethernet头中包含的信息,所以Pcap头和ethernet头的信息会被忽略或者直接截掉。然后在IP头和TCP头中提取与所述待处理码流包对应的连接标识,并提取TCP数据报文中的报文数据DataSegment和TCP头中的序号seq。
判断所述报文数据DataSegment是否为空,具体的判断方式很多,例如可以直接比较待处理码流包的长度与存储的长度阈值相比,其中所述长度阈值为码流包中报文数据DataSegment为空时最长的码流包长度。如果所述待处理码流包的长度大于所述长度阈值,则可知所述报文数据DataSegment不为空,否则认为所述报文数据DataSegment为空。
若经过判断所述报文数据DataSegment不为空,则需要根据所述连接标识在内存中查找是否已经存在与所述连接标识相对应的数据存储空间buffer。如果不存在则要新建一个与所述连接标识相对应的数据存储空间buffer。如果在内存中查找到了所述数据存储空间buffer,则根据已经从TCP头中获取的序号seq得到相对偏移量seq1。
然后将所述相对偏移量seq1与所述数据存储空间buffer长度相比,以获取与所述报文数据DataSegment相对应的内存块在所述数据存储空间buffer中的位置。如果所述相对偏移量seq1小于所述buffer长度,则所述数据存储空间buffer的长度不变,且可知所述内存块在所述数据存储空间buffer已经分配的内存空间中,并可以根据所述相对偏移量seq1与所述buffer长度具体比较结果,获取所述内存块的具体位置。如果所述相对偏移量seq1不小于所述buffer长度,则需要在所述数据存储空间buffer后重新分配一个新的内存空间给所述数据存储空间buffer,此时所述数据存储空间buffer的长度变为所述相对偏移量seq1加上所述内存块的长度,而所述内存块的位置为所述数据存储空间buffer尾部。在获取到所述内存块的位置后,需要将所述报文数据DataSegment拷贝到所述内存块中。
例如,获知所述待处理码流包中的所述相对偏移量seq1为5000,所述内存块的长度为1000,而与所述待处理码流包中连接标识相对应的数据存储空间buffer的当前长度为7000,则可知,所述相对偏移量seq1小于所述buffer长度,两者相减为2000,则可知所述内存块的起始位置在所述数据存储空间5000处。
再例如,所述数据存储空间buffer的当前长度为3000,则可知,需要分配长度为3000的内存空间给当前所述数据存储空间buffer,此时所述buffer的长度变为6000,而所述内存块在增加内存空间后的数据存储空间buffer的尾部,即所述内存块的起始位置在所述数据存储空间5000处。
本发明实施例通过计算所述待处理码流包的所述相对偏移量seq1并与所述数据存储空间buffer长度比较来获取与所述报文数据DataSegment相对应的所述内存块的位置,免去了构造TCP报文段组织结构的复杂过程,节省了大量的内存空间,并大幅提升了查询和定位所述内存块位置的效率。
基于上述实施例,进一步地,所述若所述报文数据DataSegment不为空,则根据所述连接标识获取与所述连接标识相对应的数据存储空间buffer,具体为:
若所述报文数据DataSegment不为空,则根据所述连接标识在存储的连接链表中查找是否存在与所述连接标识相对应的连接节点,并获取与所述连接节点相对应的数据存储空间buffer。
为了能够判断在内存中是否存在与所述待处理码流包中获取的连接标识相对应的数据存储空间buffer,就需要将所述连接标识与存储在连接链表中的连接节点进行比对,其中每个连接节点都有唯一对应的连接标识。具体地是先获取连接链表中的一个连接节点作为对比节点,将所述待处理码流包的连接标识与对比节点所对应的连接标识进行对比,如果相同,则表示对比节点就是与所述待处理码流包的连接标识相对应的连接节点,而对比节点所对应的数据存储空间buffer也就是与所述待处理码流包的连接标识相对应的数据存储空间buffer。如果不相同,则表示对比节点并不是与所述待处理码流包的连接标识相对应的连接节点,需要重新在连接链表中获取另一个连接节点作为对比节点,以进行下一次对比,直到找到与所述待处理码流包的连接标识相对应的连接节点为止。
如果在遍历完连接链表中的所有连接节点而没有找到与所述待处理码流包的连接标识相对应的连接节点,则需要在连接链表中新建一个与所述待处理码流包的连接标识相对应的连接节点,并在内存中新建一个与新建的连接节点相对应的数据存储空间buffer。
本发明实施例通过在所述连接链表中查找与所述待处理码流包的连接标识相对应的连接节点,进而通过连接节点查找到相对应的数据存储空间buffer可以使查找的过程更为方便快捷。
基于上述实施例,进一步的,所述获取待处理码流包,从所述待处理码流包中获取连接标识、报文数据DataSegment和序号seq后还包括:
获取TcpFlag;
相应地,若所述报文数据DataSegment为空,则提取所述TcpFlag中FIN或RST的值;
若所述FIN=1或RST=1,则将所述数据存储空间buffer中的数据读取入硬盘,并删除所述数据存储空间buffer和在所述连接链表中与所述数据存储空间相对应的所述连接节点。
在获取所述待处理码流包的报文数据DataSegment后,要先判断所述报文数据DataSegment是否为空,如果不为空,则查找到与所述待处理码流包的连接标识相对应的数据存储空间buffer并将报文数据DataSegment存储到相对应的内存块中。
另一方面,如果所述报文数据DataSegment为空,则获取TCP头中的TcpFlag,查看所述TcpFlag中的各个标志位。
其中一标志位FIN为终止比特,如果FIN的值为1表明此报文的发送端的数据已发送完毕,并要求释放运输连接。此时可以认为与所述待处理码流包的连接标识相对应的数据存储空间buffer中保存的报文数据即为重组完成的报文。将数据存储空间buffer中保存的报文数据记录到文档并保存到硬盘中,并在内存中清除所述数据存储空间buffer,同时在数据链表中清除与所述连接标识相对应连接节点。
另一标志位RST为复位比特,当RST的值为1时,表明TCP连接中出现严重差错,例如由于主机崩溃,必须释放连接。此时即使与待处理码流包的连接标识相对应的数据存储空间buffer中保存的报文数据还没有完成重组,也需要将保存的报文数据记录到文档并保存到硬盘中,并在内存中清除所述数据存储空间buffer,同时在数据链表中清除与所述连接标识相对应的连接节点。
如果所述FIN和RST的值均为0,则进一步判断所述TcpFlag中的确认比特ACK的值,如果所述ACK值为1,则直接丢弃所述待处理码流包。如果ACK的值也为0,则可认为所述待处理码流包为初始码流包,即所述TcpFlag中的同步标志位SYN值为1,也就是在所述连接链表中不存在与所述待处理码流包的连接标识相对应的连接节点,需要在所述连接链表中新建一个连接节点,而此时所述连接标识相对应的数据存储空间buffer的长度为0。
当然在确认所述待处理码流包为初始码流包后,也可以先在所述连接链表中查找是否存在与所述待处理码流包的连接标识相对应的连接节点,如果不存在则再新建连接节点,否则不需要新建。不过所述查找过程会消耗大量的查询时间。
本发明实施例根据获取到的所述TCP头中的TcpFlag各标志位的值来处理所述报文数据DataSegment为空的待处理码流包,从而更好得来处理内存中的与所述待处理码流包的连接标识相对应的连接节点和数据存储空间buffer。
基于上述实施例,进一步的,所述连接链表为Hash表,其中所述Hash表的Hash值HashValue根据如下Hash函数算法公式得出:
HashValue=(SrcIP+DstIP+(SrcPort*DstPort))/BuckNumber
其中所述SrcIP、DstIP、SrcPort和DstPort为所述连接标识所包含的四元组,其中所述SrcIP为源地址IP端号,所述DstIP为目的地址IP端号,所述SrcPort为源地址端口号,所述DstPort为目的地址端口号,所述BuckNumber为最接近离线码流文件中同时出现不同四元组个数的3/4的质数。
所述连接链表为所有连接节点的组织结构,同时也从很大程度上决定了所述待处理码流包的连接标识与连接节点的比对查询过程。连接链表的组织结构有很多,其中最为简单的一种就是直接将所有连接节点组合成一个单线性链表,也就是将所有的连接节点按照建立的时间顺序进行前后串联,并且在查询过程中,从第一个连接节点开始进行比对,直到找到需要的连接节点为止。
本发明实施例采用的是一种Hash表的链表方式,也就是先根据连接标识计算出一个相对应的Hash值HashValue,将所有具有相同HashValue的连接标识相对应的连接节点组成一个集合,然后再将这个集合中连接节点根据建立时间的先后,以单线性链表的形式组织,也就是每次都将新建立的连接节点置于连接链表的最后。采用Hash表的好处在于,在将连接标识与连接节点进行比对前,先通过对所述HashValue的计算和比对,可以缩小与连接标识相比对的连接节点的集合大小,可以大大缩短查询的时间。
其中所述的计算公式如下:
HashValue=(SrcIP+DstIP+(SrcPort*DstPort))/BuckNumber
所述SrcIP和DstIP为在所述待处理码流包IP头中获取的源地址IP端号和目的地址IP端号,SrcPort和DstPort为在所述待处理码流包TCP头中获取的源地址端口号和目的地址端口号。由所述SrcIP、DstIP、SrcPort和DstPort所组成的四元组可以很好得标识待处理码流包,成为所述待处理码流包的连接标识。
而所述BuckNumber的值可以根据实际应用的情况而定,可以是一个固定值,也可以是根据经验获取的一个变化值。在本实施例中只给出其中一个经验值,即最接近离线码流文件中同时出现不同四元组个数的3/4的质数。也就是在一次离线码流文件中所有码流包不同连接标识的数量的3/4的质数,其中所述数量的取值也可以根据不同的应用场景进行调整。
本发明实施例通过Hash表来建立连接链表,并给出一个新的Hash值HashValue计算公式大大缩减了待处理码流连接标识在连接链表中的查询时间,且更符合实际的应用场景。
基于上述实施例,进一步的,所述相对偏移量seq1根据所述序号seq与存储的初始偏移量seq0相减获得,其中所述初始偏移量seq0根据初始码流包中的序号获得,其中所述初始码流包为所述报文数据DataSegment为空,且所述TcpFlag中包含SYN=1的待处理码流包。
在所述待处理码流包中的报文数据DataSegment不为空的情况下,需要根据所述序号seq来计算所述相对偏移量seq1。具体为,获取在与所述待处理码流包连接标识相对应的连接节点上存储的初始偏移量seq0,然后再将所述序号与所述初始偏移量seq0相减,从而得到所述相对偏移量seq1。
其中所述初始偏移量seq0为根据所述初始码流包中的序号得到的。也就是通过对报文数据DataSegment为空的待处理码流包的TcpFlag标识位的判断并获知所述待处理码流包为初始码流包后,在连接链表中新建连接节点时,将根据所述待处理码流包序号seq获得的初始偏移量seq0记录到连接节点中。
本发明实施例通过初始码流包在建立新的连接节点时记录初始偏移量seq0,从而可以更方便得得到所述待处理码流包的相对偏移量seq1,从而使待处理码流包的报文数据DataSegment更快速得找到相对应的数据存储空间buffer和内存块的位置,并进行保存。
基于上述实施例,进一步的,所述方法还包括:
每经过预设时间段后,删除所述连接链表中建立的时间早于预设时间阈值的连接节点。
由于有可能在数据传输的过程或者数据解析的过程出现错误等原因,在内存中保存的连接节点和相对应的数据存储空间可能会因为一直没有完成重组,而长时间占据内存空间,导致内存空间的大量浪费,同时降低待处理码流包的处理效率。
因此就需要对这些长期占据内存空间的连接节点和相对应的数据存储空间进行清理。本实施例采用的方法是在连接链表中新建连接节点时,在连接节点记录一个建立时间,然后所述连接链表会在每经过预设时间段后,例如,每20分钟,就对连接链表中所有连接节点的建立时间进行一次筛选,如果连接节点的建立时间早于某一时间阈值,或者说连接节点的存在时间长于某一预设的时间阈值,例如30分钟,则认为所述连接节点所对应的数据存储空间内保存的报文数据已经重组结束,然后将所述数据存储空间内保存的报文数据记录到文档并保存到硬盘中,并在内存中清除所述数据存储空间,在连接链表中清除所述连接节点。
本发明实施例,通过对长时间无法完成报文重组的连接节点和数据存储空间进行清理,可以大大得节省内存,并提高待处理码流包的处理效率。
图2为依据本发明实施例的码流文件重组装置流程示意图,如图2所示,所述装置包括:获取模块11、分析模块12和存储模块13,其中:
所述获取模块11用于获取待处理码流包,从待处理码流包中获取连接标识、报文数据DataSegment和序号seq,并发送给分析模块12;所述分析模块12用于若所述报文数据DataSegment不为空,则根据所述连接标识获取与所述连接节点相对应的数据存储空间buffer,根据所述序号seq获取相对偏移量seq1,然后将所述相对偏移量seq1与所述数据存储空间buffer的长度相比,获取与所述报文数据DataSegment相对应的在所述数据存储空间buffer中分配的内存块位置,并将所述报文数据DataSegment和所述内存块位置信息发送给所述存储模块13;所述存储模块13将所述报文数据DataSegment拷贝到所述内存块中。
具体地,所述获取模块11先从离线码流文件中获取待处理码流包,所述待处理码流包至少包括有Pcap头、ethernet头、IP头、TCP头和TCP数据报文,其中由于本发明不需要Pcap头和ethernet头中包含的信息,所以Pcap头和ethernet头的信息会被忽略或者直接截掉。然后在IP头和TCP头中提取与所述待处理码流包对应的连接标识,并提取TCP数据报文中的报文数据DataSegment和TCP头中的序号seq,发送给所述分析模块12。
所述分析模块12,判断所述报文数据DataSegment是否为空,若经过判断所述报文数据DataSegment不为空,则需要根据所述连接标识在内存中查找是否已经存在与所述连接标识相对应的数据存储空间buffer。如果不存在则要新建一个与所述连接标识相对应的数据存储空间buffer。如果在内存中查找到了所述数据存储空间buffer,则根据已经从TCP头中获取的序号seq得到相对偏移量seq1。
然后将所述相对偏移量seq1与所述数据存储空间buffer长度相比,以获取与所述报文数据Datasegment相对应的内存块在所述数据存储空间buffer中的位置。如果所述相对偏移量seq1小于所述buffer长度,则所述数据存储空间buffer的长度不变,可知所述内存块在所述数据存储空间buffer已经分配的内存空间中,并可以根据所述相对偏移量seq1与所述buffer长度具体比较结果,获取所述内存块的具体位置。如果所述相对偏移量seq1不小于所述buffer长度,则需要在所述数据存储空间buffer后重新分配一个新的内存空间给所述数据存储空间buffer,此时所述数据存储空间buffer的长度变为所述相对偏移量seq1加上所述内存块的长度,而所述内存块的位置为所述数据存储空间buffer尾部。所述分析模块12在获取到所述内存块的位置后,将所述报文数据DataSegment和所述内存块位置信息发送给所述存储模块13。
所述存储模块13需要根据接收到的信息,将所述报文数据DataSegment拷贝到所述内存块中。
本发明实施例提供的装置用于执行上述方法,其功能具体参考上述方法实施例,其具体方法流程在此处不再赘述。
本发明实施例通过计算所述待处理码流包的所述相对偏移量seq1并与所述数据存储空间buffer长度比较来获取与所述报文数据DataSegment相对应的所述内存块的位置,免去了构造TCP报文段组织结构的复杂过程,并大幅提升了查询和定位所述内存块位置的效率。
基于上述实施例,进一步地,所述分析模块,用于若所述报文数据DataSegment不为空,则根据所述连接标识获取与所述连接节点相对应的数据存储空间buffer,具体为:
若所述报文数据DataSegment不为空,则根据所述连接标识在存储的连接链表中查找是否存在与所述连接标识相对应的连接节点,并获取与所述连接节点相对应的数据存储空间buffer。
所述分析模块为了能够判断在内存中是否存在与所述待处理码流包中获取的连接标识相对应的数据存储空间buffer,就需要将所述连接标识与存储在连接链表中的连接节点进行比对,其中每个连接节点都有唯一对应的连接标识。具体地是先获取连接链表中的一个连接节点作为对比节点,将所述待处理码流包的连接标识与对比节点所对应的连接标识进行对比,如果相同,则表示对比节点就是与所述待处理码流包的连接标识相对应的连接节点,而对比节点所对应的数据存储空间buffer也就是与所述待处理码流包的连接标识相对应的数据存储空间buffer。如果不相同,则表示对比节点并不是与所述待处理码流包的连接标识相对应的连接节点,需要重新在连接链表中获取另一个连接节点作为对比节点,以进行下一次对比,直到找到与所述待处理码流包的连接标识相对应的连接节点为止。
如果所述分析模块在遍历完连接链表中的所有连接节点而没有找到与所述待处理码流包的连接标识相对应的连接节点,则需要在连接链表中新建一个与所述待处理码流包的连接标识相对应的连接节点,并在内存中新建一个与新建的连接节点相对应的数据存储空间buffer。
本发明实施例提供的装置用于执行上述方法,其功能具体参考上述方法实施例,其具体方法流程在此处不再赘述。
本发明实施例通过在所述连接链表中查找与所述待处理码流包的连接标识相对应的连接节点,进而通过连接节点查找到相对应的数据存储空间buffer可以使查找的过程更为方便快捷。
图3一种计算机设备结构示意,如图3所求,所述计算机设备,包括:处理器(processor)601、存储器(memory)602和总线603;
其中,所述处理器601和所述存储器602通过所述总线603完成相互间的通信;
所述处理器601用于调用所述存储器602中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:码流文件重组的方法。
本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:码流文件重组的方法。
本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:码流文件重组的方法。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的计算机设备等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种码流文件重组方法,其特征在于,所述方法包括:
获取待处理码流包,从所述待处理码流包中获取连接标识、报文数据DataSegment和序号seq;
若所述报文数据DataSegment不为空,则根据所述连接标识获取与所述连接标识相对应的数据存储空间buffer;
根据所述序号seq获取相对偏移量seq1,然后将所述相对偏移量seq1与所述数据存储空间buffer的长度相比,获取与所述报文数据DataSegment相对应的内存块在所述数据存储空间buffer中的位置,并将所述报文数据DataSegment拷贝到所述内存块中。
2.根据权利要求1所述的方法,其特征在于,所述若所述报文数据DataSegment不为空,则根据所述连接标识获取与所述连接标识相对应的数据存储空间buffer,具体为:
若所述报文数据DataSegment不为空,则根据所述连接标识在存储的连接链表中查找是否存在与所述连接标识相对应的连接节点,并获取与所述连接节点相对应的数据存储空间buffer。
3.根据权利要求1和2所述的方法,其特征在于,所述获取待处理码流包,从所述待处理码流包中获取连接标识、报文数据DataSegment和序号seq后还包括:
获取TcpFlag;
相应地,若所述报文数据DataSegment为空,则提取所述TcpFlag中FIN或RST的值;
若所述FIN=1或RST=1,则将所述数据存储空间buffer中的数据读取入硬盘,并删除所述数据存储空间buffer和在所述连接链表中与所述数据存储空间相对应的所述连接节点。
4.根据权利要求2所述的方法,其特征在于,所述连接链表为Hash表,其中所述Hash表的Hash值HashValue根据如下Hash函数算法公式得出:
HashValue=(SrcIP+DstIP+(SrcPort*DstPort))/BuckNumber
其中所述SrcIP、DstIP、SrcPort和DstPort为所述连接标识所包含的四元组,其中所述SrcIP为源地址IP端号,所述DstIP为目的地址IP端号,所述SrcPort为源地址端口号,所述DstPort为目的地址端口号,所述BuckNumber为最接近离线码流文件中同时出现不同四元组个数的3/4的质数。
5.根据权利要求1或3所述的方法,其特征在于,所述相对偏移量seq1根据所述序号seq与存储的初始偏移量seq0相减获得,其中所述初始偏移量seq0根据初始码流包中的序号获得,其中所述初始码流包为所述报文数据DataSegment为空,且所述TcpFlag中包含SYN=1的待处理码流包。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
每经过预设时间段后,删除所述连接链表中建立的时间早于预设时间阈值的连接节点。
7.一种码流文件重组装置,其特征在于,所述装置包括:
获取模块,用于获取待处理码流包,从待处理码流包中获取连接标识、报文数据DataSegment和序号seq,并发送给分析模块;
所述分析模块,用于若所述报文数据DataSegment不为空,则根据所述连接标识获取与所述连接节点相对应的数据存储空间buffer,根据所述序号seq获取相对偏移量seq1,然后将所述相对偏移量seq1与所述数据存储空间buffer的长度相比,获取与所述报文数据DataSegment相对应的在所述数据存储空间buffer中分配的内存块位置,并将所述报文数据DataSegment和所述内存块位置信息发送给所述存储模块;
所述存储模块,将所述报文数据DataSegment拷贝到所述内存块中。
8.根据权利要求7所述的方法,其特征在于,所述分析模块,用于若所述报文数据DataSegment不为空,则根据所述连接标识获取与所述连接节点相对应的数据存储空间buffer,具体为:
若所述报文数据DataSegment不为空,则根据所述连接标识在存储的连接链表中查找是否存在与所述连接标识相对应的连接节点,并获取与所述连接节点相对应的数据存储空间buffer。
9.一种计算机设备,其特征在于,包括存储器和处理器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至6任一所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至6任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710670170.4A CN109547389B (zh) | 2017-08-08 | 2017-08-08 | 一种码流文件重组的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710670170.4A CN109547389B (zh) | 2017-08-08 | 2017-08-08 | 一种码流文件重组的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109547389A true CN109547389A (zh) | 2019-03-29 |
CN109547389B CN109547389B (zh) | 2021-12-07 |
Family
ID=65827718
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710670170.4A Active CN109547389B (zh) | 2017-08-08 | 2017-08-08 | 一种码流文件重组的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109547389B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110377977A (zh) * | 2019-06-28 | 2019-10-25 | 南方电网科学研究院有限责任公司 | 敏感信息泄露的检测方法、装置及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101316232A (zh) * | 2008-07-09 | 2008-12-03 | 南京邮电大学 | 基于网络协议版本6的分片重组方法 |
CN103927265A (zh) * | 2013-01-04 | 2014-07-16 | 深圳市龙视传媒有限公司 | 一种内容分级存储装置、内容获取方法及内容获取装置 |
CN105183373A (zh) * | 2015-08-28 | 2015-12-23 | 迈普通信技术股份有限公司 | 一种数据处理方法及网络设备 |
CN106209698A (zh) * | 2016-07-07 | 2016-12-07 | 西安交大捷普网络科技有限公司 | 基于Libnids的协议还原方法 |
CN106230744A (zh) * | 2016-07-26 | 2016-12-14 | 京信通信系统(中国)有限公司 | 一种数据流乱序重组的方法及转发设备 |
CN106685862A (zh) * | 2015-11-11 | 2017-05-17 | 大唐移动通信设备有限公司 | 一种分片数据包处理方法及装置 |
CN106789730A (zh) * | 2016-12-29 | 2017-05-31 | 杭州迪普科技股份有限公司 | 分片报文的处理方法及装置 |
EP3197175A1 (en) * | 2014-08-29 | 2017-07-26 | Sony Corporation | Reception device and reception method |
-
2017
- 2017-08-08 CN CN201710670170.4A patent/CN109547389B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101316232A (zh) * | 2008-07-09 | 2008-12-03 | 南京邮电大学 | 基于网络协议版本6的分片重组方法 |
CN103927265A (zh) * | 2013-01-04 | 2014-07-16 | 深圳市龙视传媒有限公司 | 一种内容分级存储装置、内容获取方法及内容获取装置 |
EP3197175A1 (en) * | 2014-08-29 | 2017-07-26 | Sony Corporation | Reception device and reception method |
CN105183373A (zh) * | 2015-08-28 | 2015-12-23 | 迈普通信技术股份有限公司 | 一种数据处理方法及网络设备 |
CN106685862A (zh) * | 2015-11-11 | 2017-05-17 | 大唐移动通信设备有限公司 | 一种分片数据包处理方法及装置 |
CN106209698A (zh) * | 2016-07-07 | 2016-12-07 | 西安交大捷普网络科技有限公司 | 基于Libnids的协议还原方法 |
CN106230744A (zh) * | 2016-07-26 | 2016-12-14 | 京信通信系统(中国)有限公司 | 一种数据流乱序重组的方法及转发设备 |
CN106789730A (zh) * | 2016-12-29 | 2017-05-31 | 杭州迪普科技股份有限公司 | 分片报文的处理方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110377977A (zh) * | 2019-06-28 | 2019-10-25 | 南方电网科学研究院有限责任公司 | 敏感信息泄露的检测方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109547389B (zh) | 2021-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10917322B2 (en) | Network traffic tracking using encapsulation protocol | |
US9356844B2 (en) | Efficient application recognition in network traffic | |
CN105939297B (zh) | 一种tcp报文重组方法和装置 | |
CN109450936A (zh) | 一种基于Kafka的异构通信协议的适配方法及装置 | |
JP5534481B2 (ja) | 通信品質監視システム、通信品質監視方法、及び記憶媒体 | |
JP2007184799A (ja) | パケット通信装置 | |
CN108881158A (zh) | 数据交互系统和方法 | |
EP3790239B1 (en) | Network access method and device for edge router | |
CN106357726B (zh) | 负载均衡方法及装置 | |
CN105939284B (zh) | 报文控制策略的匹配方法及装置 | |
CN106126629B (zh) | 一种基于直播行业的主数据管理方法及系统 | |
CN110532251B (zh) | 基于布隆过滤器算法的地震台网大数据去重的方法 | |
CN101771595A (zh) | 一种报文保序的方法和装置 | |
WO2024103716A1 (zh) | 一种链路中子网管理的方法、装置、设备及可读介质 | |
RU2602333C2 (ru) | Сетевая система, способ обработки пакетов и носитель записи | |
JP2010081343A (ja) | パケット特定プログラム、パケット特定方法及びパケット特定装置 | |
CN109547389A (zh) | 一种码流文件重组的方法及装置 | |
CN113630301A (zh) | 基于智能决策的数据传输方法、装置、设备及存储介质 | |
US9137158B2 (en) | Communication apparatus and communication method | |
CN106302837A (zh) | 一种光网络单元的mac地址表管理方法及装置 | |
US9674052B2 (en) | Data packet stream fingerprint | |
CN106936718B (zh) | PPPoE报文传输方法和PPPoE服务器 | |
CN109446200A (zh) | 一种数据处理的方法及装置 | |
CN109618015A (zh) | 基于数据中心的去堆叠实现方法及装置 | |
CN106559439B (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 |