首页> 中国专利> 一种使用XML描述协议的方法及其建立的协议解析系统

一种使用XML描述协议的方法及其建立的协议解析系统

摘要

本发明一种使用XML描述协议的方法及其建立的协议解析系统,它是由一种使用XML描述协议的方法和基于这种方法建立的用于工业以太网协议解析的系统两部分组成。一种使用XML描述协议的方法包括两个方面:第一是使用XML描述以太网协议格式的方法;第二是使用XML描述协议簇关系的方法。一种用于工业以太网协议解析的系统,它是由硬件系统和软件系统两部分组成。硬件系统包括:网络适配器和主机;软件系统包括五个单元,分别是协议加载单元、协议库单元、数据捕获单元、协议匹配单元、数据解析单元。本发明能够方便实现协议内容修改和扩展,并能实现多层协议的筛选、匹配和解析。它在工业以太网技术领域里具有广泛地实用价值和应用前景。

著录项

  • 公开/公告号CN101834848A

    专利类型发明专利

  • 公开/公告日2010-09-15

    原文格式PDF

  • 申请/专利权人 北京航空航天大学;

    申请/专利号CN201010137407.0

  • 发明设计人 刘艳强;刘喆;郇极;

    申请日2010-03-29

  • 分类号H04L29/06(20060101);H04L12/28(20060101);

  • 代理机构11232 北京慧泉知识产权代理有限公司;

  • 代理人王顺荣;唐爱华

  • 地址 100191 北京市海淀区学院路37号

  • 入库时间 2023-12-18 00:56:43

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-05-18

    未缴年费专利权终止 IPC(主分类):H04L29/06 授权公告日:20130424 终止日期:20150329 申请日:20100329

    专利权的终止

  • 2013-04-24

    授权

    授权

  • 2011-04-20

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20100329

    实质审查的生效

  • 2010-09-15

    公开

    公开

说明书

(一)技术领域:

本发明属于工业以太网技术领域,具体来说是涉及一种使用可扩展标记语言(eXtensible Markup Language,简称XML)描述协议的方法,并基于此方法建立的一种用于工业以太网协议解析的系统。

(二)技术背景

工业以太网技术是以太网发展的新产物,现在还没有针对性的专用协议解析系统,只能使用现有通用的以太网协议解析系统。这些解析系统实现的功能很丰富,但它们都是使用各自特定格式的程序代码描述协议格式和协议簇关系,这样的协议描述方法一般不是很开放,会造成解析系统支持的协议种类、个数相对固定。有些解析系统不允许用户修改已存在的协议结构或添加自定义新协议种类,其他的解析系统通过提供协议接口的方式允许用户修改或添加协议。这些协议接口文件必须严格按照该解析系统特定规则编写,特定规则包括文件类型、编程环境和语言、数据结构、函数接口等。用户如果想编写或修改这些接口,需要仔细阅读相应解析系统的开发文档,并熟练掌握指定的编程语言。

随着工业以太网技术的快速发展,各种新工业以太网协议不断被提出,旧版本的工业以太网协议不断升级,使用上述以太网协议解析系统分析、诊断工业以太网通讯就面临着协议扩展难度高,应用范围局限的不足,具体来讲包括:

1.部分协议解析系统不支持协议修改和拓展;

2.协议解析系统的协议描述方法复杂,协议接口开发难度大,对开发者的技术水平要求高,开发周期长;

3.协议解析系统的协议描述方法复杂,不能直观的判断协议接口程序是否正确,所以修改或添加的协议接口会使系统不可靠;

4.不同的协议解析系统之间协议描述方法差异很大,协议接口基本不可能实现通用。

(三)发明内容

1、目的

针对以上情况,本发明的目的是提供一种使用XML描述协议的方法,及基于此方法建立的用于工业以太网协议解析的系统,该系统能够方便实现协议内容修改和扩展,并能实现多层协议的筛选、匹配和解析。

2、技术方案:

为实现上述目的,需要提供两个技术方案:一是一种使用XML描述协议的方法;二是一种基于这种协议描述方法建立的用于工业以太网协议解析的系统。

(1)使用XML描述协议的方法有两个方面:第一是使用XML描述以太网协议格式的方法;第二是使用XML描述协议簇关系的方法。

