
本发明实施例涉及计算机
技术领域:
,尤其涉及一种网络包去重方法及装置。
背景技术:
:随着业务的发展,企业的生产应用系统越来越多、也越来越复杂;通过对生产交换机SPAN(SwitchedPortAnalyzer,交换端口分析器)镜像流量的采集和解析,能够有效地分析监控日益复杂的生产应用系统,而且既不对生产系统产生影响,又能够回溯真实的交互数据。但是,当需要镜像的流量越来越多、当多个网段、多个节点的流量都汇聚在一起的时候,就会出现重复的网络包。重复网络包所带来的问题是,会对后续的协议解析产生严重的干扰,比如拼接网络包、匹配请求应答对、计算响应时间、关联交易等等,使得数据准确度降低。对此,现有的去除重复网络包的技术方案是调整生产网络拓扑,以避免流量汇聚时产生的重复的网络包。但是对于大型企业而言,生产网络拓扑级别的调整的风险大,会影响到企业的业务运行。技术实现要素:本发明实施例提供一种网络包去重方法及装置,用以解决网络包干扰后续协议解析的问题,提高数据的准确率。本发明实施例提供的一种网络包去重方法,包括:获取对网络包解析后的数据,所述对网络包解析后的数据包括所述网络包的多个元素和标识值;计算所述网络包的多个元素的哈希值,并确定所述网络包所属的TCP(TransferControlProtocol,传送控制协议)链路;若存储键值映射的集合中包含有所述多个元素的哈希值,则确定所述网络包的标识值是否存在于所述网络包所属的TCP链路对应的标识列表中;若是,则将所述网络包丢弃。优选地,若所述存储键值映射的集合中不包含所述多个元素的哈希值,则将所述多个元素的哈希值存储在所述存储键值映射的集合中;并将所述网络包的标识值存储在所述网络包所属的TCP链路对应的标识列表中。优选地,若所述网络包的标识值不存在于所述网络包所属的TCP链路对应的标识列表中,则将所述网络包的标识值存储在所述网络包所属的TCP链路对应的标识列表中。优选地,在所述将所述网络包的标识值存储在所述网络包所属的TCP链路对应的标识列表中之后,还包括:确定所述网络包所属的TCP链路是否已拆链完成;若是,则从所述存储键值映射的集合中移除所述多个元素的哈希值,并将所述网络包所属的TCP链路对应的标识列表清空,否则继续获取所述TCP链路中对下一个网络包解析后的数据。优选地,所述网络包的多个元素至少包括下述元素:源IP(InternetProtocol,互联网协议)地址、源端口、目标IP地址、目标端口。相应地,本发明实施例还提供了一种网络包去重装置,包括:获取单元,用于获取对网络包解析后的数据,所述对网络包解析后的数据包括所述网络包的多个元素和标识值;处理单元,用于计算所述网络包的多个元素的哈希值,并确定所述网络包所属的TCP链路;以及若存储键值映射的集合中包含有所述多个元素的哈希值,则确定所述网络包的标识值是否存在于所述网络包所属的TCP链路对应的标识列表中;若是,则将所述网络包丢弃。优选地,所述处理单元还用于:若所述存储键值映射的集合中不包含所述多个元素的哈希值,则将所述多个元素的哈希值存储在所述存储键值映射的集合中;并将所述网络包的标识值存储在所述网络包所属的TCP链路对应的标识列表中。优选地,所述处理单元还用于:若所述网络包的标识值不存在于所述网络包所属的TCP链路对应的标识列表中,则将所述网络包的标识值存储在所述网络包所属的TCP链路对应的标识列表中。优选地,所述处理单元还用于:在所述将所述网络包的标识值存储在所述网络包所属的TCP链路对应的标识列表中之后,确定所述网络包所属的TCP链路是否已拆链完成;若是,则从所述存储键值映射的集合中移除所述多个元素的哈希值,并将所述网络包所属的TCP链路对应的标识列表清空,否则继续获取所述TCP链路中对下一个网络包解析后的数据。优选地,所述网络包的多个元素至少包括下述元素:源IP地址、源端口、目标IP地址、目标端口。本发明实施例表明,获取对网络包解析后的数据,所述对网络包解析后的数据包括所述网络包的多个元素和标识值,计算所述网络包的多个元素的哈希值,并确定所述网络包所属的TCP链路,若存储键值映射的集合中包含有所述多个元素的哈希值,则确定所述网络包的标识值是否存在于所述网络包所属的TCP链路对应的标识列表中,若是,则将所述网络包丢弃。通过网络包的多个元素可以获知该网络包所属的TCP链路,然后在单一的TCP链路中判断该网络包的标识值是否在该TCP链路对应的标识列表中,从而确定该网络包是否为重复的网络包,可以解决干扰后续协议解析的问题,从而提高数据的准确度。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的一种系统架构的结构示意图;图2为本发明实施例提供的一种网络包去重方法的流程示意图;图3为本发明实施例提供的一种网络包去重方法的流程示意图;图4为本发明实施例提供的一种网络包去重装置的结构示意图。具体实施方式为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。图1示出了本发明实施例适用的一种网络包去重方法的系统架构,该系统架构可以包括流量采集模块101、网络包解析模块102、网络包去重模块103、协议解析模块104以及入库模块105。首先,将生产交换机的网络流量镜像到分流环境,作为流量采集模块101的数据源;然后流量采集模块101将网络流量中生产环境所需要的应用系统的进出流量进行过滤采集,发送给网络包解析模块102;网络包解析模块102将每个网络包由二进制流进行结构化,并通过消息中间件发送给网络包去重模块103;网络包去重模块103按去重算法进行处理,去除重复的网络包后,发送给协议解析模块104进行处理;协议解析模块104按各标准规范进行协议解析,并将解析后的数据发送给入库模块105;入库模块105将结构化数据插入数据库中,处理完成。在本发明实施例中通过上述网络包去重模块实现了网络包去重的流程,基于上述描述,图2示出了本发明实施例提供的一种网络包去重的流程,该流程可以由网络包去重装置执行,该装置可以位于上述网络包去重模块中,也可以是上述网络包去重模块。如图2所示,该流程的具体步骤包括:步骤201,获取对网络包解析后的数据。步骤202,计算所述网络包的多个元素的哈希值,并确定所述网络包所属的传输控制协议TCP链路。步骤203,若存储键值映射的集合中包含有所述多个元素的哈希值,则确定所述网络包的标识值是否存在于所述网络包所属的TCP链路对应的标识列表中。步骤204,若所述网络包的标识值存在于所述网络包所属的TCP链路对应的标识列表中,则将所述网络包丢弃。在本发明实施例中,通过网络包解析模块对网络包进行解析,可以获取对网络包解析后的数据,该网络包解析后的数据包括该网络包的多个元素和标识值,该网络包的标识值可以是网络包的IP包头中标识字段的值。该网络包的多个元素至少包括源IP地址、源端口、目标IP地址和目标端口这四个元素,通过该源IP地址、源端口、目标IP地址和目标端口可以确定出该网络包所属的TCP链路,也就是说通过解析出的源IP地址、源端口、目标IP地址和目标端口可以将所有获取的网络包按照TCP链路进行划分。按照单一TCP链路进行判断每个网络包的标识值,可以快速的确定出重复的网络包,提高的去重的效率以及数据的准确率。在同一条TCP链路中,所有网络包的源IP地址、源端口、目标IP地址和目标端口都相同,因此,计算的哈希值也就相同,但是每个网络包所承载的业务不同,也就是说完全相同的网络包承载的业务也是相同的,而不同的网络包只是源IP地址、源端口、目标IP地址和目标端口,而承载的业务不同,并且标识值不同,因此,可以通过继续判断网络包的标识值从而可以确定出重复的网络包。在得到上述网络包的多个元素之后,还需要计算该网络包的多个元素的哈希值,计算多个元素的哈希值的方法为现有技术,本发明实施例不再详述。在得到网络包的多个元素的哈希值之后,确定该网络包的多个元素的哈希值是否存在于存储键值映射的集合中,该存储键值映射的集合是用来存储网络包的多个元素的哈希值的。若该存储键值映射的集合中包含有多个元素的哈希值,则还需要继续确定网络包的标识值是否存在于该网络包所属的TCP链路对应的标识列表中,否则就需要将多个元素的哈希值存储在该存储键值映射的集合中,标明该网络包为一个新的网络包,并不是重复的网络包,将该网络包的多个元素的哈希值进行存储之后,可以用于判断后续的网络包是否为重复的网络包。并且在将多个元素的哈希值进行存储之后,还要将该网络包的标识值存储在该网络包所属的TCP链路对应的标识列表中,同样可以用于判断后续的网络包是否为重复的网络包。上述标识列表可以如表1所示,在同一个TCP链路中不同的网络包的标识值不同。表1网络包标识值第一个2第二个3第三个5……若可以确定网络包的标识值存在于该网络包所属的TCP链路对应的标识列表中,则表明该网络包为重复的网络包,可以将该网络包丢弃。否则,也需要将该网络包的标识值存储在该网络包所属的TCP链路对应的标识列表中,以用于判断后续的网络包是否为重复的网络包,提高去重重复网络包的效率。优选地,为了提高网络包去重的效率,在上述将网络包的标识值存储在该网络包所属的TCP链路对应的标识列表中之后,还需要判断该网络包所属的TCP链路是否已经拆链完成,如果已经拆链完成,表明无需再判断该条TCP链路中的网络包是否有重复,因此,可以从存储键值映射的集合中移除上述网络包的多个元素的哈希值,并将网络包所属的TCP链路对应的标识列表清空,否则还需要继续获取TCP链路中对下一个网络包解析后的数据,继续判断是否还有重复的网络包。为了更好的解释本发明实施例,下面将通过如图3所示的流程来描述完整的网络包去重的流程。如图3所示,该流程具体步骤包括:步骤301,获取对网络包解析后的数据。步骤302,计算所述网络包的多个元素的哈希值,并确定所述网络包所属的传输控制协议TCP链路。步骤303,判断存储键值映射的集合中是否包含有所述多个元素的哈希值,若是,则转入步骤304,若否,则转入步骤306。步骤304,确定所述网络包的标识值是否存在于所述网络包所属的TCP链路对应的标识列表中,若是,则转入步骤305,若否,则转入步骤307。步骤305,将所述网络包丢弃。步骤306,将所述多个元素的哈希值存储在所述存储键值映射的集合中。步骤307,将所述网络包的标识值存储在所述网络包所属的TCP链路对应的标识列表中。步骤308,确定所述网络包所属的TCP链路是否已拆链完成,若是,则转入步骤309,若否,则转入步骤301。步骤309,从所述存储键值映射的集合中移除所述多个元素的哈希值,并将所述网络包所属的TCP链路对应的标识列表清空。上述实施例表明,获取对网络包解析后的数据,所述对网络包解析后的数据包括所述网络包的多个元素和标识值,计算所述网络包的多个元素的哈希值,并确定所述网络包所属的TCP链路,若存储键值映射的集合中包含有所述多个元素的哈希值,则确定所述网络包的标识值是否存在于所述网络包所属的TCP链路对应的标识列表中,若是,则将所述网络包丢弃。通过网络包的多个元素可以获知该网络包所属的TCP链路,然后在单一的TCP链路中判断该网络包的标识值是否在该TCP链路对应的标识列表中,从而确定该网络包是否为重复的网络包,可以解决干扰后续协议解析的问题,从而提高数据的准确度。基于相同的技术方案,图4示出了本发明实施例提供的一种网络包去重装置的结构,该装置可以执行网络包去重的流程。如图4所示,该装置具体包括:获取单元401,用于获取对网络包解析后的数据,所述对网络包解析后的数据包括所述网络包的多个元素和标识值;处理单元402,用于计算所述网络包的多个元素的哈希值,并确定所述网络包所属的TCP链路;以及若存储键值映射的集合中包含有所述多个元素的哈希值,则确定所述网络包的标识值是否存在于所述网络包所属的TCP链路对应的标识列表中;若是,则将所述网络包丢弃。优选地,所述处理单元402还用于:若所述存储键值映射的集合中不包含所述多个元素的哈希值,则将所述多个元素的哈希值存储在所述存储键值映射的集合中;并将所述网络包的标识值存储在所述网络包所属的TCP链路对应的标识列表中。优选地,所述处理单元402还用于:若所述网络包的标识值不存在于所述网络包所属的TCP链路对应的标识列表中,则将所述网络包的标识值存储在所述网络包所属的TCP链路对应的标识列表中。优选地,所述处理单元402还用于:在所述将所述网络包的标识值存储在所述网络包所属的TCP链路对应的标识列表中之后,确定所述网络包所属的TCP链路是否已拆链完成;若是,则从所述存储键值映射的集合中移除所述多个元素的哈希值,并将所述网络包所属的TCP链路对应的标识列表清空,否则继续获取所述TCP链路中对下一个网络包解析后的数据。优选地,所述网络包的多个元素至少包括下述元素:源IP地址、源端口、目标IP地址、目标端口。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。当前第1页1 2 3