ASN.1解码器设计与实现及其在3G中应用.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ASN.1解码器设计与实现及其在3G中应用

ASN.1解码器设计与实现及其在3G中应用   【摘要】文章首先解析了ASN.1协议的语法和特点,然后针对BER编解码进行了深入探讨,并提出了基于BER编码结构的解码器设计思路,最后给出了3G中ASN.1 BER编码方式话单解码器的应用示例。   【关键词】ASN.1 BER 编解码 3G话单      1 引言   在3G移动通信迅速发展的今天,信息的多样化、复杂化对网络信息传送提出了越来越高的要求,3G通信标准中大量运用了ASN.1(Abstract Syntax Notation One,抽象语法记法1)标准的数据流传递和记录规范,尤其是在话单生成、信令编码等领域。若要深入研究3G网络中的信息传送和处理,了解和掌握ASN.1标准是非常必要的。   ASN.1作为ISO/ITU-T标准,描述了对数据进行表示、编码、传输和解码的数据格式,完全独立于机器、语言和应用程序,任何以数字方式发送的信息(音频、视频、文本、数据等)都可以用ASN.1语法进行数据编解码,完成数据传送。ASN.1更适合现代移动通信中结构化的、复杂的、变化的及可扩展的数据结构。      2 ASN.1的语法结构   ASN.1用两部分描述信息:一部分描述信息内数据、数据类型及序列格式,称为“语法规则”;另一部分描述如何将各部分组成消息,即如何编码实际消息中的数据,称为“编码规则”。   ASN.1共有四种类型:   (1)简单类型,基本数据单元,没有下层组件;   (2)结构类型,具有组成部分;   (3)标签类型,由其它类型生成;   (4)其它类型,包括CHOICE和ANY类型。   可以使用ASN.1的分配符(::=)给类型和值指定名字,这些名字可以用于定义其它类型或值。ASN.1模块格式如图1所示:   3 BER基本编码规则   ASN.1的基本编码规则定义了一种或多种把任意ASN.1值表示成字节字符串的方法,按值的类型和长度是否已知,可分为三种编码方法:简单定长编码、结构化定长编码和结构化不定长编码。   每种BER编码方法都有三或四个部分:   Identifier octets:定义了ASN.1值的类和标签值,指明编码方法是简单的还是结构化的。   Length octets:对于定长编码方法,它指出了内容字节个数;对于结构化非定长编码方法,它指明长度是不确定的。   Contents octets:对于简单定长编码方法,它给出了值的具体表示;对于结构化的方法,它给出了值内容的BER编码的串联。   End-of-contents octets:对于结构化非定长的编码方法,它表示内容结束;对于其它方法,没有该部分。   下面进一步说明BER中Identifier octets、Length octets、Contents octets和End-of-contents octets的定义及结构。   (1)Identifier octets   该字段分为两种类型,较小的标签值(标签值=0~30)和较大的标签值(标签值≥31)。   较小的标签值由一个字节构成,如图3所示,bit8和bit7表示类;bit6表示是否为结构化,0表示编码方法是简单化的,1表示是结构化的;bit5~1给出了标签值。   较大的标签值由两个或多个字节组成,结构见图4。第一个字节形式如较小标签值字节结构,但是bit5~1均为1;第二个和以后的字节给出标签值,基于128,最高位在前,以便使用尽可能少的数字,除了最后一个字节以外,每个字节的bit8都置为1,最后一个字节的为0。   (2)Length octets   Length octets分为三种格式:短型(长度在0至127之间)、长型(长度在128至(21008-1)之间)和不定长型。   短型:由一个字节构成,bit8为0,bit7~1表示长度。   长型:由2~127个字节构成。第一个字节的bit8为1,bit7~1表示后面有多少个用于表示实际长度的字节。第二个和随后的字节给出实际长度,基于256,高位数字在先。   不定长型:由一个字节构成,值为0x80(十进制为128)。   三种类型的具体结构如图5所示。   (3)Contents octets   若为简单类型结构,该部分直接给出了值的具体表示;对于结构类型和在其基础上由隐式标签生成的类型,是值组件BER编码的串联(隐式标签的下层值);对于在任何类型基础上使用显式标签生成的类型,是下层值的BER编码。   (4)End-of-contents octets   对于结构化非定长的编码方法,它表示内容结束,用两个字节表示,取值为00 00;对于其它方法,没有该部分。   根据

文档评论(0)

189****7685 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档