掌桥专利:专业的专利平台
掌桥专利
首页

网络流量的数据处理方法、装置、设备及存储介质

文献发布时间:2023-06-19 10:06:57


网络流量的数据处理方法、装置、设备及存储介质

技术领域

本发明涉及互联网及通信技术领域,尤其涉及一种网络流量的数据处理方法、装置、设备及存储介质。

背景技术

随着互联网技术的飞速发展,当前人们将绝大部分信息存储于网络中,网络的安全问题逐渐成为影响人们信息安全的重要问题。而当今时代网络攻击的手段层出不穷,许多攻击无法在第一时间进行有效防御,因此事后追溯成为当前安全防御的一种重要方法。而事后追溯的重要前提是能将攻击时产生的网络流量数据进行封存取证。

网络流量数据是指网络传输中的数据流,数据流是指具有相同五元组(包括源IP、目的IP、源端口、目的端口及协议)的报文的集合。在网络传输中,对于有文件传输的数据流,每条数据流可以还原出一个或多个文件,还原出的文件被存储到一定的存储空间中,比如写入磁盘中。但是,网络中往往会存在大量重复的文件传输,比如企业内部的邮件附件转发、浏览网站时下载的js或图片文件等,这些文件都需要进行重复的存储或检测,极大的浪费了存储资源或者影响检测性能,因此,需要对还原出的文件进行去重处理。现有技术中,通常基于哈希表对文件进行去重,但是哈希表冲突概率较大,导致查找性能较低,要解决冲突问题,哈希表需要足够大,因此占用内存较多。

发明内容

本发明实施例提供一种网络流量的数据处理方法、装置、设备及存储介质,以解决现有技术内存占用较多等缺陷。

第一个方面,本发明实施例提供一种网络流量的数据处理方法,包括:

获取待处理文件;

根据所述待处理文件,确定第一哈希值;

根据所述第一哈希值,获取目标bloom过滤器的起始地址;

若基于所述起始地址对应的目标bloom过滤器确定所述待处理文件不存在,则对所述待处理文件进行存储,和/或对所述待处理文件进行安全检测。

第二个方面,本发明实施例提供一种网络流量的数据处理装置,包括:

获取模块,用于获取待处理文件;

确定模块,用于根据所述待处理文件,确定第一哈希值;

第一处理模块,用于根据所述第一哈希值,获取目标bloom过滤器的起始地址;

第二处理模块,用于若基于所述起始地址对应的目标bloom过滤器确定所述待处理文件不存在,则对所述待处理文件进行存储,和/或对所述待处理文件进行安全检测。

第三个方面,本发明实施例提供一种电子设备,包括:存储器、收发器及至少一个处理器;

所述处理器、所述存储器与所述收发器通过电路互联;

所述存储器存储计算机执行指令;所述收发器,用于接收待处理文件;

所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一个方面以及第一个方面各种可能涉及的方法。

第四个方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一个方面以及第一个方面各种可能涉及的方法。

本发明实施例提供的网络流量的数据处理方法、装置、设备及存储介质,通过将文件的哈希值映射到多个bloom过滤器的起始地址,基于文件的哈希值找到对应的bloom过滤器,进一步基于bloom过滤器实现对文件的去重,相对于现有的基于哈希表进行去重,有效减少了内存空间的占用。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一实施例提供的网络流量的数据处理方法的流程示意图;

图2为本发明一实施例提供的网络流量的数据处理方法的一种示例性流程示意图;

图3为本发明一实施例提供的预设数组的示例性结构示意图;

图4为本发明一实施例提供的网络流量的数据处理方法的另一种示例性流程示意图;

图5为本发明一实施例提供的bloom过滤器的原理示意图;

图6为本发明一实施例提供的一种示例性的整体流程示意图;

图7为本发明一实施例提供的网络流量的数据处理装置的结构示意图;

图8为本发明另一实施例提供的网络流量的数据处理装置的结构示意图;

图9为本发明一实施例提供的电子设备的结构示意图。

通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

首先对本发明所涉及的名词进行解释:

