您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 通讯网络中进行ASN.1编解码(BER)的方法
通讯网络中进行Asn.1编解码(BER)的方法说明书摘要本发明公开了一种语法分析工具在Asn1编解码中的应用一种方法。其包含了:使用语法和词法分析工具,产生能够读取C语言语法和注释信息,并生成记录结构结构信息文件的工具。通过使用该方法,一次性的定义应用层使用的结构,通过该方法读取C头文件获取结构信息并记录到指定文件,以备编解码使用,本方法的使用能够大幅降低程序的开发及维护的工作量以及难度。权力要求书1.应用数据结构的生成。其特征在于:使用语法和词法分析工具分析标准的ASN1语法,生成用于给应用使用的结构。参数,参数类型,SETSEQUENCE类型定义为结构体,包含子参数是否填写的标志和子参数字符串(OCTETSTRING,BITSTRING等)类型定义为包含字符串长度的结构体。SETOF,SEQUENCEOF类型定义为结构体。包含数组使用个数和结构数数组。CHOICE类型定义为联合体,包含选择的参数标志和子参数。2.应用数据结构信息树的生成,其特征在于:使用语法和词法分析工具分析标准的ASN1语法,生成结构的详细信息,包括:a)变量类型,b)变量名称,c)变量的存储地址(偏移地址),d)变量占用字节数,e)变量数量,f)变量在ASN1中的标签g)变量在ASN1中的类型(0:universal1:Application2:Context3:Private)h)结构编码或元编码(0:PRIMITIVE1:权力要求书CONSTRUCTED)i)原标签j)可选或必选k)显式或隐式标签l)指向结构的指针m)赋值范围等。3.编解码的调度,其特征在于:通过遍历结构信息树获取权利要求1,权利要求2的描述的参数详细信息,根据信息进行相应的编解码调度,拼接编码的字节串及将解码的值填入结构相应地址。4.原编码数据类型的编解码,其特征在于:根据权利要求3的调度进行编解码。说明书通讯网络中进行ASN.1编解码(BER)的方法技术领域:本发明涉及移动网络通讯系统,特别是涉及一种移动网络通讯系统中实现信息传递的编解码的方法。背景技术:AbstractSyntaxNotationOne(ASN.1抽象语法标记)是一种独立于机器的描述语言,用于描述在网络上传递的消息,特别是的广泛应用于移动网络通讯系统中的各种协议的传输。例如RANAP,MAP,H.248等。ASN.1的编码方式比很多竞争者更先进,能够快速并可靠的传输可扩展信息--这是无线带宽的一个优势。由于从1982年以后ASN.1已经成为一个国际标准,所以它的编码规则是成熟的并且它有长期的可靠性和互用性的跟踪记录。然而,Asn1编解码是一个很费时费工的工作,使用不针对某一结构的统一的编解码方式,成为现今许多公司的趋势。发明内容:本发明的目的就是利用词法语法分析工具,提供一种不针对某一特定结构数据的统一的编解码的方法。适用于所有的Asn.1所描述的数据类型的编解码。据有简单,灵活,快捷,易读,扩展性好等特点。为了达到上述目的,本发明用于统一的编解码方式包括四部分:应用数据结构的生成,数据信息结构树的生成,编解码的调度,原编码数据类型的编解码说明书应用数据结构的生成:使用词法语法分析工具(例如:Lex&Yacc)产生的分析工具,分析标准Asn.1语法表述,分析出Asn.1语法表述中的消息,消息的操作码,消息中的参数,参数数据类型,参数的属性信息等。生成可以让应用层使用的结构。编码时由应用层填写相应的数据参数的值,经过编解码模块的编码生成标准Asn.1的码流,用于传输。而解码时,根据获得的标准Asn.1的码流,经过编解码模块的解码,将值信息填入结构中,以备应用层使用。数据信息结构树的生成:使用词法语法分析工具(例如:Lex&Yacc))产生的分析工具,分析标准Asn.1语法表述,分析出Asn.1语法表述中的消息中每个参数的属性:可选/必选,显式/隐式,应用上下文,取值范围,数据类型,结构/原编码,存储地址(偏移地址),标签类型,子参数指针等。将这些信息写入编解码模块的全局的树形结构中。用于在编解码的过程中通过遍历树获取参数信息。编解码的调度:根据获得的参数的信息(是否填写,标签类型,结构,数据类型等)进行相应的编解码调度。原编码数据类型的编解码。根据调度模块的调用进行编解码。附图说明:图一.是词法语法分析工具的原理图图二.是Asn.1编解码的工作原理图图三.是Asn1数据类型定义示意图图四.是消息的结构信息存储方式示意图图五.是消息的结构信息存储内容的示意图说明书图六.是编码的流程图图七.是解码的流程图具体实施方式:图一展示了词法语法分析工具工作原理,将包含了正则表达式的词法规则作为其输入的程序,并且为每一个表达式被匹配是定义一种动作。用于通知词法规则。词法规则指定Asn.1格式的语法作为它的输入,并根据该语法规则的分析过程,记录Asn.1语法中的属性,并产生特定格式的输出文件,即(图三)格式的数据结构和(图四,图五)格式的结构信息数据。图二展示编解码的工作原理。词法语法分析工具分析Asn.1语法,产生相应数据结构和结构信息数据,应用向编解码模块传入编解码的数据,编解码的调度模块从结构信息数据中获得消息的详细信息。根据这些信息进行编解码。(编码产生的是Asn.1码流,解码产生的是结构化的消息数据)图三展示了对应于Asn.1数据类型的结构的格式:1.对于Sequence,Set,Choice类型定义为结构的格式,包括:a)用于表示可选子参数是否被选用的标志位,一个参数占一个Bitb)子参数。2.对于SequenceOf,SetOf类型定义为包含数组的结构,包括a)用于表示选用的数组个数的标志位,填写最大值要求小说明书于数组的最大维b)子参数的数组。3.OCTETSTRING,NUMBERSTRING,PRINTSTRING....等字符串类型定义为结构,包括:a)使用的字节数。b)字符串的值。4.BITSTRING字符串类型定义为结构,包括a)使用的字节数。b)未使用的比特数c)字符串的值5.其他的类型定义为编成语言的对应类型图四展示了结构信息存储的方式,以一种树形结构的方式存储结构信息,根节点作为消息的主结构。包含消息的所有参数,其参数可以为元编码类型,也可为结构编码类型。结构编码类型应指向它的子结构。图五展示了结构信息存储的内容,内容包括:变量类型,变量名称,变量的存储地址(偏移地址),变量占用字节数,变量数量,有标签值的标签,说明书标签类(0:universal1:Application2:Context3:Private),结构编码或元编码(0:PRIMITIVE1:CONSTRUCTED),标签,可选或必选,显式或隐式标签,指向结构的指针,赋值范围指向结构的指针(对于元编码类型指针为NULL)图六展示了编码的流程,应用对结构进行赋值,将结构的地址,操作码,传入编解码模块,编解码模块的调度模块根据操作码获取结构的信息,将结构信息指针m指向结构信息的第一个参数,结构指针p指向指针m指示的结构的第一个参数的存储地指,判断该参数是否赋值(使用标志位为0)若未赋值,则m指向结构信息的下一参数,指针p指向指针m指示的结构下一参数的存储地址,进行下一参数的编码。若赋值(使用标志位为1)则根据m的值判断参数的标签类型是元编码类型还是结构编码类型。若为结构编码,则指针m指向m子结构。递归调用编码函数,进行新的结构的编码。若为元编码则根据m的信息获取p地址的值,进行元编码。直至参数为结构中的最后一个参数。图七展示了解码的流程,应用层将Asn.1码流和操作码传入编解码模块,编解码模块的调度模块根据操作码获取结构的信息,结构信息指针m指向结构信息的第一个参数,结构指针p指向m指示的结构说明书的首地址,码流指针k指向码流的首地址,解出k的标签和长度,查找标签在结构中m指示的地址(解出的标签等于m结构信息的标签),结构指针p指向结构信息指针m指示的地址,判断m指示的编码类型是元编码还是结构编码,若结构编码,则获取结构的子码流(k地址到解出的长度之间的码流)。结构信息指针m指向m的子结构。递归调用解码程序进行解码。若为元编码,则解出码流的值,填入结构指针p的地址中,同时填写参数使用标记。码流指针k=k+解码的长度,判断k是否是码流的结尾,若不是则,结构信息指针m指向下一参数,重新进行解码操作,直至码流结束。说明书附图LEXYACC词法规则语法规则用户定义数据yy.lex.cyylex(){….}y.tab.cyyparse(){while(yylex()0){分析;}}编译器逻辑数据分析结果外部工具逻辑分析程序分析对象图一元编码码流传送结构数据(编码)标准的ASN1语法描述数据结构Asn.1分析工具产生应用层ASN1编解码调度模块元编码数据类型的编解码模块结构数据的信息元编码数据类型和值消息码流(编码)结构数据(解码)图二使用结构结构信息数据传送Asn.1码流(解码)说明书附图SEQUENCE参数选用标志参数列表....SEQUENCEOF参数使用个数参数数组SET参数选用标志参数列表....SETOF参数使用个数参数数组CHOICE参数选用标志参数列表....OCTETSTRING字符串使用字节数字符串数组BITSTRING字符串使用字节数未使用Bit数字符串数组图三其他类型编程语言中的对应数据类型其他类型字符串类型字符串使用字节数字符串数组说明书附图消息Head参数1参数2参数3参数4参数2.1参数2.2参数4.1参数4.2参数4.2.2参数5参数4.2.1参数2.2图四说明书附图消息参数1参数类型起始地址......NULL参数2参数类型起始地址......参数2的结构参数3参数类型起始地址......NULL参数4参数类型起始地址......参数4的结构参数5参数类型起始地址......NULL参数2参数2.1参数类型起始地址......NULL参数2.2参数类型起始地址......NULL参数2.3参数类型起始地址......NULL参数4参数4.1参数类型起始地址......NULL参数4.2参数类型起始地址......参数4.2的结构参数4.2参数4.2.1参数类型起始地址......NULL参数4.2.2参数类型起始地址......NULL图五说明书附图N元编码开始p指向消息的结构p指向m指示的地址获取消息的参数选用标志是否选用NY根据m的信息判断元编码或结构编码结构编码m指向参数的子结构根据m指示的参数的存储地获取参数p的值根据m的信息对p值进行编码递归方式是否是最后一个参数结束Y图六m指向下一个参数获取结构参数的信息m指向结构信息的第一个参数的m指向下一个参数说明书附图图七开始分析出码流的标签和长度根据m的值判断标签是元编码查找标签在结构中m指示的地址Y填写p参数的选用标记k是否到码流结尾k=k+长度Y结束N指针k指向码流的首地址获取结构编码k的子码流m指向参数的子结构N递归方式获取结构参数的信息p指向结构的首地址,m指向参数信息的第一个参数解码流的值向p的m指示的地址中写入值m指向下一参数
本文标题:通讯网络中进行ASN.1编解码(BER)的方法
链接地址:https://www.777doc.com/doc-2018079 .html