第一、使用XML描述以太网协议格式的方法流程图如图1所示,其具体步骤如下:

步骤101、新建XML文档;

步骤102、建立XML根元素;根元素的名称为“root”,不对应协议中的任何字段;

步骤103、根据协议的性质添加XML根元素属性;添加的根元素属性包括“名称”属性和“类型”属性,它们表示对应协议的性质:“名称”属性表示对应协议的名称,“类型”属性表示以太网协议类型或上层协议的类型;

步骤104、根据协议中各字段的关系建立XML非根元素;建立的非根元素名称均为“node”,分别对应协议中一个字段。XML文档中各XML父元素与子元素的层次关系,与协议中字段的层次关系一一对应;

步骤105、根据协议中各字段的性质添加XML非根元素的属性;添加的非根元素的属性包括“名称”、“长度”、“显示方式”、“循环”四种属性,它们分别表示对应字段的性质:“名称”属性表示对应字段的名称;“长度”属性表示对应字段的长度,该属性的值可以是三种,①以字节(Byte)或位(Bit)为单位的确定的长度值;②某字段的数值指示;③本字段的所有子字段长度值的合;“显示方式”属性表示以什么样的格式显示对应字段的解析数据,后列表1为该属性为不同值表示的显示格式的例子,非叶元素没有“显示方式”属性;“循环”属性表示对应字段的循环的方式,只有循环字段对应的XML元素有“循环”属性,非循环的XML元素没有该属性;

步骤106、保存XML文档。

表1

  “显示方式”属性内容  举例或备注  地址形式  45:d8:9a:75:01:d2  十六进制  0xf5c  十进制  1028  Bool  True False  上层协议  使用上层协议进行解析

第二、使用XML描述协议簇关系的方法流程图如图2所示,其具体步骤如下:

步骤201、新建XML文档;

步骤202、建立XML根元素,其名称为“protocol”,对应协议簇中最下层的协议;

步骤203、根据协议簇的协议关系建立XML非根元素,其名称均为“protocol”,对应协议簇中一个协议,XML文档中各XML父元素与子元素的层次关系,与协议簇中各协议间的层次关系一一对应;

步骤204、根据每个协议的性质添加每个XML元素的属性,添加的属性包括“名称”属性和“条件”属性,“名称”属性表示对应协议的名称;“条件”属性表示对应协议的使用条件;

步骤205、保存XML文档。

以上所述的使用XML描述以太网协议格式的方法和使用XML描述协议簇关系的方法,作为使用XML描述协议的方法的两个方面手段,存在依赖关系:使用XML描述以太网协议格式的方法可以生成描述一个指定以太网协议的具体格式的文档;使用XML描述协议簇关系的方法不针对某个指定的以太网协议的具体格式,但可以生成描述协议簇中各个协议相互关系的文档。在分析多层协议数据时,先根据特殊字段的数值,通过描述协议簇的文档挑选出匹配的协议,再根据对应协议的描述的协议格式文档对数据进行具体的解析。因此上述两个方面的手段不是单独存在,是相互结合起来构成本发明提出的使用XML描述协议的方法。

(2)基于上述XML描述协议的方法,本发明提供一种用于工业以太网协议解析系统,它是由硬件系统和软件系统两部分组成。

所述硬件系统包括:网络适配器和主机。该网络适配器没有特殊的要求,一般使用主机主板上集成的网络适配器,也可以使用通过主机主板插槽拓展的独立网络适配器。该主机使用个人计算机或工控机。硬件系统要求能够进行工业以太网通讯,一般支持上网功能的个人计算机和支持工业以太网通讯的工控机均可满足要求。

所述软件系统包括五个单元,分别是协议加载单元、协议库单元、数据捕获单元、协议匹配单元、数据解析单元,系统组成架构图如图3所示。

该协议加载单元是自主开发的程序,工作流程图如图4所示。该协议加载单元找到XML文档后,分析XML文档的结构和XML各元素的名称、属性,判断是否符合本发明提出的使用XML描述协议的方法规则,如果符合方法规则,则将XML文档转化成程序代码存储到协议库单元中;如果不符合方法规则,则报警提示XML文档编写错误。该协议加载单元的功能是将描述协议格式和协议簇关系的XML文档转化成程序代码保存储到协议库单元中。

