技术领域
[0001] 本申请涉及数据处理领域,尤其涉及一种网络攻击检测方法以及攻击检测装置。
相关背景技术
[0002] 互联网络中时刻会产生大量的会话,这些会话组成了巨量的数据流。巨量的数据流要求网络对数据流进行准确的流量监控、计费、潜在攻击检测。现阶段一般采用报文抽样技术对网络中转发设备所转发数据流是否安全进行检测。
[0003] 但是,现有的报文抽样技术所能够分析获得的数据流量的特征非常少,只能检测到数据流量突发等简单已知的网络异常形式。由于无法对数据流量的特征进行深度分析,因此难以为网络攻击的检测提供更多有用的信息,导致攻击检测的效率过低。
具体实施方式
[0026] 本申请提供了一种攻击检测方法,用于提升数据流的攻击检测效率。本申请还提供了相关的攻击检测装置,以下将分别进行描述。
[0027] 图1是本申请提供的一种可用的系统架构图。其中,网络中可以包括多个转发设备,如转发设备101、转发设备102以及转发设备103。每个转发设备均可以是路由器、交换机、防火墙、分组传送网设备、波分复用设备、光传送网设备、基站或者基站控制器。
[0028] 攻击检测装置104,用于与互联网络中的一个或多个转发设备耦合,并检测该转发设备收发的报文中是否存在攻击。例如,攻击检测装置104与转发设备103耦合,用于检测转发设备103收发的报文中是否存在攻击。本申请实施例中,攻击检测装置104可以是独立的物理设备,如服务器等。攻击检测装置104还可以是部署在物理设备上的功能模块,本申请中不做限定。
[0029] 本申请中的一种示例中,会话(英文:session)指的是在一个不中断的特定操作时间内,网络中两个设备之间的通信交互。在一个会话期间,两个设备之间相互传输的所有报文都属于该会话。隶属于同一个会话的报文具有相匹配的地址信号,例如在传输控制协议(英文:Transmission Control Protocol;缩写:TCP)或用户数据报协议(英文:User Datagram Protocol;缩写:UDP)中,隶属于一个会话的报文可由五元组信息来标识,即同一个会话的报文具有相同的五元组信息,包括相同的源IP地址、目的IP地址、源端口号、目的端口号以及传输层协议号。在因特网控制消息协议(英文:Internet Control Message Protocol;缩写:ICMP)中,隶属于一个会话的报文可以由二元组信息来标识,同一个会话的报文具有相同的二元组信息,即相同的源IP地址和目的IP地址。
[0030] 本申请的另一种示例中,会话指的是在一个不中断的特定操作时间内,网络中两个设备之间的通信交互。在一个会话期间,两个设备之间相互传输的所有报文都属于该会话。
[0031] 例如,在第一设备和第二设备之间通信的报文是TCP报文的情况下,或者在第一设备和第二设备之间通信的报文是UDP报文的情况下,该TCP报文或UDP报文中携带五元组信息。同一个会话的多个报文的五元组信息相匹配。即,第一设备给第二设备发送的报文所携带的五元组信息中,源IP地址是第一设备的IP地址,源端口号是第一设备的端口号,目的IP地址是第二设备的IP地址,目的端口号是第二设备的端口号;第二设备给第一设备发送的报文所携带的五元组信息中,源IP地址是第二设备的IP地址,源端口号是第二设备的端口号,目的IP地址是第一设备的IP地址,目的端口号是第一设备的端口号;两个设备之间相互发送的报文所采用的传输层协议号都相同。这些报文都属于同一个TCP/UDP会话。
[0032] 又例如,在第一设备和第二设备之间通信的报文不是TCP报文或UDP报文的情况下,例如在第一设备和第二设备之间通信的报文是ICMP报文的情况下,也可以认为二元组信息相匹配的多个报文属于同一个会话的报文。即,第一设备给第二设备发送的报文所携带的二元组信息中,源IP地址是第一设备的IP地址,目的IP地址是第二设备的IP地址;第二设备给第一设备发送的报文所携带的二元组信息中,源IP地址是第二设备的IP地址,目的IP地址是第一设备的IP地址;两个设备之间相互发送的报文所采用的传输层协议号都相同。这些报文都属于同一个ICMP会话。
[0033] 图1所示的攻击检测装置104可以由图2所示的攻击检测装置200来实现,包括处理器201、存储器202、通信接口203。可选的,还包括总线204。处理器201、存储器202和通信接口203可以通过总线204实现彼此之间的通信连接。当然,也可以通过无线传输等其他手段实现通信。
[0034] 存储器202可以包括易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random-access memory,缩写:RAM);也可以包括非易失性存储器(英文:non-volatile memory),例如只读存储器(英文:read-only memory,缩写:ROM),快闪存储器(英文:flash memory),硬盘(英文:hard disk drive,缩写:HDD)或SSD;存储器202还可以包括上述种类的存储器的组合。在通过软件来实现本申请提供的技术方案时,用于实现本申请图3提供的攻击检测方法的程序代码可以保存在存储器202中,并由处理器201来执行。
[0035] 通信接口203可以是可以是有线接口,例如光纤分布式数据接口(英文:Fiber Distributed Data Interface,简称:FDDI)、以太网(英文:Ethernet)接口。网络接口503也可以是无线接口,例如无线局域网接口。通信接口203用于获取转发设备在第一时间段中转发的P个会话的信息,以及在在第二时间段中转发的第一对象的多个会话的特征值。
[0036] 处理器201可以为中央处理器(英文:central processing unit,简称:CPU),硬件芯片或CPU和硬件芯片的组合。处理器201在运行时,通过调用存储器202的程序代码,可以执行如下步骤:控制通信接口203获取转发设备在第一时间段中转发的P个会话的信息,该P个会话中的每个会话属于Q个对象中的一个对象,其中P和Q均为大于或等于1的整数,并且P大于或等于Q;根据该P个会话的信息,确定所述Q个对象中每个对象的数据量;根据Q个对象中每个对象的数据量,确定第一对象;统计转发设备在第二时间段中转发的第一对象的多个会话的特征值,获得统计结果,该统计结果被用于判断转发设备所在的网络中是否存在攻击。
[0037] 可选的,该每个对象的数据量为该每个对象在第一时间段中所包括的会话的会话个数,或在第一时间段中所包括的会话的数据流量大小,或在第一时间段中所包括的会话的报文个数。
[0038] 可选的,所述根据Q个对象中每个对象的数据量,确定第一对象,具体包括:按照数据量由大到小的顺序对该Q个对象进行排序,并确定第一对象为:排序后位于前N的对象当中的对象,其中N为小于所述Q的整数。
[0039] 又可选的,所述根据Q个对象中每个对象的数据量,确定第一对象,还可以包括:可以从该Q个对象中除去预置的M个对象,并将余下的Q-M个对象按照数据量由大到小的顺序进行排序,并确定第一对象为:该预置的M个对象,以及排序后的Q-M个对象中排序位于前N的对象当中的对象,其中M为小于Q的整数,N为小于Q-M的整数。
[0040] 可选的,处理器201还用于,将所述统计结果输入预置的机器模型,并通过所述机器模型判断所述网络中是否存在攻击。
[0041] 可选的,处理器201还用于,将所述统计结果与预置的基线比较,判断所述网络中是否存在攻击。
[0042] 可选的,处理器201还用于,根据所述统计结果,修正预置的的基线,该预置的基线用于判断网络中是否存在攻击。
[0043] 图3示出本申请实施例提供的了一种网络攻击检测的方法流程图。举例来说,图3所示的方法的执行主体,可以是图1所示的攻击检测装置104。或者图2所示的攻击检测装置200。图3所示的实施例中的转发设备可以是图1所示的转发设备101~103中的一个或多个。
基本流程请参阅图3,包括:
[0044] S301、获取转发设备在第一时间段中转发的P个会话的信息。该P个会话中的每个会话属于Q个对象中的一个对象,其中P和Q均为大于或等于1的整数,并且P大于或等于Q。
[0045] 具体来说,转发设备在第一时间段中转发的大量会话中包括所述P个会话。攻击检测装置获取该P个会话的信息。举例来说,所述P个会话可以是转发设备按照预先的抽样规则抽样获得的。所述P个会话的信息可以是转发设备在接收到所述P个会话中的每个会话时,镜像该会话中的报文,保存在所述转发设备中,随后再从镜像的报文中获取的;也可以是在转发过程中直接获取的。
[0046] 举例来说,转发设备获取所述P个会话的信息后,根据预先建立的连接将所述P个会话的信息发送给攻击检测装置,从而使得攻击检测装置获取该P个会话的信息。攻击检测装置获取这些会话的信息具体形式可以为IPFIX数据的形式,也可以为NetFlow数据的形式,也可以是转发设备或攻击检测设备均可以支持的其它形式,此处不做限定。会话的信息中可以包括很多参数,如会话的会话标识、源/目的IP地址、源/目的端口、协议类型、服务类型、流量大小等方方面面的参数。会话的信息可以由转发设备主动上报给攻击检测装置。攻击检测装置也可以向转发设备发送指示该转发设备上报会话信息的指示,主动获取会话的信息。
[0047] 举例来说,所述P个会话的信息可以是一个转发设备发送给攻击检测装置的,也可以是多个转发设备发送给攻击检测装置的。
[0048] 举例来说,所述P个会话的信息可以是转发设备一次发送给攻击检测装置的,也可以是多次发送给攻击检测装置的。
[0049] 本申请中通过“对象”来对网络中的会话进行划分。对于某种划分方式,网络中的某个会话可以被关联到某个对象中,即所述某个会话属于所述某个对象。某个会话属于某个对象,又可以称作某个对象包括某个会话。一个对象可以包括一个或多个会话。攻击检测装置获取的P个会话中,每个会话分别属于Q个对象中的一个对象。例如,按照目的IP地址对会话进行划分,攻击检测装置分析该P个会话信息得到3个目的IP地址,分别为第一IP地址、第二IP地址、第三IP地址,则该三个IP地址分别对应与第一对象、第二对象、第三对象。且该P个会话中,以第一IP地址为目的地址的会话就属于第一对象,以第二IP地址为目的地址的会话就属于第二对象,以第三IP地址为目的地址的会话就属于第三对象。
[0050] 当然,对于不同的划分方式,同一个会话可以属于不同的对象。例如以目的IP的子网网段为划分方式,假设上述示例中第一IP地址和第二IP地址属于第一子网网段,第三IP地址属于第二子网网段,则该两个子网网段分别对应与第四对象和第五对象。那么上述以第一IP地址为目的地址的会话,以及以第二IP地址为目的IP地址的会话,均属于第四对象;以第三IP地址为目的地址的会话,属于第五对象。
[0051] S301中,所述P个会话中的每个会话属于Q个对象中的一个对象,该Q个对象是按照某种特定的方式划分的对象。
[0052] 本申请中,对象并不局限于IP地址的形式,会话信息中的多种参数均可以用来作为对象,举例来说,对象可以是网段(英文:segment)、网址(英文:website)、自治系统(英文:autonomous system,缩写:AS),也可以是地理位置系统(英文:geographic information system,缩写:GIS)确定的物理地址(如市、省、甚至国家)或其他地址信息的形式。
[0053] 需要说明的是,由于会话中的报文是双向的,例如会话的发起方向响应方发送的报文是一个传输方向,会话的响应方向发起方发送的报文是另一个传输方向。因此本申请中的上述IP地址、网段、自治系统、物理地址等各种形式的地址信息,均指会话的双向报文中某一个方向传输的报文的源地址或目的地址。例如,上文中以IP地址为对象的划分方式,那么IP地址1对应的对象包括会话1,是指会话1的双向报文中,一个方向的报文的源IP地址是IP地址1,另一个方向的报文的目的地址是IP地址1。其他地址形式的划分方式,与该示例相同,不再赘述。
[0054] 此外,对象也可以是业务类型的形式,例如域名系统(英文:domain name system,缩写:DNS)类型、文件传输协议(英文:file transfer protocol,缩写:FTP)类型、超文本传输协议(英文:hypertext transfer protocol,缩写:HTTP)类型以及其他业务类型。
[0055] 此外,对象还可以为其他形式,此处不做限定。
[0056] S302、根据该P个会话的信息,确定该Q个对象中每个对象的数据量。
[0057] 举例来说,所述每个对象的数据量为所述每个对象在所述第一时间段中所包括的会话的会话个数,或在所述第一时间段中所包括的会话的数据流量大小,或在所述第一时间段中所包括的会话的报文个数。
[0058] 该Q个对象中每个对象的数据量,是从该P个会话的信息中获取的。因此该P个会话的信息应该包括该Q个对象中每个对象的数据量。举例来说,若数据量指的是该Q个对象中每个对象的会话个数,则该P个会话的信息中至少应该包括每个会话的会话标识。又举例来说,若数据量指的是该Q个对象中每个对象的数据流量,则该P个会话的信息中至少应该包括每个会话的流量大小。
[0059] 在一种示例中,该Q个对象中每个对象的数据量,可以是准确计算得到的。以数据量为数据流量为例,对于每一个对象,确定所述P个会话中属于该对象的会话,并计算属于该对象的会话中每个会话的数据流量,并计算这些数据流量之和,作为该对象的数据流量。例如,数据流量的大小,可以用比特(英文:bit)表示,也可以用字节(英文:Byte)表示。
[0060] 在另一种示例中,该Q个对象中每个对象的数据量,可以是估算得到的。仍以数据量为例,如果第一时间段是一个较长的时间段,例如一天,那么抽样得到的会话数是一个很大的值。如果对每个会话的数据流量都进行统计,那么计算量过大,尤其是对于Q个对象中一些数据量较小,被确定为所述第一对象可能性不大的对象,不需要进行精确的统计。例如,在S301中所述P个会话的信息是转发设备多次发送给攻击检测装置的示例中,如果开始的若干次发送的会话的信息中,某个对象的数据量都不大,因此没有统计该某个对象的准确数据量,而后来的若干次发送的会话的信息中,该某个对象的数据量变大,有可能被选中作为所述第一对象,而这时攻击检测装置很可能已经删除了前面的若干次的会话信息,因此该对象在第一时间段的总数据量只能通过估算获得。
[0061] 举例来说,估算获得某个对象的数据量,可以采用Ld-Sketch算法。Ld-sketch算法的具体实现方式,可以参见Qun Huang,Patrick P.C.Lee于2014年在电气和电子工程师协会(英文:Institute of Electrical and Electronics Engineers,缩写:IEEE)发表的文章“LD-Sketch:A Distributed Sketching Design for Accurate and Scalable Anomaly Detection in Network Data Streams”。
[0062] S303、根据该Q个对象中每个对象的数据量,确定第一对象。
[0063] 根据会话的信息能够确定大量的对象,但是在进行网络的攻击检测的过程中,往往并不需要关注全部的对象,只需要根据实际应用的需要重点研究几个关键的对象即可。因此,本申请中攻击检测装置从该Q个对象中筛选一个或多个对象,并对选中的对象进行分析。选中的对象中包括第一对象。
[0064] 可选的,攻击检测装置可以按照数据量由大到小的顺序对该Q个对象进行排序,并确定第一对象。所述第一对象为:排序后的该Q个对象中排序位于前N的对象当中的对象,即该Q个对象中数据量最大的N个对象。其中N为小于Q的整数。
[0065] 可选的,攻击检测装置中还可以包括预置的M个对象。该预置的M个对象可以由用户设定,举例来说,用户可以预置M个希望观测的对象。该预置的M个对象也可以是由攻击检测装置在所述第一时间段之前,采用与确定所述第一对象类似的方法已经确定出来的对应。攻击检测装置还可以为该预置的M个对象设置生命周期,该预置的M个对象在生命周期结束后不再被设置为预置的对象。
[0066] 若攻击检测装置包括预置的M个对象,则可以从该Q个对象中除去该预置的M个对象,并将余下的Q-M个对象按照数据量由大到小的顺序进行排序,并确定第一对象。所述第一对象为:该预置的M个对象,以及排序后的该Q-M个对象中排序位于前N的对象当中的对象,即该Q-M个对象中数据量最大的N个对象,其中N为小于Q-M的整数。
[0067] 可选的,攻击检测装置还可以将该Q个对象中数据量超过阈值的对象确定为第一对象。
[0068] S304、统计所述转发设备在第二时间段中转发的所述第一对象的多个会话的特征值,获得统计结果,所述统计结果被用于判断所述转发设备所在的网络中是否存在攻击。
[0069] 会话的特征值是指用于描述会话的特征(英文:feature)的值。举例来说,会话的特征可以是会话的流量大小、会话中平均报文长度、、会话终结原因、会话持续时间、会话中最大报文长度、会话中最小报文长度等。在会话为TCP会话的示例中,会话的特征还可以是TCP会话中某个标志位的值等于1的报文的个数。
[0070] 具体来说,所述第一对象的多个会话,是指属于所述第一对象的多个会话。
[0071] 举例来说,攻击检测装置获取转发设备在第二时间段中转发的第一对象的多个会话的信息,其中每个会话的信息中都包括了该会话的特征值,或者包括了用于计算该会话的特征值的信息。例如,特征值是会话的平均报文长度,那么从转发设备获取的会话的信息,可以直接包括每个会话的平均报文长度,也可以包括会话的总字节数和总报文数,攻击检测装置通过会话的总字节数和总报文数,确定每个会话的平均报文长度。
[0072] 举例来说,S304中攻击检测装置获取第一对象的每个会话的特征值之后,再对上述多个会话的特征值进行统计,获得所述统计结果。该统计结果可以是多个会话的特征值的求和,也可以是对所述多个会话的特征值进行其他统计运算获取的。
[0073] 在一种示例中,第二时间段可以与第一时间段是同一个时间段。在该示例中,S301中获取所述P个会话的信息,就已经包括了每个会话的特征值,并且所述攻击检测装置保存了上述会话的特征值。
[0074] 在另一种示例中,攻击检测装置也可能没有保存第一时间段中P个会话的信息,在该示例中,攻击检测装置需要获取转发设备在第二时间段中转发的第一对象的多个会话中每个会话的特征值。第二时间段可以在第一时间段之后。
[0075] 攻击检测装置统计转发设备在第二时间段中转发的该第一对象的多个会话的特征值,获得统计结果。该统计结果被用于判断该转发设备所在的网络中是否存在攻击。
[0076] 可选的,攻击检测装置中预先存储了机器模型。机器模型也称分类器(英文:classifier),其实质可以是一个分类函数或一个分类模型。举例来说,机器模型可以是反向传播(英文:back propagation,缩写:BP)神经网络模型,能够根据历史的统计结果与历史的网络是否存在攻击的对应关系,把当前输入的统计结果分为存在攻击和不存在攻击两类,以判定网络中是否存在攻击。本申请中,攻击检测装置可以将统计结果输入预置的机器模型,以通过机器模型判断转发设备所在的网络中是否存在攻击。
[0077] 又可选的,攻击检测装置中可以预设有第一对象对应的基线(英文:baseline),该基线可以视为第一对象的统计结果正常或异常的标准或规则。基线可以是一个数值,也可以是一个判断条件。基线可以由预先设定的,也可以由攻击检测装置根据前几次攻击检测流程中得到的统计结果自动生成,本申请中不做限定。攻击检测装置将第一对象的统计结果与对应的基线进行比较,就能够获知第一对象的统计结果是否存在异常,进而能够判定网络中是否存在攻击,且能够确定存在攻击的是与异常的统计结果相关的会话。
[0078] 需要指出的是,网络中的数据流瞬息万变,因此判断第一对象的统计结果是否异常的标准或规则也可以是变化的。因此可选的,若通过基线来判断网络中是否存在攻击,则应根据统计结果不断修正基线。因此可选的,本申请中攻击检测装置可以根据已确定的统计结果来对基线进行调整,具体的调整算法包括平均、加权、平滑、预测、修正或其它算法,此处不做限定。例如,若在第二时间段内网址www.baidu.com的会话的流量大小为单位时间内5M,而数据流量大小的基线为单位时间内7M,攻击检测装置采用一阶平滑算法来调整基线,平滑系数为0.4,则调整后的基线为单位时间内:0.4×5M+(1-0.4)×7M=6.2M。
[0079] 又可选的,攻击检测装置可以对第一对象包括的会话的多种特征值进行统计,获得多条基线。根据多条基线,生成或修正机器模型。
[0080] 本实施例提供了一种攻击检测方法,其中攻击检测装置获取转发设备转发的P个会话的信息,其中该P个会话分别属于Q个对象中的一个对象,然后攻击检测装置确定该Q个对象中各对象的数据量,并根据各对象的数据量确定第一对象,然后统计第一对象的会话在第二时间段内的特征值得到统计结果,该统计结果用于判断网络中是否存在攻击。本申请在抽取网络中的会话信息的基础上选择出了主要关注的第一对象,然后确定选择出的第一对象的会话的特征值,并对第一对象的会话的特征值进行统计得到统计结果。本申请通过这样的方法对数据流进行了深度的分析,得到的统计信息能够反映网络数据流量更为多样、深度、复杂、精确的特征,有利于攻击检测装置对网络中的未知攻击和隐藏较深的攻击进行检测。
[0081] 图3所示的实施例给出了本申请提供的网络攻击检测方法的基本流程,下面将介绍本申请提供的用于实现上述网络攻击检测方法的另一种攻击检测装置,其基本结构请参阅图4,包括:
[0082] 信息获取模块401,用于获取转发设备在第一时间段中转发的P个会话的信息,该P个会话中的每个会话属于Q个对象中的一个对象。其中P和Q均为大于或等于1的整数,并且P大于或等于Q。
[0083] 数据量确定模块402,用于根据该P个会话的信息,确定该Q个对象中每个对象的数据量。
[0084] 对象确定模块403,用于根据该Q个对象中每个对象的数据量,确定第一对象。可选的,对象确定模块403按照数据量由大到小的顺序对该Q个对象进行排序,并确定第一对象为排序后的所述Q个对象中排序位于前N的对象当中的对象,其中N为小于Q的整数。可选的,从该Q个对象中除去预置的M个对象,并将余下的Q-M个对象按照数据量由大到小的顺序进行排序,并确定第一对象为:预置的M个对象,以及排序后的Q-M个对象中排序位于前N的对象当中的对象,M为小于Q的整数,N为小于Q-M的整数。
[0085] 特征值统计模块404,用于统计转发设备在第二时间段中转发的第一对象的多个会话的特征值,获得统计结果,该统计结果被用于判断转发设备所在的网络中是否存在攻击。
[0086] 可选的,攻击检测装置还可以包括攻击判断模块405,用于将统计结果输入机器模型,并通过机器模型判断网络中是否存在攻击。
[0087] 可选的,攻击判断模块405用于将统计结果与预置的基线比较,判断网络中是否存在攻击。
[0088] 可选的,攻击判断模块405还可以根据统计结果,修正预置的基线。
[0089] 图4所示的攻击检测装置的详细描述和具体应用方法可以参考图3所示的方法实施例,此处不做赘述。
[0090] 可选的,图4所示的各个模块仅为对攻击检测装置功能上的划分,图4所示的攻击检测装置实质上可以与图2所示的攻击检测装置是一个装置,图4是从逻辑的角度进行描述,而图2是从结构的角度进行描述。例如,图4所示的信息获取模块401可以由图2所示的通信接口203实现,图4所示的数据量确定模块402、对象确定模块403、特征值统计模块404以及攻击判断模块405可以由图2所示的处理器201实现。
[0091] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0092] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0093] 所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0094] 另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
[0095] 所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0096] 以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。