可配置的网络协议数据解析方法及电子设备转让专利

申请号 : CN202210321404.5

文献号 : CN114938401B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张子中罗浩

申请人 : 北京思信飞扬信息技术股份有限公司

摘要 :

本公开提供一种可配置的网络协议数据解析方法及电子设备,所述方法应用于电子设备,电子设备包括解析引擎,解析引擎内设置有协议解析器;所述方法,包括:通过解析引擎分析待解析网络协议数据,以确定待解析网络协议数据采用的待解析协议;通过协议解析器对待解析网络协议数据进行解析;其中,协议解析器是根据预先编写的协议配置文件相应配置的,协议配置文件与待解析协议对应;该方法通过编写协议配置文件代替常规的编写代码的工作,使用协议配置文件驱动解析引擎的方式,完成网络协议数据的正确解析,即完成对于网络协议数据中所采用的协议的正确解析,具有开发周期短、安全系数高、需求响应速度快的优点。

权利要求 :

1.一种可配置的网络协议数据解析方法,应用于电子设备,所述电子设备包括解析引擎,所述解析引擎内设置有协议解析器;

所述方法,包括:

通过所述解析引擎分析待解析网络协议数据,以确定所述待解析网络协议数据采用的待解析协议;

通过所述协议解析器对所述待解析网络协议数据进行解析;其中,所述协议解析器是根据预先编写的协议配置文件相应配置的,所述协议配置文件与所述待解析协议对应;

其中,所述协议配置文件是根据目标协议相应编写的;

根据协议配置文件进行配置后的所述协议解析器为包括多个节点的解析链,所述解析链中包括的各节点和相应的目标协议中包括的各字段一一对应;

其中,所述通过所述协议解析器对所述待解析网络协议数据进行解析,包括:通过所述解析引擎确定所述协议解析器中所有节点的关联关系结构,基于所述关联关系结构,确定并调用相应的解析函数;

基于所述解析函数,通过所述协议解析器由所述待解析网络协议数据中,提取所述协议解析器中所有节点相应的字段信息;

其中,所述协议解析器中包括的所有节点的关联关系结构包括顺序型结构、迭代型结构、嵌套型结构中的一种或多种;

当所述协议解析器中所有节点的关联关系结构为顺序型结构时,基于所述所有节点的排列顺序依次由所述待解析网络协议数据中提取信息;

当所述协议解析器中所有节点的关联关系结构为迭代型结构或嵌套型结构时,由所述关联关系结构的内层节点到外层节点依次由所述待解析网络协议数据中提取信息。

2.根据权利要求1所述的可配置的网络协议数据解析方法,其中,所述协议配置文件的编写方法包括:根据用户需求准备目标协议列表,所述目标协议列表包括至少一个目标协议;

分析各所述目标协议中包括的所有字段构成的数据类型;

基于分析结果,分别编写各所述目标协议对应的协议配置文件;其中,所述协议配置文件的配置类型与所述数据类型相适配。

3.根据权利要求2所述的可配置的网络协议数据解析方法,其中,所述目标协议中包括的所有字段构成的数据类型包括顺序型、迭代型、嵌套型中的一种或多种;

所述协议配置文件的配置类型包括顺序型、迭代型、嵌套型中的一种或多种。

4.根据权利要求3所述的可配置的网络协议数据解析方法,其中,当所述目标协议中包括的所有字段构成的数据类型为顺序型时,所述所有字段按照先后顺序依次放置;

当所述目标协议中包括的所有字段构成的数据类型为迭代型时,所述目标协议内除头部数据外,所述所有字段先按预定的结构组织后,再按顺序迭代的形式依次放置;

当所述目标协议中包括的所有字段构成的数据类型为嵌套型时,所述目标协议的各字段本身的数据格式内含有另外一种数据格式。

5.根据权利要求1所述的可配置的网络协议数据解析方法,其中,所述方法还包括通过以下方法配置所述协议解析器:通过所述解析引擎读取预先编写的协议配置文件,以使所述协议解析器基于协议配置文件进行初始化和注册。

6.根据权利要求5所述的可配置的网络协议数据解析方法,其中,所述协议配置文件包括:协议名称、协议所使用的端口、协议所使用的IP、关联的下层协议和协议字段;