该协议库单元是软件系统分配的一块存储区域,其大小由加载的协议个数决定。该协议库单元的功能是以程序代码的形式存储各种协议格式和协议簇关系。协议加载单元会添加新的协议进入协议库单元,协议匹配单元会在协议库单元中查找匹配的协议。

该数据捕获单元是使用Winpcap4.1平台开发而成,Winpcap4.1是针对Win32平台上的抓包和网络分析的一个免费、开放、公用的架构,提供了丰富的网络数据包捕获库函数。本单元直接使用Winpcap4.1提供的库函数,主要包括:1.捕捉网络适配器上原始以太网数据报文的函数;2.打开已保存的以太网数据文件的函数。该数据捕获单元的功能分为两种:第一种是捕获在网络适配器上面传输的原始工业以太网数据包,第二种是打开已保存的工业以太网数据文件,将原始工业以太网数据提取出来。数据捕获单元将原始工业以太网数据传递给数据解析单元。

该协议匹配单元是自主开发的程序,工作流程图如图5所示。该协议匹配单元在解析数据前,读取原始以太网数据的“以太网类型”字段的数值,并根据该数值在协议库单元中查找匹配的协议,如果能够找到匹配的协议,则将匹配的协议格式和协议簇关系提交给数据解析单元;如果没有找到匹配的协议,则会报警提示没有匹配的以太网协议,解析系统无法解析该工业以太网数据包。该协议匹配单元的功能是在协议库挑选匹配的协议格式和协议簇关系提交给数据解析单元。

该数据解析单元是自主开发的程序,工作流程图如图6所示。该数据解析单元首先接收数据捕捉单元传递的原始工业以太网数据和协议匹配单元提交的匹配的协议格式和协议簇关系;接着按照最下层的协议格式解析原始工业以太网数据,根据各个字段的长度、显示方式、循环等性质将原始工业以太网数据转化成解析数据;然后判断是否有上层协议,如果没有上层协议则说明解析过程完毕,如果有上层协议则根据协议簇关系中各个上层协议的使用条件挑选出匹配的上层协议,按照匹配的协议格式对原始工业以太网数据进行解析,然后再判断是否有上层协议,循环此过程直到所有层的协议数据均解析完毕;最后将生成的解析数据在主机显示器上输出显示。该数据解析单元的功能是按照匹配的协议将原始以太网数据进行解析,生成解析数据后在主机显示器上输出显示。

在编写完成描述各种协议格式和协议簇关系的XML文档后,所述的工业以太网协议解析系统可以开始工作。首先,所述的协议加载单元加载描述各种协议格式和协议簇关系的XML文档,生成程序代码存储至所述的协议库单元中;其次,所述的数据捕获单元捕捉网络中的原始工业以太网数据包,或打开已保存的工业以太网数据包文件,获得原始以太网数据传递给所述的数据解析单元;再次,所述的协议匹配单元根据原始以太网数据中“以太网类型”字段的数据值,在协议库查找出匹配的协议格式和协议簇关系提交给所述的数据解析单元;然后,所述的数据解析单元根据匹配的协议将原始以太网数据按层逐次解析,获得每个字段的数据值,生成解析数据在主机显示器上输出显示。

3、优点及功效

本发明提出的一种使用XML描述协议的方法及其建立的协议解析系统,与现有技术相比,最重要的改进在于采用了XML这种通用简易的语言标准来描述协议,使用XML文档作为协议解析系统的协议接口。这使得本发明提出的系统针对了工业以太网的发展特点,能够有效的支持工业以太网中新协议的扩展和重构,以及原有协议的修改和升级,能够实现多层协议的筛选、匹配、解析。更具体来讲,本发明具有以下优点:

1.解析系统支持任意层状的以太网协议格式,并且支持多层以太网协议,可以实现复杂的协议关系;

2.XML文档可读性高,协议解析系统的协议接口开发难度小、周期短;

3.XML文档结构固定,协议解析系统的协议接口的程序直观简单,方便不同开发者判断正误和修改,协议接口程序可靠性高;

