专利名称:实现字段解码的方法和装置的制作方法
技术领域:
本发明涉及网络通信技术领域,特别是涉及一种实现字段解码的方法和装置。
背景技术:
随着网络应用的急剧增长,网络中所潜伏的危险也越来越多,因此有必要对网络 中的传输数据包进行分析,以便找出网络中潜在的问题。例如,当网络中报文的发送速度比 较慢时,需要使用协议分析仪对网络传输的数据包进行分析,进而判断问题的所在。其中, 对网络传输的数据包进行字段解码是协议分析的一个关键环节。 在现有技术中,为了实现对网络传输的数据包进行字段解码,而协议中参与字段 解码的字段就称为解码字段,协议中每个解码字段都对应一个特定的解码处理流程,通过 调用与解码字段所对应的解码处理流程来实现对一个数据包进行字段解码的功能。例如, 当用协议中的解码字段1、解码字段2和解码字段3对一个数据包进行字段解码时,为了实 现相应的解码功能,需要由开发人员分别为解码字段1建立解码处理流程1、为解码字段2 建立解码处理流程2和为解码字段3建立解码处理流程3。 然而,当采用现有的这种解码的方法实现字段解码功能时,就需要由开发人员针 对每一个解码字段建立特定的解码处理流程,这种繁琐的实现字段解码方法势必会给开发 人员带来巨大的工作量,特别是要实现协议规范中所定义的所有字段的字段解码功能时, 也就是说,要实现协议中的全字段的字段解码功能时,由于全字段的字段数目庞大,从而导 致开发人员在开发中不容易实现对网络传输的数据包进行协议中全字段的字段解码。
发明内容
本发明实施例提供了一种实现字段解码的方法和装置,以在减轻开发人员工作量
的基础上实现对网络传输的数据包进行协议中全字段的字段解码。 本发明实施例公开了 一种实现字段解码的方法, —种实现字段解码的方法,预先建立与字段类型相对应的字段解码处理流程,所 述方法包括获取对待解码数据包进行解码的解码字段的字段类型;调用与所述解码字段 的字段类型相对应的字段解码处理流程,由所述字段解码处理流程对所述待解码数据包进 行解码。 优选的,所述获取对待解码数据包进行解码的解码字段的字段类型包括将协议 静态信息集合展现给用户,由所述用户从所述协议静态信息集合中选择字段作为所述解码 字段,所述协议静态信息集合以一个字段的字段信息为一个节点,所述字段信息中至少包 括有字段类型和字段所属节点的节点标识;接收用户选择的所述解码字段,并读取所述解 码字段的字段信息,得到所述解码字段的字段类型。 优选的,所述字段信息中还包括字段名称、字段所属节点的父节点标识和字段所 属节点的子节点标识中的任意一个或者任意多个组合。 优选的,所述由所述字段解码处理流程对所述待解码的数据包进行解码包括以帧为单位接收所述待解码的数据包;将一个数据帧按照所述解码字段的顺序进行解码,且字段类型相同的解码字段采用相同的字段解码处理流程,重复执行数据帧的解码,直到完成所述待解码数据包的解码为止。 优选的,所述方法还包括将解码结果存储在协议的解码结果集合中,所述协议解码结果集合以一个解码字段的解码信息为一个节点,所述解码信息中至少包括有字段的解码结果和字段所属节点的节点标识。
优选的,所述解码信息中还包括字段名称和字段类型。 —种实现字段解码的装置,所述装置包括预建单元,用于预先建立与字段类型相对应的字段解码处理流程;字段类型获取单元,用于获取对待解码数据包进行解码的解码字段的字段类型;解码单元,用于调用与所述解码字段的字段类型相对应的字段解码处理流程,由所述字段解码处理流程对所述待解码数据包进行解码。 优选的,所述字段类型获取单元包括展现单元,用于将协议静态信息集合中展现给用户,由所述用户从所述静态信息集合中选择字段作为所述解码字段,所述协议静态信息集合以一个字段的字段信息为一个节点,所述字段信息中至少包括有字段类型和字段所属节点的节点标识;读取单元,用于接收用户选择的所述解码字段,并读取所述解码字段的字段信息,得到所述解码字段的字段类型。 优选的,所述解码单元包括数据帧接收单元,用于以帧为单位接收所述待解码的数据包;数据帧解码单元,用于将一个数据帧按照所述解码字段的顺序进行解码,且字段类型相同的解码字段采用相同的字段解码处理流程,重复执行数据帧的解码,直到完成所述待解码数据包的解码为止。 优选的,所述装置还包括解码结果存储单元,用于将解码结果存储在协议的解码结果集合中,所述协议解码结果集合以一个解码字段的解码信息为一个节点,所述解码信息中至少包括有字段的解码结果和字段所述节点的节点标识。 由上述本发明的实施例可以看出,按照字段类型建立相应的字段解码处理流程,相同字段类型的字段根据相同的字段解码处理流程对数据包进行解码,由于在协议中各个字段的字段类型有限,通常为几种到十几种,因此,极大地节省了开发人员的工作量,更易于开发人员实现对网络传输的数据包进行协议中全字段的字段解码。
图1为本发明实施例一揭示的一种实现字段解码的方法的流程 图2为本发明协议静态信息集合的物理数据的数组结构示意 图3为本发明IP协议的静态信息集合所对应的静态信息树的结构示意 图4为本发明一种实现协议字段解码的示意图; 图5为本发明实施例二揭示的一种实现字段解码的方法的流程 图6为本发明中平台解码器总体设计结构图; 图7为本发明实施例三揭示的一种实现字段解码的装置的结构图。
具体实施例方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实
5施方式对本发明作进一步详细的说明。 本发明可用于众多通用或专用的计算系统环境或配置中。例如个人计算机、服务 器计算机、手持设备或便携式设备、平板型设备、多处理器系统、包括以上任何系统或设备 的分布式计算环境等等。 本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序 模块。 一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组 件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由 通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以 位于包括存储设备在内的本地和远程计算机存储介质中。
实施例一 请参阅图1,图1为本发明实施例一揭示的一种实现字段解码的方法的流程图,预
先建立与字段类型相对应的字段解码处理流程,字段解码的方法包括以下步骤 步骤101 :获取对待解码数据包进行解码的解码字段的字段类型; 其中,获取待过滤字段的字段类型包括所述获取对待解码数据包进行解码的解
码字段的字段类型包括将协议静态信息集合展现给用户,由所述用户从所述静态信息集
合中选择字段作为所述解码字段,所述协议静态信息集合以一个字段的字段信息为一个节
点,所述字段信息中至少包括有字段类型和字段所属节点的节点标识;接收用户选择的所
述解码字段,并读取所述解码字段的字段信息,得到所述解码字段的字段类型。
例如,以一个字段的字段信息为一个节点单元,建立协议静态信息集合。协议静态
信息集合用来完整地描述整个协议的信息,其中最重要的是协议中各个字段的字段信息。
在协议静态信息集合中,每一个节点单元对应一个字段信息,协议静态信息集合是一个包
含了全字段的字段信息的集合。在每个字段的字段信息中,至少包括有字段类型和字段所
属节点的节点标识。其中,通过字段的字段类型,可以调用与该字段类型相对应的字段解码
处理流程,通过节点标识,可以区分协议静态信息集合中的各个字段。 如,协议静态信息集合中包含有5个字段,当然,通常在协议静态信息集合中包含 有上千个字段,这里仅仅是为了方便说明协议静态信息集合中的内容,特将协议静态信息 集合中的字段数简化为5个。该协议静态信息集合的内容可以为 { (A, Data), (B, Data), (C, String), (D, Time), (E, Float), } 如果以其中的(A, Data)节点单元为例来说明,它包含了第一个字段的字段信息, 其中,"A"表示第一个字段所属节点的节点标识,"Data"表示第一字段的字段类型为数值 型。 所述字段信息中还可以包括字段名称、字段所属节点的父节点标识和字段所属 节点的子节点标识中的任意一个或者任意多个组合。
6
协议静态信息集合在物理上可以使用数组的方式实现,即协议静态信息集合中的节点单元分别与数组中的数组单元相对应。这样使得协议静态信息集合在数据结构上简单,通过字段标识更便于快速定位集合中的某个字段单元。请参阅图2,其为本发明协议静态信息集合的物理数据的数组结构示意图。如,在第一个数组单元中,包含协议静态信息集合中一个字段的字段信息,具体有字段名称、字段所属节点的节点标识、字段所属节点的父节点标识和字段所属节点的子节点标识列表。 协议静态信息集合在逻辑上可以采用树的形式,树中的每一个节点对应协议静态信息集合中一个字段信息,以IP协议为例,建立IP协议的静态信息集合,IP协议的静态信息集合所对应的静态信息树如图3所示。 当建立了协议静态信息集合后之后,将所述协议静态信息集合展现给用户,由用
户选择从协议静态信息集合的全字段中选择解码字段,即协议中参与字段解码的字段。当
用户选择了解码字段后,读取解码字段的字段信息,得到解码字段的字段类型。
步骤102 :调用与所述解码字段的字段类型相对应的字段解码处理流程,由所述
字段解码处理流程对所述待解码数据包进行解码。 例如,当得到解码字段的字段类型后,根据预先建立的字段类型和字段解码处理流程之间的对应关系,调用与解码字段的字段类型相对应的字段解码处理流程。在每个解码字段的解码处理流程中, 其中,所述由所述字段解码处理流程对所述待解码的数据包进行解码包括以帧为单位接收所述待解码的数据包;将一个数据帧按照所述解码字段的顺序进行解码,且字段类型相同的解码字段采用相同的字段解码处理流程,重复执行数据帧的解码,直到完成所述待解码数据包的解码为止。 例如,先以帧为单位接收待解码的数据包,在得到一个数据帧后,按照各个解码字段的顺序进行解码,其中,全子段解码就是按照协议静态信息树中的所有字段进行解码。如,解码字段为字段A、字段B、字段C、字段D和字段E,且字段A和字段B的字段类型相同,都是数值类型的字段。当对一个数据帧进行解码时,先获取协议静态信息树中描述的第一个字段A,调用与字段A的字段类型相对应的字段解码处理流程,S卩,在数据帧中解码出一个Data类型的数据,得到结果为6,与字段A组成结果(A, 6),然后再取出下一个字段B,由于字段B与字段A的字段类型相同,即调用数值类型的字段解码处理流程,之后在依次调用字段C、字段D和字段E的解码字段处理流程。当第一个数据帧的解码完毕后,按照上述方式解码第二个数据帧,依次重复执行数据帧的解码,直到完成所述待解码数据包的解码为止。请参阅图4,其为本发明一种实现协议字段解码的示意图。 所述方法还可以进一步包括将解码结果存储在协议的解码结果集合中,所述协议解码结果集合以一个解码字段的解码信息为一个节点,所述解码信息中至少包括有字段的解码结果和字段所属节点的节点标识。其中,所述解码信息中还包括字段名称和字段类型。 例如,上述中的解码结果可以以解码结果集合的形式存储。在解码结果集合中,每一个节点单元对应一个解码字段的解码信息,在每一个解码信息中,至少包括有字段的解码结果和字段所属节点的节点标识。其中,通过节点标识,可以指示出每个解码结果所属的解码字段。
例如,当确定解码为字段1、字段2和字段3后,由相应的字段信息可知,字段1和字段2的字段类型都为数值型,字段3的字段类型为字符串型,因此,字段1和字段2会调用与数值型的字段相对应的解码处理流程,而字段3会调用与字符串型的字段相对应的解码处理流程,从而分别完成解码处理工作。 解码结果集合在物理上也可以使用数组的方式实现,在逻辑上可以采用树的形式实现。 由上述本发明实施例可以看出,按照字段类型建立相应的字段解码处理流程,相同字段类型的字段根据相同的字段解码处理流程对数据包进行解码,由于在协议中各个字段的字段类型有限,通常为几种到十几种,因此,极大地节省了开发人员的工作量,更易于开发人员实现对网络传输的数据包进行协议中全字段的字段解码。
实施例二 请参阅图5,图5为本发明实施例二揭示的一种实现字段解码的方法的流程图,与
上述实施例一的不同之处在于,本实施例为一种实现字段解码的具体实施方式
。 在本实施例中,预先建立与字段类型相对应的解码处理流程,例如,与字符串类型
的字段相对应的字符串型字段解码处理流程和与数值类型的字段相对应的数值型字段解
码处理流程,当针对协议规范中所定义的所有字段的字段类型都建立了相应的解码处理流
程之后,对协议中的字段的解码处理过程可以具体包括以下步骤 步骤501 :将协议静态信息结合展现给用户,由用户从所述协议静态信息集合中选择字段作为解码字段; 例如,协议静态信息集合在逻辑上可以采用树的形式,如图3所示,树中的每一个节点对应协议静态信息集合中的一个字段信息。由用户从树状的协议静态信息集合中选择了一些字段作为解码字段。如,用户从协议静态信息集合中选择了字段A和字段B作为解码字段。用户也可以从协议静态信息集合中选择协议的全部字段作为解码字段,从而对数据包进行全字段的解码。 步骤502 :接收用户选择的解码字段,并读取所述解码字段的字段信息,得到解码字段的字段类型; 例如,当用户选择了字段A和字段B作为解码字段后,接收用户选择的这两个解码字段。在协议静态信息树中,以一个字段的字段信息为一个节点,字段信息中至少包括有字段类型和字段所属节点的节点标识。两个解码字段都分别具有各自的字段信息,并通过读取两个解码字段的字段信息,可以得到两个解码字段的字段类型。请参阅6,其为本发明中平台解码器总体设计结构图。如图6所示,当用户选择字段A和字段B作为解码字段后,通过协议静态信息集合中的对外接口接收用户选择的解码字段,并进一步通过读取解码字段的字段信息,得到解码字段的字段类型。 步骤603 :调用与解码字段的字段类型相对应的字段解码处理流程,由字段解码处理流程对待解码的数据包进行解码; 步骤604 :将解码结果存储在协议的解码结果集合中。 例如,可以将解码结果存储在一个解码结果集合中,在解码结果集合中,以一个解码字段的解码信息为一个节点单元,如,解码字段A和解码字段B的解码信息分别对应一个节点单元,在解码信息中包括有字段的解码结果、字段所属节点的节点标识、字段类型和字段名称。根据节点标识可以区分出每个解码结果所属的解码字段。 由上述本发明的实施例可以看出,按照字段类型建立相应的字段解码处理流程, 相同字段类型的字段根据相同的字段解码处理流程对数据包进行解码,由于在协议中各个 字段的字段类型有限,通常为几种到十几种,因此,极大地节省了开发人员的工作量,更易 于开发人员实现对网络传输的数据包进行协议中全字段的字段解码。 同时,本实施例可以实现运行时定义分析功能;由于传统软件发布之后,一般功能 都是定义好的,用户修改能力很小。而本实施例中的字段解码机制能够可以根据用户的需 求,动态选择哪些字段进行解码,用以支撑分析功能。传统解码机制,要实现这种功能,就必 须将协议中每一个字段都解码出来,严重浪费开发工作量,降低软件运行效率。
此外,本实施例中,不仅,协议解码开发工作效率提高,即,协议解码过程由传统的 编写程序代码过程,变成实现静态信息树的过程,大大简化工作,提高效率。开发第二个协 议的时候,已经实现的字段类型的解码函数不需要重新编写,只实现协议静态信息树即可。 而且,协议处理机制和呈现机制标准化,即,机制与内容分离,修改和新增功能更加容易,例 如,对于Data类型,假设第一次只实现了 IO进制显示功能,想修改成16进制,只要修改显 示Data类型的相关处理就可以,不再需要在具体的协议中修改。
实施例三 与上述一种实现字段解码的方法相对应,本发明实施例还提供了一种实现字段解 码的装置。请参阅图7,图7为本发明实施例三揭示的一种实现字段解码的装置的结构图, 该装置包括预建单元701、字段类型获取单元702和解码单元703。下面结合该装置的工作 原理进一步介绍其内部结构以及连接关系。 预建单元,用于预先建立与字段类型相对应的字段解码处理流程;
字段类型获取单元,用于获取对待解码数据包进行解码的解码字段的字段类型;
解码单元,用于调用与所述解码字段的字段类型相对应的字段解码处理流程,由 所述字段解码处理流程对所述待解码数据包进行解码。 其中,字段类型获取单元702包括展现单元7021和读取单元7022, 展现单元7021,用于将协议静态信息集合中展现给用户,由所述用户从所述静态
信息集合中选择字段作为所述解码字段,所述协议静态信息集合以一个字段的字段信息为
一个节点,所述字段信息中至少包括有字段类型和字段所属节点的节点标识; 读取单元7022,用于接收用户选择的所述解码字段,并读取所述解码字段的字段
信息,得到所述解码字段的字段类型。 其中,解码单元703包括数据帧接收单元7031和数据帧解码单元7032, 数据帧接收单元7031,用于以帧为单位接收所述待解码的数据包; 数据帧解码单元7032,用于将一个数据帧按照所述解码字段的顺序进行解码,且
字段类型相同的解码字段采用相同的字段解码处理流程,重复执行数据帧的解码,直到完
成所述待解码数据包的解码为止。 进一步的,所述装置还包括解码结果存储单元704,用于将解码结果存储在协议 的解码结果集合中,所述协议解码结果集合以一个解码字段的解码信息为一个节点,所述 解码信息中至少包括有字段的解码结果和字段所述节点的节点标识。 由上述本发明的实施例可以看出,按照字段类型建立相应的字段解码处理流程,
9相同字段类型的字段根据相同的字段解码处理流程对数据包进行解码,由于在协议中各个字段的字段类型有限,通常为几种到十几种,因此,极大地节省了开发人员的工作量,更易于开发人员实现对网络传输的数据包进行协议中全字段的字段解码。 以上对本发明所提供的实现字段解码的方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
一种实现字段解码的方法,其特征在于,预先建立与字段类型相对应的字段解码处理流程,所述方法包括获取对待解码数据包进行解码的解码字段的字段类型;调用与所述解码字段的字段类型相对应的字段解码处理流程,由所述字段解码处理流程对所述待解码数据包进行解码。
2. 根据权利要求1所述的方法,其特征在于,所述获取对待解码数据包进行解码的解 码字段的字段类型包括将协议静态信息集合展现给用户,由所述用户从所述协议静态信息集合中选择字段作 为所述解码字段,所述协议静态信息集合以一个字段的字段信息为一个节点,所述字段信 息中至少包括有字段类型和字段所属节点的节点标识;接收用户选择的所述解码字段,并读取所述解码字段的字段信息,得到所述解码字段 的字段类型。
3. 根据权利要求2所述的方法,其特征在于,所述字段信息中还包括字段名称、字段 所属节点的父节点标识和字段所属节点的子节点标识中的任意一个或者任意多个组合。
4. 根据权利要求1所述的方法,其特征在于,所述由所述字段解码处理流程对所述待 解码的数据包进行解码包括以帧为单位接收所述待解码的数据包;将一个数据帧按照所述解码字段的顺序进行解码,且字段类型相同的解码字段采用相 同的字段解码处理流程,重复执行数据帧的解码,直到完成所述待解码数据包的解码为止。
5. 根据权利要求l-4任意一项所述的方法,其特征在于,所述方法还包括 将解码结果存储在协议的解码结果集合中,所述协议解码结果集合以一个解码字段的解码信息为一个节点,所述解码信息中至少包括有字段的解码结果和字段所属节点的节点 标识。
6. 根据权利要求5所述的方法,其特征在于,所述解码信息中还包括字段名称和字段 类型。
7. —种实现字段解码的装置,其特征在于,所述装置包括预建单元,用于预先建立与字段类型相对应的字段解码处理流程;字段类型获取单元,用于获取对待解码数据包进行解码的解码字段的字段类型; 解码单元,用于调用与所述解码字段的字段类型相对应的字段解码处理流程,由所述 字段解码处理流程对所述待解码数据包进行解码。
8. 根据权利要求7所述的装置,其特征在于,所述字段类型获取单元包括 展现单元,用于将协议静态信息集合中展现给用户,由所述用户从所述静态信息集合中选择字段作为所述解码字段,所述协议静态信息集合以一个字段的字段信息为一个节 点,所述字段信息中至少包括有字段类型和字段所属节点的节点标识;读取单元,用于接收用户选择的所述解码字段,并读取所述解码字段的字段信息,得到所述解码字段的字段类型。
9. 根据权利要求7所述的装置,其特征在于,所述解码单元包括 数据帧接收单元,用于以帧为单位接收所述待解码的数据包;数据帧解码单元,用于将一个数据帧按照所述解码字段的顺序进行解码,且字段类型相同的解码字段采用相同的字段解码处理流程,重复执行数据帧的解码,直到完成所述待解码数据包的解码为止。
10.根据权利要求7-9任意一项所述的装置,其特征在于,所述装置还包括 解码结果存储单元,用于将解码结果存储在协议的解码结果集合中,所述协议解码结果集合以一个解码字段的解码信息为一个节点,所述解码信息中至少包括有字段的解码结果和字段所述节点的节点标识。
全文摘要
本发明实施例公开了一种实现字段解码的方法和装置。其中,预先建立与字段类型相对应的字段解码处理流程,所述方法包括获取对待解码数据包进行解码的解码字段的字段类型;调用与所述解码字段的字段类型相对应的字段解码处理流程,由所述字段解码处理流程对所述待解码数据包进行解码。根据本发明实施例,可以在减轻开发人员工作量的基础上实现对网络传输的数据包进行协议中全字段的字段解码。
文档编号H04L29/06GK101719915SQ20091023739
公开日2010年6月2日 申请日期2009年11月10日 优先权日2009年11月10日
发明者张长华, 朱明新, 李永利, 王宝财, 贾林, 辛翔 申请人:北京中创信测科技股份有限公司