所述协议解析器基于对应的协议配置文件注册的信息包括:协议配置文件路径、协议名称、协议所使用的端口、协议所使用的IP、关联的下层协议和协议字段。

7.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1至6任意一项所述的方法。

说明书 :

可配置的网络协议数据解析方法及电子设备

技术领域

[0001] 本公开涉及技术领域,尤其涉及一种可配置的网络协议数据解析方法及电子设备。

背景技术

[0002] 网络协议是计算机网络中相互通信的对等实体之间数据交换时所必须遵守的规则、标准集合。因为网络节点之间联系的复杂性和网络协议的多层次结构设计,这就提升了网络协议解析的复杂性和多样性。以往常规的协议解析实现都是采用硬编码方式。硬编码方式虽然保证了解码的正确性,但是面临开发周期长、后期维护成本高和扩展难度大等问题。

发明内容

[0003] 有鉴于此,本公开的目的在于提出一种可配置的网络协议数据解析方法及电子设备。
[0004] 基于上述目的,本公开第一方面提供了一种可配置的网络协议数据解析方法,应用于电子设备,所述电子设备包括解析引擎,所述解析引擎内设置有协议解析器;
[0005] 所述方法,包括:
[0006] 通过所述解析引擎分析待解析网络协议数据,以确定所述待解析网络协议数据采用的待解析协议;
[0007] 通过所述协议解析器对所述待解析网络协议数据进行解析;其中,所述协议解析器是根据预先编写的协议配置文件相应配置的,所述协议配置文件与所述待解析协议对应。
[0008] 基于相同目的,本公开第二方面提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的方法。
[0009] 从上面所述可以看出,本公开提供的可配置的网络协议数据解析方法及电子设备,该方法应用于电子设备,且电子设备包括解析引擎,解析引擎内设置有多个协议解析器;进行解析时,首先通过解析引擎分析待解析网络协议数据,以确定待解析网络协议数据采用的待解析协议和待解析协议对应的协议解析器,协议解析器是根据预先编写的协议配置文件相应配置的,然后通过协议解析器对待解析网络协议数据进行解析;该方法通过编写协议配置文件代替常规的编写代码的工作,使用协议配置文件驱动解析引擎的方式,完成网络协议数据的正确解析,即完成对于网络协议数据中所采用的协议的正确解析,具有开发周期短、安全系数高、需求响应速度快的优点。

附图说明

[0010] 为了更清楚地说明本公开或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0011] 图1为本公开实施例提供的网络协议数据解析的简略流程示意图;
[0012] 图2为本公开实施例提供的顺序型数据结构示意图;
[0013] 图3为本公开实施例提供的IP协议头数据格式示意图;
[0014] 图4为本公开实施例提供的迭代型数据结构示意图;
[0015] 图5为本公开实施例提供的RADIUS协议数据格式示意图;
[0016] 图6为本公开实施例提供的嵌套型数据结构示意图;
[0017] 图7为本公开实施例提供的OSPFv2协议LSU报文数据格式示意图;
[0018] 图8为本公开实施例提供的协议解析器中所有节点的关联关系结构为顺序型结构的示意图;
[0019] 图9为本公开实施例提供的协议解析器中所有节点的关联关系结构为迭代型结构的示意图;
[0020] 图10为本公开实施例提供的协议解析器中所有节点的关联关系结构为嵌套型结构的示意图;
[0021] 图11为本公开实施例提供的协议解析器中所有节点的关联关系结构为多级复杂嵌套型结构的示意图;
[0022] 图12为本公开实施例提供的示例性的可配置的网络协议数据解析方法的流程示意图;
[0023] 图13为本公开实施例所提供的一种更为具体的电子设备硬件结构示意图。

具体实施方式