4.XML文档结构完全开放,对于不同协议解析系统来说,只要采用相同的基于XML的协议描述方法,就可以实现协议接口的通用。

(四)附图说明

图1是使用XML描述以太网协议格式的方法流程图;

图2是使用XML描述以太网协议簇关系的方法流程图;

图3是本发明提出的一种使用XML描述协议的用于工业以太网协议解析的系统组成架构图;

图4是本发明提出的一种使用XML描述协议的用于工业以太网协议解析的系统的软件系统中协议加载单元的工作流程图;

图5是本发明提出的一种使用XML描述协议的用于工业以太网协议解析的系统的软件系统中协议匹配单元的工作流程图;

图6是本发明提出的一种使用XML描述协议的用于工业以太网协议解析的系统的软件系统中数据解析单元的工作流程图;

图7是工业以太网协议实例中SampleEther协议的结构框图;

图8是工业以太网协议实例中“指令协议”的结构框图;

图9是工业以太网协议实例中“状态协议”的结构框图;

图10是工业以太网协议实例中描述SampleEther协议格式的XML文档结构示意图;

图11是工业以太网协议实例中描述“指令协议”协议格式的XML文档结构示意图;

图12是工业以太网协议实例中描述“状态协议”协议格式的XML文档结构示意图;

图13是工业以太网协议实例中描述协议簇关系的XML文档结构示意图。

(五)具体实施方式

见图1、图2、图3,图1是使用XML描述以太网协议格式的方法流程图;图2是使用XML描述以太网协议簇关系的方法流程图;图3是本发明提出的一种使用XML描述协议的用于工业以太网协议解析的系统组成架构图。

以下结合一个工业以太网的具体实例,详细说明本发明一种使用XML描述协议的方法及其建立的协议解析系统。

本实例中包含三个协议SampleEther协议、“指令协议”和“状态协议”。实例中最下层的工业以太网协议为SampleEther协议,以太网类型为0xFFFF。该工业以太网实例的协议结构框图如图7所示,本实例中SampleEther协议结构比较简单:以太网帧头部字段采取标准的以太网数据帧格式,“数据报”字段由多个“子报文”字段组成,“子报文”字段是循环字段。“指令协议”和“状态协议”是SampleEther协议的两个上层协议,其协议结构框图如图8、图9。当SampleEther协议的“类型”字段数值为0x01时,SampleEther协议的“子报文数据”字段遵循“指令协议”,字段内的数据为运动指令数据;当SampleEther协议的“类型”字段为0x02时,“子报文数据”字段遵循“状态协议”,字段内的数据为运动状态数据。

三种协议的主要字段的名称、长度和含义如表2所示:

表2

  字段名称  长度  意义  目的地址  6Byte  目的mac地址  源地址  6Byte  源mac地址  以太类型  2Byte  以太网类型

  字段名称  长度  意义  FCS  4Byte  帧校验序列  数据报长度  2Byte  “数据报”字段的长度  子报文长度  2Byte  “子报文数据”字段的长度  类型  7Bit  “子报文数据”字段使用的协议类型  后续  1Bit  是否有后续子报文,有则为1,否则为0  子报文数据  由“子报文长度”字段指示  字段数据为上层协议数据  运动指令  4Byte  控制运动的指令  参数长度  2Byte  “指令参数”或“状态参数”字段的长度  指令参数  由“参数长度”字段指示  和运动指令相关的参数  是否报警  1Byte  是否出错报警,是则为1,否则为0  状态类型  4Byte  运动状态的类型  状态参数  由“参数长度”字段指示  和状态类型相关的参数

首先利用本发明提出的使用XML描述协议的方法编写描述协议格式和协议簇关系的XML文档。具体过程分为两步:

第一步编写描述SampleEther协议、“指令协议”和“状态协议”三种协议的协议格式的XML文档,具体步骤为:步骤101、新建XML文档;步骤102、建立XML根元素;步骤103、根据协议的性质添加XML根元素属性;步骤104、根据协议中各字段的关系建立XML非根元素;步骤105、根据协议中各字段的性质添加XML非根元素的属性;步骤106、保存XML文档。