bloom过滤器:bloom filter,也称布隆过滤器,是一种空间效率很高的随机数据结构,利用位数组简洁地表示一个集合,并能判断一个元素是否属于这个集合。初始状态时,bloom filter是一个包含m位的位数组,每一位都置为0,为了表达S={x

MD5:也称MD5信息摘要算法(MD5 Message-Digest Algorithm),是一种密码散列函数,可以产生出一个128位(16字节)的散列值(hash value,也称哈希值),用于确保信息传输完整一致。

SHA-1:Secure Hash Algorithm 1,也称安全散列算法1,是一种密码散列函数,可以生成一个160位(20字节)的散列值,散列值通常的呈现形式为40个十六进制数。

SHA-256:Secure Hash Algorithm 256,也称安全散列算法256,是一种密码散列函数,可以生成一个256位的散列值。

此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。在以下各实施例的描述中,“多个”的含义是两个及两个以上,除非另有明确具体的限定。

下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。

本发明一实施例提供一种网络流量的数据处理方法,用于网络传输中的文件去重处理,可以应用于任意安全产品的全流量检测应用场景,也可以应用于其他需要对网络传输文件进行去重的应用场景。本实施例的执行主体为网络流量的数据处理装置(以下简称该装置),该装置可以设置在电子设备中,该电子设备可以是服务器或者其他可实现的计算机设备。服务器可以是单个服务器也可以是服务器集群。

如图1所示,为本实施例提供的网络流量的数据处理方法的流程示意图,该方法包括:

步骤101,获取待处理文件。

具体的,待处理文件可以为从网络流量数据中还原出的文件,待处理文件可以包括一个或多个文件。网络流量数据可以是网络传输过程中缓存的数据流。网络流量数据可以包括一条或多条数据流。对于有文件传输的数据流,每条数据流可以还原出一个或多个文件,待处理文件可以是网络流量的数据处理装置在网络传输过程中实时从网络流量数据中还原获得,也可以是从其他设备获得,即其他设备从网络流量数据中还原出文件后发送给网络流量的数据处理装置。具体可以根据实际需求设置。

具体的还原过程可以为:接收报文,对报文进行解析、识别协议,根据报文的五元组确定该报文所属的数据流,并判断该数据流是否完成了完整的文件传输,若已完成,从该数据流中各报文的有效载荷payload中提取出文件部分,还原成完整的文件。对于不同的协议,提取文件部分的规则可能不同,比如针对电子邮件、HTTP协议等,可以根据不同协议所对应的提取规则提取其文件部分。具体提取规则可以根据不同协议的具体格式进行设置,本实施例不做限定。

步骤102,根据待处理文件,确定第一哈希值。

具体的,在获取到待处理文件后,则可以根据待处理文件,确定第一哈希值,可以采用任意的哈希算法来确定待处理文件的该第一哈希值,比如MD5、SHA-1、SHA-256等,本实施例不做限定。对于实现哈希算法的哈希函数同样可以根据实际需求设置,本实施例不做限定。

可以理解地,每次根据待处理文件确定第一哈希值应采用相同的哈希函数。

步骤103,根据第一哈希值,获取目标bloom过滤器的起始地址。

具体的,可以设置哈希值与多个bloom过滤器的起始地址的映射关系,在确定了待处理文件的第一哈希值后,则可以根据第一哈希值获取目标bloom过滤器的起始地址。bloom过滤器的起始地址为bloom过滤器在内存中的起始地址。

哈希值与多个bloom过滤器的映射关系可以根据实际需求设置。比如,以X个bloom过滤器为例,可以将哈希值对X取余,将余数i表示第i个bloom过滤器。

可选地,可以是采用数组存放各bloom过滤器的起始地址。将哈希值通过一定规则映射到数组的下标,通过数组的下标从数组中获取相应的bloom过滤器的起始地址。

可选地,还可以是通过列表的形式存储i与bloom过滤器的起始地址的对应关系。

每个bloom过滤器可以根据实际需求设置位数,比如位数为m,则该bloom过滤器为包含m位的位数组。

步骤104,若基于起始地址对应的目标bloom过滤器确定待处理文件不存在,则对待处理文件进行存储,和/或对待处理文件进行安全检测。

具体的,在根据第一哈希值获取到某一起始地址后,将该起始地址对应的bloom过滤器作为目标bloom过滤器,基于该目标bloom过滤器来确定待处理文件是否存在。待处理文件是否存在可以表示该待处理文件是否为重复传输,若存在表示在此次之前已经传输并存储和/或进行过安全检测,不需要再重复存储和/或安全检测,有效减少对存储空间的占用,以及减少检测资源的浪费,若不存在,则表示该待处理文件可能是首次传输,或者之前未存储及未进行安全检测,从而可以将待处理文件进行存储,和/或对待处理文件进行安全检测。将待处理文件进行存储和/或对待处理文件进行安全检测,表示可以将待处理文件进行存储,或者也可以对待处理文件进行安全检测,或者还可以是既进行存储又进行安全检测,具体可以根据实际需求设置。安全检测也可简称为检测。

可选地,可以进一步获取待处理文件的第二哈希值,根据第二哈希值判断待处理文件这一元素是否属于目标bloom过滤器这一集合,以此确定该待处理文件是否存在。具体判断一个元素是否属于bloom过滤器集合的方式可以采用现有技术中任一方式,本实施例不做限定。

示例性的,可以根据该待处理文件生成M个第二哈希值,通过第二哈希值映射到目标bloom过滤器中的M个目标位,根据M个目标位的值来确定该待处理文件是否存在。若M个目标位中,有至少一个目标位为0,则表示该待处理文件不存在,若M个目标位均为1,则表示该待处理文件可能存在。若该待处理文件不存在,则将该待处理文件进行存储或检测,或者既存储又检测,并将M个目标位中为0的位更新为1,以为后续查询提供准确的数据支持,当后续该待处理文件重复传输时,可以确定相应的M个目标位均为1,用于确定该待处理文件存在,或者用于初步确定该待处理文件存在。

可选地,对待处理文件进行安全检测可以是由该装置自己执行,或者该装置可以将待处理文件发送给单独设置的安全检测设备,由安全检测设备对待处理文件进行安全检测并向该装置返回检测结果,该装置可以记录检测信息,比如检测标记以及检测结果,检测标记用于表示该待处理文件已进行了检测,可以为后续网络传输中的文件去重提供依据。

可选地,为了避免对于待处理文件已存在的误判断,在基于目标bloom过滤器确定存在后,还可以进一步查询数据库,来确定待处理文件确实存在。

对待处理文件进行存储可以是根据实际需求将待处理文件存储到一定的存储空间,比如可以是写入磁盘,也可以是存储到其他存储空间。

对待处理文件进行存储和/或进行安全检测后,可以将待处理文件的标识信息和存储信息存储到数据库中,标识信息可以是待处理文件的哈希值,还可以将该待处理文件的其他相关信息存储到数据库,比如该待处理文件的生成时间,若进行了安全检测,还可以存储检测标记,以及检测结果等,具体可以根据实际需求设置。

本实施例提供的网络流量的数据处理方法,通过将文件的哈希值映射到多个bloom过滤器的起始地址,基于文件的哈希值找到对应的bloom过滤器,进一步基于bloom过滤器实现对文件的去重,相对于现有的基于哈希表进行去重,有效减少了内存空间的占用。

为了使本发明的技术方案更加清楚,本发明另一实施例对上述实施例提供的方法做进一步补充说明。

如图2所示,为本实施例提供的网络流量的数据处理方法的一种示例性流程示意图。

作为一种可实施的方式,在上述实施例的基础上,可选地,根据第一哈希值,获取目标bloom过滤器的起始地址,包括:

步骤2011,根据第一哈希值,从预设数组中获取目标bloom过滤器的起始地址,预设数组中存放有各bloom过滤器的起始地址。

进一步地,根据第一哈希值,从预设数组中获取目标bloom过滤器的起始地址,包括:

确定第一哈希值对应的预设数组下标;根据预设数组下标,从预设数组中获取目标bloom过滤器的目标地址。

具体的,可以采用预设规则(可以称为第一规则)将待处理文件的第一哈希值映射到预设数组的数组下标,通过该数组下标从预设数组获取相应的元素。预设数组的各元素即为各bloom过滤器的起始地址。由于是将文件的哈希值映射到预设数组的下标,预设数组可以称为哈希数组。

示例性的,如图3所示,为本实施例提供的预设数组的示例性结构示意图。其中,预设数组为A,预设数组长度为X,即可以设置X个bloom过滤器,bloom过滤器的位数为m,A的第i个元素A[i]存放第i个bloom过滤器的起始地址(图中用箭头表示为指向bloom过滤器的起始地址)。获得的待处理文件的第一哈希值为Y,则可以采用预设的第一哈希函数H()将Y映射到[0,1,…,X-1]范围,比如,X=5,H(Y)=3,则确定第一哈希值映射到预设数组下标为3,则可以获取预设数组A的元素A[3],即为目标bloom过滤器的起始地址。其中第一规则可以根据实际需求设置,比如取余法,将Y对X取余,将余数作为预设数组下标来获取相应的目标bloom过滤器的起始地址,本实施例不做限定。

下面对bloom过滤器在本发明中的具体应用进行详细说明,如图4所示,为本实施例提供的网络流量的数据处理方法的另一种示例性流程示意图。

在一实施方式中,在若基于起始地址对应的目标bloom过滤器,确定待处理文件不存在,则对待处理文件进行存储和/或对待处理文件进行安全检测之前,该方法还包括:

步骤2021,根据待处理文件,确定M个第二哈希值,M为大于或等于2的整数。

步骤2022,根据M个第二哈希值及目标bloom过滤器,确定待处理文件是否已存在。

相应的,若基于所述起始地址对应的目标bloom过滤器确定所述待处理文件不存在,则对所述待处理文件进行存储,和/或对待处理文件进行安全检测,包括:

步骤1041,若根据M个第二哈希值及目标bloom过滤器,确定待处理文件不存在,则对待处理文件进行存储,和/或对待处理文件进行安全检测。

具体的,根据待处理文件确定M个第二哈希值可以是采用预设的M个独立的哈希函数实现,也可以采用同一哈希函数通过传递不同的参数来实现,比如采用同一哈希函数传入M=3次不同的参数,得到3个第二哈希值,以murmurhash3函数为例,其输入参数seed为hash(哈希)种子,可以使用三次不同的种子计算三次hash,获得3个第二哈希值,具体如下:

hash1=mmh3.hash(str,42)

hash2=mmh3.hash(str,43)

hash3=mmh3.hash(str,44)

hash1、hash2和hash3表示分别以42、43和44为种子计算str的hash获得的哈希值。

对于M的具体值可以根据实际需求设置,比如M设置为3、4、6等等。

可选地,对于不同bloom过滤器,在确定第二哈希值时可以采用同一组(M个)哈希函数,比如X个bloom过滤器都采用哈希函数1、哈希函数2和哈希函数3这3个哈希函数来确定3个第二哈希值,也可以分别采用不同组哈希函数,具体可以根据实际需求设置。比如,一个bloom过滤器采用哈希函数1、哈希函数2和哈希函数3,另一个bloom过滤器采用哈希函数2、哈希函数3和哈希函数4。

可选地,也可以是采用同一哈希函数通过传递M种不同的参数来实现确定M个第二哈希值。采用哈希函数确定文件的哈希值的具体操作为现有技术,在此不再赘述。

需要说明的是,对于不同bloom过滤器采用同一组哈希函数的情况,步骤2021可以是在步骤2022之前的任意时刻,不限于图4中在步骤2011之后,比如可以在步骤2011之前,只要是在获取到待处理文件之后即可,具体可以根据实际需求设置,而对于不同bloom过滤器采用不同组哈希函数确定第二哈希值的情况,步骤2021需要在步骤2011确定了目标bloom过滤器后,采用该目标bloom过滤器对应的M个哈希函数来确定M个第二哈希值。

由于bloom过滤器在判断一个元素是否属于其表示的集合时有一定的误判率,误判率与bloom过滤器的位数m及需要查找的元素个数n有关,比如预设误判率为p,满足:

而哈希函数的个数M满足:

因此,可以根据实际需求及上述公式来选择M和m的值。

通过在内存中维护多个bloom过滤器和一个简单的哈希数组,根据第一哈希值找到bloom过滤器地址,再通过对该地址对应的目标bloom过滤器的快速内存访问,快速判断待处理文件是否重复传输,相对于基于哈希表查找进行去重,大大减少内存消耗,相对于直接数据库查询,有效减少数据库查询次数,从而提升网络流量处理性能。相对于单个较长的bloom过滤器,降低了对系统可用连续内存空间的需求。

示例性的,对于单个bloom过滤器,以误判率p为0.001为例,对于n=10亿个元素的集合,需要140亿位的bloom过滤器,占用的内存大约为1.7GB。而在网络传输中,对于大量的文件存储及检测的应用场景来说,每天10亿文件传输是常见的,若要运行365天,极端情况下需要的bloom过滤器占用内存为600GB。即使可以定期将bloom过滤器清零,比如30天清零一次,30天内bloom过滤器占用的内存为50G,这需要一段连续的内存,在系统繁忙时,内存碎片较多,往往会无法分配。而采用本发明的方法,比如可以建立一个长为365的哈希数组B,哈希数组中每个元素为一个140亿的bloom过滤器的起始地址,也即采用365个140亿的bloom过滤器,那么600GB内存的bloom过滤器可以被分割为365个1.7GB内存的bloom过滤器,明显占用的连续内存较少,从而可以避免因需要分配连续内存过大导致无法分配的情况发生。

可选地,根据M个第二哈希值及目标bloom过滤器,确定待处理文件是否已存在,包括:

根据M个第二哈希值,确定各第二哈希值在目标bloom过滤器中的对应的目标位;若目标bloom过滤器中M个目标位中有至少一个目标位为0,则确定待处理文件不存在。

具体的,bloom过滤器为m位的位数组,可以根据第二规则将M个第二哈希值映射到[0,1,…,m-1]范围中的值,作为bloom过滤器位数组的下标,从而确定各第二哈希值在目标bloom过滤器中的对应的目标位。若M个目标位中有至少一个目标位为0,则表示该待处理文件在此之前未被存储过,确定该待处理文件不存在,则可以将该待处理文件进行存储和/或进行安全检测,并将M个目标位中为0的位更新为1,以为后续查询提供准确的数据支持,当后续该待处理文件重复传输时,可以确定相应的M个目标位均为1,用于确定该待处理文件存在,或者用于初步确定该待处理文件存在。

示例性的,如图5所示,为本实施例提供的bloom过滤器的原理示意图,以M=3,m=18为例,通过三次哈希计算确定的待处理文件a的3个第二哈希值为x,y,z,将3个第二哈希值对bloom过滤器D的位数m取余,得到3个[0,1,…,m-1]范围内的值,比如为4、10、15,即3个第二哈希值对应目标bloom过滤器中的3个目标位分别为第4位D[4]、第10位D[10]和第15位D[15]。若有至少一个目标位为0,比如D[10]和D[15]为0,表示该待处理文件不存在,将该待处理文件进行存储及安全检测后,将该目标bloom过滤器3个目标位中位0的位更新为1,即将D[10]和D[15]两个位的0更新为1。

可选地,若目标bloom过滤器中M个目标位均为1,方法还包括:

根据待处理文件的第三哈希值查询数据库,确定待处理文件是否存在;若确定待处理文件存在,则不进行存储及安全检测;若确定不存在,则对待处理文件进行存储,和/或对待处理文件进行安全检测。

具体的,为了避免基于bloom过滤器对于待处理文件已存在的误判断,在基于目标bloom过滤器确定存在后,还可以进一步查询数据库,来确定待处理文件确实存在。具体来说,可以根据待处理文件确定第三哈希值,根据第三哈希值查询数据库,进一步确定待处理文件是否存在,若确定待处理文件确实存在,则不进行存储,若有安全检测流程,也不需再重复进行安全检测。若查询数据库确定该待处理文件不存在,则可以对该待处理文件进行存储,或者也可以对待处理文件进行检测,或者既进行存储又进行检测,由于目标bloom过滤器中各目标位均为1,无需更新目标bloom过滤器,但需要将该待处理文件的第三哈希值及存储信息存储到数据库,以为后续查询提供准确的数据支持。

为了保证后续文件的处理流程的准确执行,在一实施方式中,在对待处理文件进行存储和/或检测后,该方法还包括:

将目标bloom过滤器中M个目标位中为0的位更新为1,并将待处理文件的第三哈希值及存储信息存储到数据库。

具体的,为了保证后续不会对该待处理文件进行重复存储及检测,在对待处理文件进行存储和/或检测后,可以将目标bloom过滤器中M个目标位中为0的位更新为1,并将该待处理文件的第三哈希值及存储信息存储到数据库,以为后续查询提供准确的数据支持,避免重复存储及检测,减少存储空间的占用,并且可以避免重复检测,提高数据处理效率。存储信息可以包括待处理文件的存储地址,比如待处理文件写入磁盘的路径。存储信息还可以包括其他存储相关信息。第三哈希值可以采用任意可实施的哈希函数来获得,具体可以根据实际需求设置。

可选地,可以将第一哈希值作为该第三哈希值进行存储。

可选地,还可以将该待处理文件的其他相关信息存储到数据库,比如该待处理文件的生成时间,若进行了安全检测,还可以存储检测标记,以及检测结果等,具体可以根据实际需求设置。

为了进一步分析文件的安全性,作为另一种可实施的方式,可选地,该方法还包括:

若基于起始地址对应的目标bloom过滤器确定待处理文件不存在,对待处理文件进行安全检测;若检测结果为不安全,则对待处理文件进行存储。

具体的,网络流量的数据处理装置本身还可以具有安全检测功能,若基于起始地址对应的目标bloom过滤器确定待处理文件不存在,则需要对该待处理文件进行安全检测,若检测结果为安全,可以不对该待处理文件进行存储,也可以根据实际需求对该待处理文件进行存储,具体可以根据实际需求设置;若检测结果为不安全,则需要对该待处理文件进行存储,以便后续可以对该待处理文件进行进一步安全分析及响应,比如可以分析该待处理文件的二进制,根据其二进制还原成源代码,还可以根据该待处理文件的传输来源(源IP、目的IP)对该待处理文件进行追溯,确认该待处理文件是否对接收该待处理文件的终端进行了操作以及进行了什么操作,还可以针对该待处理文件的源IP进行分析,等等。具体的后续分析可以根据实际需求设置,本发明实施例不做限定。安全检测可以包括静态检测和动态检测,静态检测比如装置中可以设置有病毒检测引擎,通过病毒检测引擎提取将该待处理文件的特征与已知的病毒特征进行匹配;动态检测比如通过沙箱进行检测或者基于机器学习引擎进行检测。其中,沙箱动态检测不依赖于文件签名特征,能够准确及时检测0day漏洞攻击。在网络安全中,沙箱指在隔离环境中,用以测试不受信任的文件或应用程序等行为的工具,允许在沙箱环境中运行该待处理文件,基于该待处理文件在运行中的行为,来检测该待处理文件的安全性,运行所产生的变化可以随后删除。沙箱创造了一个类似沙盒的独立作业环境,在其内部运行的程序并不能对硬盘产生永久性的影响。

作为另一种可实施的方式,可选地,获取待处理文件,包括:

获取待处理网络流量数据;还原待处理网络流量数据中的文件,作为待处理文件。

具体的,待处理网络流量数据可以是网络传输过程中缓存的数据流。待处理网络流量数据可以包括一条或多条数据流。待处理文件可以是网络流量的数据处理装置从待处理网络流量数据中还原获得。具体的还原过程可以为:接收报文,对报文进行解析、识别协议,根据报文的五元组确定该报文所属的数据流,并判断该数据流是否完成了完整的文件传输,若已完成,从该数据流中各报文的有效载荷payload中提取出文件部分,还原成完整的文件。对于不同的协议,提取文件部分的规则可能不同,比如针对电子邮件、HTTP协议等,可以根据不同协议所对应的提取规则提取其文件部分。具体提取规则可以根据不同协议的具体格式进行设置,本实施例不做限定。

作为一种示例性的实施方式,如图6所示,为本实施例提供的一种示例性的整体流程示意图。该方法具体包括:

步骤1、报文处理。具体包括接收报文,对报文进行解析,识别协议,从有效载荷中提取文件部分。

步骤2、文件还原。将数据流中从各报文提取的文件部分组合还原成完整的文件,作为待处理文件。

步骤3、计算待处理文件的第一哈希值。

步骤4、根据第一哈希值获取目标bloom过滤器的起始地址。即将第一哈希值对哈希数组的长度X取余得到哈希数组下标i,进而得到哈希数组中第i个元素A[i],A[i]存放有第i个bloom过滤器的起始地址,则将第i个bloom过滤器作为目标bloom过滤器。

步骤5、确定M个第二哈希值对应到目标bloom过滤器的M个目标位。即计算待处理文件的M(这里以M=3为例)个第二哈希值,并将各第二哈希值对目标bloom过滤器的位数m(这里以m=8为例)取余,将各第二哈希值映射到目标bloom过滤器的3个目标位。

步骤6、判断是否有至少一个目标位是0。若是则转步骤7,若否则转步骤10。判断目标位是否为0具体可以包括:将待处理文件的3个第二哈希值映射到的3个目标位形成与目标bloom过滤器一致的m位的位数组,该位数组中3个目标位处置为1,其他位置为0,将该位数组与目标bloom过滤器进行按位与运算,根据运算结果即可确定目标bloom过滤器中的3个目标位的值。具体实现方式不限于这一种,这里仅为示例性说明。比如,也可以直接读取目标bloom过滤器中各目标位的值进行判断。

步骤7、存储和/或检测。即若有至少一个目标位为0,则确定该待处理文件不存在,即该待处理文件不是重复传输,则对该待处理文件进行存储和/或进行安全检测。即可以进行存储,或者也可以进行安全检测,或者还可以既进行存储又进行安全检测。

步骤8、在进行存储和/或进行安全检测后,则可以将目标bloom过滤器的3个目标位中为0的位置为1。

步骤9、更新数据库。即将待处理文件的第三哈希值、待处理文件的存储信息及其他相关信息存储到数据库。实际应用中,该步骤与步骤7可不分先后顺序。

步骤10、查询数据库确认待处理文件是否存在。若不存在则转步骤7,若存在则可以结束,或者转步骤1进入下一文件处理流程。

需要说明的是,本实施例中各可实施的方式可以单独实施,也可以在不冲突的情况下以任意组合方式结合实施本发明不做限定。

本实施例提供的网络流量的数据处理方法,通过将哈希数组与bloom过滤器结合,哈希数组存放多个bloom过滤器的起始地址,从而可以有效减少内存消耗,且基于bloom过滤器能够快速访问内存,从而可以迅速判断当前文件是否重复传输,提高网络流量处理性能;且采用多个bloom过滤器相比采用一个bloom过滤器,有效降低了对系统可用连续内存空间的需求,使得该方法能够应用于需要对更大数量文件进行去重的场景。

本发明再一实施例提供一种网络流量的数据处理装置,用于执行上述实施例的方法。

如图7所示,为本实施例提供的网络流量的数据处理装置的结构示意图。该装置30包括:获取模块31、确定模块32、第一处理模块33和第二处理模块34。

其中,获取模块,用于获取待处理文件;确定模块,用于根据待处理文件,确定第一哈希值;第一处理模块,用于根据第一哈希值,获取目标bloom过滤器的起始地址;第二处理模块,用于若基于起始地址对应的目标bloom过滤器确定待处理文件不存在,则对待处理文件进行存储,和/或对待处理文件进行安全检测。

具体的,获取模块可以基于缓存的网络流量数据获取待处理文件,也可以是从其他设备接收待处理文件,获取模块获取到待处理文件后发送给确定模块,确定模块根据待处理文件确定第一哈希值,并将第一哈希值发送给第一处理模块,第一处理模块根据第一哈希值获取一个bloom过滤器的起始地址,该bloom过滤器作为目标bloom过滤器,第一处理模块可以将目标bloom过滤器的起始地址发送给第二处理模块,第二处理模块在接收到目标bloom过滤器的起始地址后,则可以快速访问内存,基于该目标bloom过滤器确定待处理文件是否存在,若不存在,则将待处理文件进行存储,和/或对待处理文件进行安全检测。待处理文件可以是第一处理模块发送给第二处理模块,也可以是获取模块发送给第二处理模块,具体可以根据实际需求设置。第二处理模块可以是在需要存储待处理文件时从获取模块或第二处理模块获得,也可以是获取模块在获取到待处理文件后直接发送给第二处理模块,具体发送时机可以根据实际需求设置。

可选地,也可以由其他模块对待处理文件进行安全检测,比如该装置还可以包括安全检测模块,用于对待处理模块进行安全检测。

关于本实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,且能够达到相同的技术效果,此处将不做详细阐述说明。

为了使本发明的技术方案更加清楚,本发明又一实施例对上述实施例提供的装置做进一步补充说明。

作为一种可实施的方式,在上述实施例的基础上,可选地,第一处理模块,具体用于:根据第一哈希值,从预设数组中获取目标bloom过滤器的起始地址,预设数组中存放有各bloom过滤器的起始地址。

可选地,第一处理模块,具体用于:确定第一哈希值对应的预设数组下标;根据预设数组下标,从预设数组中获取目标bloom过滤器的目标地址。

作为另一种可实施的方式,在上述实施例的基础上,可选地,第二处理模块,还用于:根据待处理文件,确定M个第二哈希值,M为大于或等于2的整数;根据M个第二哈希值及目标bloom过滤器,确定待处理文件是否已存在。

具体的,第二处理模块在接收到第一处理模块发送的目标bloom过滤器的起始地址后,可以基于目标bloom过滤器确定待处理文件是否已存在,具体可以根据待处理文件,确定M个第二哈希值,M大于或等于2,根据M个第二哈希值及目标bloom过滤器,确定待处理文件是否已存在,若确定不存在,则对待处理文件进行存储和/或对待处理文件进行安全检测。

可选地,该装置还可以包括第三处理模块,由第三处理模块来判断待处理文件是否已存在。那么,第一处理模块获取到目标bloom过滤器的起始地址后,可以发送给第三处理模块,第三处理模块基于目标bloom过滤器确定待处理文件是否已存在,并将判断结果发送给第二处理模块,第二处理模块根据判断结果进行相应的处理,比如若判断结果为不存在,第二处理模块将待处理文件进行存储。待处理文件可以是获取模块发送给第二处理模块的,比如获取模块在获取到待处理文件后发送给确定模块时,也发送给第二处理模块,也可以是第二处理模块在需要进行存储时再从获取模块获取,具体可以根据实际需求设置。

可选地,第二处理模块,具体用于:根据M个第二哈希值,确定各第二哈希值在目标bloom过滤器中的对应的目标位;若目标bloom过滤器中M个目标位中有至少一个目标位为0,则确定待处理文件不存在。

可选地,第二处理模块,还用于:若目标bloom过滤器中M个目标位均为1,根据待处理文件的第三哈希值查询数据库,确定待处理文件是否存在;若确定待处理文件存在,则不进行存储及检测;若确定不存在,则进行存储和/或检测。

可选地,第二处理模块,还用于:在对待处理文件进行存储和/或检测后,将目标bloom过滤器中M个目标位中为0的位更新为1,并将待处理文件的第三哈希值及存储信息存储到数据库。

作为另一种可实施的方式,在上述实施例的基础上,可选地,该装置还包括:安全检测模块35。如图8所示,为本实施例提供的网络流量的数据处理装置的结构示意图。

其中,安全检测模块,用于对待处理文件进行安全检测。第二处理模块,具体用于若检测结果为不安全,则对待处理文件进行存储。

具体的,第二处理模块对待处理文件进行存储前,还可以将待处理文件发送给安全检测模块,安全检测模块可以设置有安全检测引擎或者其他相关的安全检测工具,用于对待处理文件进行安全检测,并将检测结果发送给第二处理模块,第二处理模块根据检测结果确定是否对待处理文件进行存储,比如若检测结果为不安全,则对待处理结果进行存储,以及更新目标bloom过滤器及数据库,并可以对待处理文件采取相关安全措施;若检测结果为安全,则可以存储也可以不存储。可选地,也可以是获取模块将待处理文件发送给安全检测模块,具体可以根据实际需求设置。

需要说明的是,本实施例中各可实施的方式可以单独实施,也可以在不冲突的情况下以任意组合方式结合实施本发明不做限定。

关于本实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,且能够达到相同的技术效果,此处将不做详细阐述说明。

本发明再一实施例提供一种电子设备,用于执行上述实施例提供的方法。该电子设备可以是服务器或其他可实现的计算机设备,服务器可以是单个服务器也可以是服务器集群。

如图9所示,为本实施例提供的电子设备的结构示意图。该电子设备50包括:存储器51、收发器52及至少一个处理器53。

其中,处理器、存储器与收发器通过电路互联;存储器存储计算机执行指令;收发器,用于接收待处理文件;至少一个处理器执行存储器存储的计算机执行指令,使得至少一个处理器执行如上任一实施例提供的方法。

具体的,收发器可以从其他设备接收待处理文件,也可以是接收报文,由处理器对数据流中的报文进行还原获得待处理文件。处理器从存储器读取存储的计算机执行指令并执行,以实现本发明的方法。

本发明实施例提供的电子设备可以应用于任意需要对传输文件进行去重的场景,以全流量安全检测场景为例,全流量安全检测系统可以包括服务器和至少一个客户端,服务器接收客户端发送的报文,对报文进行解析、识别协议,根据报文的五元组确定该报文所属的数据流,并判断该数据流是否完成了完整的文件传输,若已完成,从该数据流中各报文的有效载荷payload中提取出文件部分,还原成完整的文件作为待处理文件,结合哈希数组及多个bloom过滤器,确定待处理文件是否存在,若不存在,则可以对待处理文件进行安全检测,还可以对待处理文件进行存储。若基于目标bloom过滤器确定存在,还可以进一步查询数据库进行确认,若最终确认存在,则可以不再进行安全检测及存储。可选地,该全流量安全检测系统还可以包括安全检测设备,该服务器用于判断待处理文件是否存在,若不存在则将待处理文件发送给安全检测设备,安全检测设备负责对待处理文件进行安全检测,并将检测结果发送给该服务器,该服务器根据检测结果对待处理文件进行相应的处理,具体系统架构可以根据实际需求设置。

需要说明的是,本实施例的电子设备能够实现上述任一实施例提供的方法,且能够达到相同的技术效果,在此不再赘述。

本发明又一实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当处理器执行计算机执行指令时,实现如上任一实施例提供的方法。

需要说明的是,本实施例的计算机可读存储介质能够实现上述任一实施例提供的方法,且能够达到相同的技术效果,在此不再赘述。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求书指出。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求书来限制。

相关技术
  • 网络流量的数据处理方法、装置、设备及存储介质
  • 网络流量采样方法及装置、计算机设备及可读存储介质
技术分类

06120112422872