[0024] 为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
[0025] 需要说明的是,除非另外定义,本公开实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
[0026] 网络协议,是计算机网络中相互通信的对等实体之间数据交换时所必须遵守的规则和标准的集合。因为网络节点之间联系的复杂性和网络协议的多层次结构设计,这就提升了网络协议解析的复杂性和多样性。以往常规的协议解析实现都是采用硬编码方式。硬编码方式虽然保证了解码的正确性,但是硬编码的方式是针对每一种协议分别进行开发,当新增一种或几种协议解析需求时,需要单独为其编写代码进行解析。
[0027] 这种情况下,作为开发人员,往往会面临一个问题:字段需求无法保证。因为在开发过程中,重点关注的是用户需求内所明确指出的字段,后期如有新增字段解析需求时,仍需编写、修改代码,可能反复出现开发周期和开发质量无法保证问题。
[0028] 针对上述问题,本公开提供了一种可配置的网络协议数据解析方法及电子设备,该方法应用于电子设备,且电子设备包括解析引擎,解析引擎内设置有多个协议解析器;进行解析时,首先通过解析引擎分析待解析网络协议数据,以确定待解析网络协议数据采用的待解析协议和待解析协议对应的协议解析器,协议解析器是根据预先编写的协议配置文件相应配置的,然后通过协议解析器对待解析网络协议数据进行解析;该方法可以应用于桌面计算机、移动电脑、手机、平板电脑、计算机、智能可穿戴设备、个人数字助理等,具体不做限定。
[0029] 为了便于理解,下面结合附图对该可配置的网络协议数据解析方法进行说明。
[0030] 如图1所示,执行本方法的电子设备(以下简称本电子设备)接收到网络协议数据后,为了获得网络协议数据所携带的内容,则需要对网络协议数据进行解析;为了对网络协议数据进行解析,可以在本电子设备内设置解析引擎(简称PAE),解析引擎为用来完成网络协议数据解析的虚拟模块。解析引擎可以包括至少一个具体用于执行解析工作的协议解析器,每个协议解析器负责解析一个协议,并且可以采用协议解析器负责解析的协议的编号对其进行标号,以标识协议解析器的唯一性。
[0031] 解析引擎内还可以包括预先构建的解析函数,进行网络协议数据解析时,解析引擎调用相应的解析函数,协议解析器基于解析函数解析网络协议数据。
[0032] 在一些实施例中,根据协议格式不同,待解析网络协议数据的类型可以划分为顺序型结构、迭代型结构、嵌套型结构中的一种或多种。
[0033] 顺序型结构的待解析网络协议数据,包括一个或多个单字段信息。对于顺序型结构的待解析网络协议数据,解析函数根据协议配置内单字段的各个信息,如字段起始位置、结束位置、长度信息等,按顺序依次从待解析数据内解析出所配置的一个或多个单字段信息。
[0034] 迭代型结构的待解析网络协议数据,包括一个或多个的相同或相似结构的单字段信息。对于迭代型结构的待解析网络协议数据,解析函数根据协议配置内迭代结构形式的单字段的各个信息,如字段起始位置、结束位置、长度信息等,以递归形式依次从待解析数据内解析出所配置的一个或多个单字段信息。
[0035] 嵌套型结构的待解析网络协议数据,不再是一种格式,而是顺序型或迭代型结构的相互引用,比如顺序型结构的某个字段是迭代型数据。对于嵌套型结构的待解析网络协议数据,解析函数根据协议配置内嵌套结构,判断出当前待解析字段的数据类型,如果是顺序型结构的数据,则按顺序依次从待解析数据内解析出所配置的一个或多个单字段信息,如果是迭代型结构的数据,则以递归形式依次从待解析数据内解析出所配置的一个或多个单字段信息。
[0036] 为了使用配置文件驱动协议解析引擎,完成网络协议数据的正确解析,需要预先编写配置文件,配置文件需要根据目标协议相应编写,则需要首先获取所有需要解析的目标协议。目标协议是指客户已进行的项目中使用到的协议,可以通过客户所有已进行项目获得所有需要解析的目标协议。
[0037] 需要说明的是,本实施例中的配置文件是一种关于协议的描述文件,描述文件格式有多种,包括但不限于XML、JSON等格式,层次结构简洁、清晰。该配置文件内包含与所描述协议相关的所有信息,如:协议名称、协议使用的IP、端口、关联的下层协议及各个协议字段等。每新增一种协议,需要根据每种文件格式要求和协议格式(如顺序型、迭代型、嵌套型内的一种或多种)编写对应的协议配置文件,用来描述协议信息。
[0038] 在得到所有需要解析的目标协议后,进一步可以分析各目标协议中包括的所有字段构成的数据类型。每个目标协议中可以分别包括多个字段,所有字段的结构关系形成数据类型;在实际应用中,数据类型可以包括顺序型、迭代型、嵌套型中的一种或多种,具体不做限定。
[0039] 一种情况下,目标协议中包括的所有字段构成的数据类型为顺序型时,所有字段可以按照先后顺序依次在协议内放置。如图2所示,协议内的所有字段Field1、Field2、Field3……FieldN,按照先后顺序依次在协议内进行放置。以IP协议为例,如图3所示,IP协议头数据为顺序型,字段Version、IHL、Type  of  Service、Total  Length、Identification……Options、Padding,按照先后顺序依次在IP协议头数据内进行放置。
[0040] 一种情况下,目标协议中包括的所有字段构成的数据类型为迭代型时,目标协议内除头部数据外,各字段可以先按预定的结构组织后,再按顺序迭代的形式依次放置。其中,预定的结构可以包括TLV或Struct,具体不做限定。如图4所示,在实际应用中,除头部数据外,各字段根据实际格式可以先按照TLV或Struct进行组织。以RADIUS协议为例,如图5所示,RADIUS协议数据中字段Code、Identifier、Length、Authenticator按照先后顺序依次放置,字段TLV内不同的T枚举值对应的V值按顺序迭代的形式依次放置在协议数据内。
[0041] 一种情况下,目标协议中包括的所有字段构成的数据类型为嵌套型时,目标协议内的各字段本身的数据格式内含有另外一种数据格式;进一步地,所包含的数据内还嵌有其他形式的数据,构成多级嵌套。如图6所示,嵌套型数据由消息头和多个TLV或Struct形式的数据构成,对于第一个TLV数据,value数据是struct形式的,而且struct数据内还有字段是tlv形式的,构成了二级嵌套。以OSPF v2协议为例,如图7所示,OSPF v2协议的LAU报文数据由LSA个数字段和0或多个LSA数据构成,LSA数据个数由“Number of LSAs”字段值决定,其中,对于一个LSA数据,还有可能包含TLV格式的MPLS数据,构成了二级嵌套。
[0042] 在通过分析得到各目标协议中所有字段构成的数据类型后,进一步可以分别编写各目标协议对应的协议配置文件,协议配置文件的配置类型与数据类型相适配。由于目标协议中包括的所有字段构成的数据类型包括顺序型、迭代型、嵌套型中的一种或多种,相应地,协议配置文件的配置类型包括顺序型、迭代型、嵌套型中的一种或多种。
[0043] 协议配置文件可以包括:协议名称、协议所使用的端口、协议所使用的IP、关联的下层协议和协议字段等内容,具体不做限定。协议配置文件的格式可以为XML或JSON等格式,层次结构简洁、清晰。
[0044] 以JSON文件为例,以IP协议配置文件部分内容,来说明顺序型的配置所包括的内容,可以包括:协议名称、关联的下层协议、具体协议字段、字段占字节起始位置、字段占字节长度、字段占位起始位置、字段占位结束位置、字段名称、字段释义、字段取值枚举个数、字段解析后动作、字段枚举值、枚举值具体指定、枚举值表示方式、枚举值释义、字段取值表示方式、字段无枚举值,直接取值等内容,其中枚举值具体指定可以指定枚举值为4或枚举值为6等,不做具体限定。
[0045] 以JSON文件为例,以RADIUS协议配置文件部分内容,来说明迭代型的配置所包括的内容,可以包括:协议名称、协议关联层数、协议端口号、迭代模式、具体协议字段、字段占字节起始位置、字段占字节长度、字段名称、字段释义、字段取值枚举个数、字段解析后动作、字段枚举值、枚举值具体指定、枚举值表示方式、枚举值释义、字段取值表示方式、字段有无枚举值标志,直接取值标志、TLV信息、TLV‑T枚举值、TLV‑T枚举值取值表示方式、T枚举值释义、T对应的V表示方式等内容,其中枚举值具体指定可以指定枚举值为1或枚举值为2等,具体不做限定。
[0046] 以JSON文件为例,以OSPF v2协议配置文件部分内容,来说明嵌套型配置所包括的内容,可以包括:协议名称、协议关联层数、嵌套模式、具体协议字段、字段占字节起始位置、字段占字节长度、字段名称、字段释义、字段大小端、字段取值枚举个数、字段解析后动作、枚举值具体指定、枚举值表示方式、枚举值释义、LSA字段、LSA内的MPLS字段等,其中枚举值具体指定可以指定枚举值为1、枚举值为2、枚举值为3或枚举值为4等,具体不做限定。
[0047] 在接收到待解析的网络协议数据时,可以通过解析引擎对待解析网络协议数据进行分析,确定待解析网络协议数据采用的是哪种网络协议,即待解析协议,对待解析网络协议数据进行解析的过程即为对待解析协议进行解析的过程,且通过配置完成的协议解析器对待解析网络协议数据进行解析。
[0048] 一种情况下,基于协议配置文件对协议解析器的配置过程可以是在接收到待解析网络协议数据之前,对各协议解析器分别采用对应的协议配置文件进行配置,在接收到待解析网络协议数据后,通过解析引擎对待解析网络协议数据进行分析,确定待解析网络协议数据采用的待解析网络协议,然后通过待解析网络协议对应的已完成配置的协议解析器,对待解析网络协议数据进行解析。不难理解的,通过采用协议配置文件对各协议解析器进行预先配置,能够提高解析速度。
[0049] 一种情况下,基于协议配置文件对协议解析器的配置过程可以是在接收到待解析网络协议数据之后,且在对待解析网络协议数据进行分析之前,对各协议解析器分别采用对应的协议配置文件进行配置,配置完成后,通过解析引擎对待解析网络协议数据进行分析,确定待解析网络协议数据采用的待解析网络协议,然后通过待解析网络协议对应的已配置完成的协议解析器,解析接收的待解析网络协议数据。
[0050] 一种情况下,基于协议配置文件对协议解析器的配置过程可以是在接收到待解析网络协议数据,且通过解析引擎对待解析网络协议数据进行分析,确定其采用的待解析协议之后,确定待解析协议对应的协议配置文件和协议解析器,然后协议解析器基于协议配置文件进行配置,配置完成后,通过协议解析器解析接收的待解析网络协议数据。
[0051] 协议解析器基于协议配置文件进行配置时,可以首先通过解析引擎读取协议配置文件,然后协议解析器基于协议配置文件进行初始化和注册;其中,注册的信息可以包括:协议配置文件路径、协议名称、协议所使用的端口、协议所使用的IP、关联的下层协议和协议字段等。需要说明的是,每个协议解析器采用对应的单个协议配置文件进行配置。
[0052] 在协议解析器基于协议配置文件进行配置后,协议解析器可以看作为包括多个节点的解析链,解析链中包括的所有节点的个数,与协议解析器对应的目标协议中包括的字段的个数相同,且解析链中包括的各节点和目标协议中包括的各字段一一对应。例如,协议解析器中的节点表示起始位置、占位长度、字段类型、枚举值等,具体不做限定。
[0053] 在与待解析网络协议数据对应的协议解析器配置完成后,可以通过解析引擎确定协议解析器中所有节点的关联关系结构,关联关系结构可以包括顺序型结构、迭代型结构、嵌套型结构中的一种或多种。
[0054] 需要说明的是,预先构建的解析函数与目标协议中包括的所有字段构成的数据类型一一对应。由于协议解析器基于协议配置文件进行配置,协议配置文件的配置类型与协议中包括的所有字段构成的数据类型相适配,且协议解析器进行配置后为包含多个节点的解析链,解析链上的各节点与协议中包括的字段一一对应,解析链上的各节点构成的关联关系类型与协议中所有字段构成的数据类型相对应,则不难理解的是,解析函数与协议解析器中所有节点构成的关联关系类型相对应,确定协议解析器中所有节点构成的关联关系类型后,可以基于该关联关系类型确定相应的解析函数,便于对网络协议数据进行快速准确的解析。
[0055] 则,在确定与待解析网络协议数据对应的协议解析器中所有节点的关联关系结构后,可以进一步通过解析引擎根据关联关系结构,确定并调用与该关联关系结构对应的解析函数;然后根据解析函数,通过协议解析器由待解析网络协议数据中提取协议解析器中所有节点相应的字段信息。
[0056] 当协议解析器中所有节点的关联关系结构为顺序型结构时,可以根据解析函数,通过协议解析器由待解析网络协议数据中,按照所有节点的排列顺序依次提取其对应的字段信息。
[0057] 如图8所示,协议解析器根据协议配置文件进行配置后,所有节点的关联关系结构为顺序型结构,进行解析时,从ID节点开始,逐个、依次从待解析网络协议数据中提取字段信息。
[0058] 当协议解析器中所有节点的关联关系结构为迭代型结构时,可以根据解析函数,通过协议解析器从待解析网络协议数据中,由关联关系结构的内层节点到外层节点依次提取对应的字段信息。
[0059] 对于迭代型结构还可以细划分为TLV迭代和Struct迭代;对于TLV迭代,还可以划分为不同T枚举值对应相同类型的V和不同T枚举值对应不同类型的V。
[0060] 如图9所示,radius协议解析器根据协议配置文件进行配置后,所有节点的关联关系结构为迭代型结构,前四个节点依次是Code、Identifier、Length和Authenticator,第五个节点表示迭代形式的TLV数据。
[0061] 由于不同的T枚举值对应V值不同,第五个节点和前四个节点顺序解析维度不同,从第五个节点TLV开始,从另外一个维度解析“不同的T对应的V值”,如图9内V1、V2、V3节点。
[0062] 迭代TLV的解析过程,就是通过不同的T递归解析其对应的V的过程。迭代TLV解析完后,回到TLV节点所在维度,继续顺序解析下一个节点。在Radius协议内,TLV节点是最后一个一维维度节点。
[0063] 当协议解析器中所有节点的关联关系结构为嵌套型结构时,可以根据解析函数,通过协议解析器从待解析网络协议数据中,由关联关系结构的内层节点到外层节点依次提取对应的字段信息。
[0064] 如图10所示,对于如图9所示的迭代型结构中,第五节点中不同T对应的V的类型不同时,V的类型可能是TLV或Struct,这就形成了嵌套型数据。假设,V1是TLV格式的数据,V2是Struct格式的数据;V11、V12、V13是V1不同T值对应的V值,V21、V22、V23是V2的结构内数据值。则,对于如图10所示的嵌套型结构,出现了第三维度上的数据解析。
[0065] Code、Iden、Leng、Auth、TLV构成第一维度,V1、V2、V3构成第二维度,V11、V12、V13、V21、V22、V23构成第三维度,进行解析时,解析完TLV所在第一维度的前序节点后,进行V1、V2、V3所在第二维度的解析,依次解析完V11、V12、V13后,再依次解析V21、V22、V23,然后解析V3,在回到TLV所在的第一维度进行下一节点的解析。
[0066] 如图11所示,假设V51是TLV数据,V52是Struct数据。V511、V512、V513是V51不同T值对应的V值。V521、V522、V523是V52的结构内数据值。则,对于如图11所示的嵌套型结构,就出现了第三维度上的数据解析。如果V511、V512、V513、V521、V522、V523分别是TLV或Struct格式数据,则形成了多级复杂嵌套。
[0067] TLV所在维度为第一维度,V1、V2、V3、V4、V5构成第二维度,V51、V52、V53构成第三维度,V511、V512、V513、V521、V522、V523构成第四维度,进行解析时,依次解析TLV所在的第一维度的前序节点后,进行V1、V2、V3、V4、V5所在第二维度的解析,依次解析完V1、V2、V3、V4后,进行V51、V52、V53所在第三维度的解析,依次解析完V511、V512、V513后,再依次解析V521、V522、V523,然后进行第三维度后续节点V53的解析,解析完V53所在第三维度后,进行V5所在第二维度后续节点的解析,解析完第二维度的所有节点后,回到TLV所在第一维度进行下一节点的解析。
[0068] 在由待解析网络协议数据中,提取完协议解析器中所有节点相应的字段信息后,还可以将字段信息以TLV格式全字段输出,或以结构体形式对部分字段输出。
[0069] 可以理解的是,该方法通过编写协议配置文件代替常规的编写代码的工作,使用协议配置文件驱动解析引擎的方式,完成网络协议数据的正确解析,即完成对于网络协议数据中所采用的协议的正确解析。相较于编写代码,编写配置文件有着复杂度低、开发周期短的优势;面对用户提出新的需求或用户原有需求发生变动时,相较于修改代码和更新程序,修改协议配置文件对系统的稳定性造成的影响微乎其微;对用户需求发生变化时,相较于重编代码和更新程序,更新配置文件所需的时间极短,能及时响应用户的各种需求。
[0070] 本公开实施例还提供了一种可配置的网络协议数据解析方法,能够使用协议配置文件驱动解析引擎的方式,完成网络协议数据的正确解析。图12示出了本公开实施例提供的示例性的可配置的网络协议数据解析方法的流程示意图。该方法应用于电子设备,所述电子设备包括解析引擎,所述解析引擎内设置有协议解析器;该方法可以包括如下步骤:
[0071] 步骤S121、通过所述解析引擎分析待解析网络协议数据,以确定所述待解析网络协议数据采用的待解析协议;
[0072] 步骤S122、通过所述协议解析器对所述待解析网络协议数据进行解析;
[0073] 其中,所述协议解析器是根据预先编写的协议配置文件相应配置的,所述协议配置文件与所述待解析协议对应。
[0074] 在一些实施例中,所述协议配置文件可以是根据目标协议相应编写的;根据协议配置文件进行配置后的所述协议解析器可以为包括多个节点的解析链,所述解析链中包括的各节点和相应的目标协议中包括的各字段一一对应。
[0075] 在一些实施例中,所述通过所述协议解析器,对所述待解析网络协议数据进行解析,可以包括:通过所述解析引擎确定所述协议解析器中所有节点的关联关系结构,基于所述关联关系结构确定并调用相应的解析函数;基于所述解析函数,通过所述协议解析器由所述待解析网络协议数据中,提取所述协议解析器中所有节点相应的字段信息。
[0076] 在一些实施例中,所述协议解析器中包括的所有节点的关联关系结构可以包括顺序型结构、迭代型结构、嵌套型结构中的一种或多种;
[0077] 当所述协议解析器中所有节点的关联关系结构为顺序型结构时,可以基于所述所有节点的排列顺序依次由所述待解析网络协议数据中提取信息;当所述协议解析器中所有节点的关联关系结构为迭代型结构或嵌套型结构时,可以由所述关联关系结构的内层节点到外层节点依次由所述待解析网络协议数据中提取信息。
[0078] 在一些实施例中,所述协议配置文件的编写方法可以包括:根据用户需求准备目标协议列表,所述目标协议列表包括至少一个目标协议;分析各所述目标协议中包括的所有字段构成的数据类型;基于分析结果,分别编写各所述目标协议对应的协议配置文件;其中,所述协议配置文件的配置类型与所述数据类型相适配。
[0079] 在一些实施例中,所述目标协议中包括的所有字段构成的数据类型可以包括顺序型、迭代型、嵌套型中的一种或多种;所述协议配置文件的配置类型可以包括顺序型、迭代型、嵌套型中的一种或多种。
[0080] 在一些实施例中,当所述目标协议中包括的所有字段构成的数据类型为顺序型时,所述所有字段可以按照先后顺序依次放置;当所述目标协议中包括的所有字段构成的数据类型为迭代型时,所述目标协议内除头部数据外,所述所有字段可以先按预定的结构组织后,再按顺序迭代的形式依次放置;当所述目标协议中包括的所有字段构成的数据类型为嵌套型时,所述目标协议的各字段本身的数据格式内可以含有另外一种数据格式。
[0081] 在一些实施例中,所述方法还可以包括通过以下方法配置所述协议解析器:通过所述解析引擎读取预先编写的协议配置文件,以使所述协议解析器基于协议配置文件进行初始化和注册。
[0082] 在一些实施例中,所述协议配置文件可以包括:协议名称、协议所使用的端口、协议所使用的IP、关联的下层协议和协议字段;所述协议解析器基于对应的协议配置文件注册的信息可以包括:协议配置文件路径、协议名称、协议所使用的端口、协议所使用的IP、关联的下层协议和协议字段。
[0083] 需要说明的是,本公开实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
[0084] 需要说明的是,上述对本公开的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0085] 基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的可配置的网络协议数据解析方法。
[0086] 图13示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
[0087] 处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
[0088] 存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
[0089] 输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
[0090] 通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
[0091] 总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
[0092] 需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
[0093] 上述实施例的电子设备用于实现前述任一实施例中相应的可配置的网络协议数据解析方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
[0094] 所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
[0095] 另外,为简化说明和讨论,并且为了不会使本公开实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开实施例。因此,这些描述应被认为是说明性的而不是限制性的。
[0096] 尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
[0097] 本公开实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。