图10、图11、图12是描述SampleEther、“指令协议”和“状态协议”协议格式的XML文档结构示意图。结构示意图中方框表示一个XML元素,方框内的文字表示XML元素的名称,右边的文字表示XML元素的属性,连线表示层次关系。需要说明的是本实例中的XML文档结构示意图中的内容只体现编写XML文档的思想和方法,不能作为正式的代码,根据所示的XML文档结构示意图可以轻松的编写出符合协议描述方法要求的XML文档。

图10是描述SampleEther协议格式的XML文档结构示意图。在该XML文档中所述步骤102建立XML根元素名称为“root”,不对应SampleEther协议中的任何字段。所述步骤103中给XML根元素添加的“名称”属性值为SampleEther协议的名称“SampleEther”;“类型”属性值为SampleEther协议的以太网类型0xFFFF。所述步骤104中建立的所有XML非根元素名称均为“node”,分别对应协议中一个字段,而且XML父元素与子元素的层次关系与协议中字段的层次关系相同。所述步骤105中给XML非根元素添加的“名称”属性表示对应字段的名称;“长度”属性表示对应字段的长度,该属性的值有三种:①大部分是以字节(Byte)或位(Bit)为单位的确定的长度值,②“数据报”、“子报文数据”等字段对应的XML元素的“长度”属性的数值为“‘XXXX’字段指示”,表示该字段的长度等于“XXXX”字段的数值,③“子报文”字段对应的XML元素的“长度”属性的数值为“子字段长度合”,表示该字段的长度由所有的子字段长度总和决定;“显示方式”属性表示以什么样的格式显示对应字段的解析数据,表1为该属性为不同值表示的显示格式的例子,非叶元素没有“显示方式”属性;“循环”属性值表示对应字段的循环的方式,实例中只有“子报文数据”字段是循环字段,其对应的XML元素有“循环”属性,属性值为“‘后续’字段表示循环结束标志”,表示该字段以“后续”字段的数值作为循环结束标志,当数值不为0时,表示循环没有结束,否则循环结束。其他XML元素没有“循环”属性。

图11、图12是描述“指令协议”和“状态协议”协议格式的XML文档结构示意图,两个协议结构比较简单,编写XML文档的方法步骤和上面所述相同。

第二步编写描述该工业以太网实例协议簇关系的XML文档,具体步骤为:步骤101、新建XML文档;步骤202、建立XML根元素;步骤203、根据协议簇的协议关系建立XML非根元素;步骤204、根据每个协议的性质添加每个XML元素的属性;步骤205、保存XML文档。

图13是实例中描述协议簇关系的XML文档结构示意图。在该XML文档中,所述步骤202中建立的XML根元素名称为“protocol”,对应协议簇中最下层的协议SampleEther协议;所述步骤203中建立的两个XML元素名称均为“protocol”,分别对应“指令协议”和“状态协议”,两个XML元素是XML根元素的子元素表示“指令协议”和“状态协议”是SampleEther协议的两个上层协议;所述步骤204中给XML元素添加的“名称”属性的值表示对应协议的名称,“条件”属性的值表示对应协议的使用条件:SampleEther协议的使用条件是以太网类型为0xFFFF,“指令协议”的使用条件是SampleEther协议的“类型”字段的值为0x01,“状态协议”使用条件是SampleEther协议的“类型”字段的值为0x02。

编写完描述协议格式和协议簇关系的XML文档后,利用本发明提供的一种使用XML描述协议的用于工业以太网协议解析的系统对工业以太网进行解析。

本实例中协议解析系统的使用环境为:主机和其他通讯站点利用工业以太网实现工业控制通讯,协议解析系统在通讯的过程中捕捉到网络适配器上的传输的一个工业以太网数据包,经分析该工业以太网数据包遵循SampleEther协议,并有两种上层协议分别为“指令协议”和“状态协议”。协议解析系统按照由XML描述的协议内容,将数据包解析、显示。

本实例中协议解析系统硬件系统为:网络适配器是主机主板集成的网卡,网络芯片型号为Realtek8201BL。主机是普通的个人计算机,主要配置为:CPU型号为AMD“速龙”4200+,内存大小1G,硬盘大小250G,显卡型号为NVDIA GeForce 6150SE nForce 430。

本实例中协议解析系统软件系统包括有五个单元,分别是:

1.协议加载单元是自主开发的程序,工作流程图如图4所示。该协议加载单元找到XML文档后,分析XML文档的结构和XML各元素的名称、属性,判断是否符合本发明提出的使用XML描述协议的方法规则,如果符合方法规则,则将XML文档转化成程序代码存储到协议库单元中;如果不符合方法规则,则会报警提示XML文档编写错误。该协议加载单元的功能是将描述协议格式和协议簇关系的XML文档转化成程序代码保存储到协议库单元中。

2.协议库单元是一块存储区域,其大小由加载的协议个数决定。该协议库单元的功能是以程序代码的形式存储各种协议格式和协议簇关系。协议加载单元会添加新的协议进入协议库单元,协议匹配单元会在协议库单元中查找匹配的协议。

3.数据捕获单元是使用Winpcap4.1平台开发而成,Winpcap4.1是针对Win32平台上的抓包和网络分析的一个免费、开放、公用的架构,它提供了丰富的网络数据包捕获库函数。本单元直接使用Winpcap4.1提供的库函数,主要包括:1.捕捉网络适配器上原始以太网数据报文的函数;2.打开已保存的以太网数据文件的函数。该数据捕获单元的功能分为两种:第一种是捕获在网络适配器上面传输的原始工业以太网数据包,第二种是打开已保存的工业以太网数据文件,将原始工业以太网数据提取出来。数据捕获单元将原始工业以太网数据传递给数据解析单元。

4.协议匹配单元是自主开发的程序,工作流程图如图5所示。该协议匹配单元在解析数据前,读取原始以太网数据的“以太网类型”字段的数值,并根据该数值在协议库单元中查找匹配的协议,如果能够找到匹配的协议,则将匹配的协议格式和协议簇关系提交给数据解析单元;如果没有找到匹配的协议,则会报警提示没有匹配的以太网协议,解析系统无法解析该工业以太网数据包。该协议匹配单元的功能是在协议库挑选匹配的协议格式和协议簇关系提交给数据解析单元。

5.数据解析单元是自主开发的程序,工作流程图如图6所示。该数据解析单元首先接收数据捕捉单元传递的原始工业以太网数据和协议匹配单元提交的匹配的协议格式和协议簇关系;接着按照最下层的协议格式解析原始工业以太网数据,根据各个字段的长度、显示方式、循环等性质将原始工业以太网数据转化成解析数据;然后判断是否有上层协议,如果没有上层协议则说明解析过程完毕,如果有上层协议则根据协议簇关系中各个上层协议的使用条件挑选出匹配的上层协议,按照匹配的协议格式对原始工业以太网数据进行解析,然后再判断是否有上层协议,循环此过程直到所有层的协议数据均解析完毕;最后将生成的解析数据在主机显示器上输出显示。该数据解析单元的功能是按照匹配的协议将原始以太网数据进行解析,生成解析数据后在主机显示器上输出显示。

实例中,主机启动本发明提供的使用XML描述协议的用于工业以太网协议解析的系统后,所述的协议加载单元加载描述各种协议格式和协议簇关系的XML文档,包括与SampleEther协议相关的文档,生成程序代码存储至所述的协议库单元中。所述的数据捕获单元捕捉到一个网络中的原始以太网数据包,传递给所述的数据解析单元。所述的协议匹配单元解析出原始以太网数据的“以太网类型”字段的数据值为0xFFFF,在协议库查找出匹配的协议是SampleEther协议,将SampleEther协议和它的两个上层协议“指令协议”、“状态协议”以及协议簇关系提交给所述的数据解析单元。所述的数据解析单元按照SampleEther协议解析原始以太网数据,解析第一个“子报文”字段后得到“类型”字段数值为0x01,因此将“子报文数据”字段按照“指令协议”进行解析;“后续”字段为True(数值为1),因此“子报文”字段循环解析没有结束。继续解析第二个“子报文”字段后得到“类型”字段数值为0x02,因此将“子报文数据”字段按照“状态协议”进行解析;“后续”字段为False(数值为0),因此“子报文”字段循环解析结束。最后,所述的数据解析单元将解析数据在主机显示器上输出显示。表3为所述的数据解析单元解析原始以太网数据的说明。

表3

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号