asn.1和基本编码指导规则.doc
《asn.1和基本编码指导规则.doc》由会员分享,可在线阅读,更多相关《asn.1和基本编码指导规则.doc(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、ASN.1和基本编码规则作者:亢朝峰 业务四室摘 要:该文阐明了ASN.1和基本编码规则(BER)原理和应用。文中,一方面描述了 ASN.1,并给出了几种常用类型相应例子,来阐明ASN.1应用;接着对基本编码规则(BER), 通过对MAP中LocationRequest祈求操作消息参数进行编码详细实现,来阐明基本编码规则工作原理。总之,ASN.1和基本编码规则实际中有非常广泛应用。核心词:ASN.1 基本编码规则 MAP消息 LocationRequestASN.1作为一种数据表达原则产生于20世纪80年代初期开放系统互联Internet网络模型,但OSI模型并没有得到广泛应用,而ASN.1原
2、则继续使之发展,今天在实际中已有大量应用,这些应用涉及: 3G移动系统: 使用ASN.1原则 数据互换第三代移动通信网络。这一系统基于UMTS(通用移动通信系统)原则,其使用了ASN.1和分组编码原则(PER)。 IP语音: 在通信领域中另一种重要应用是通过包转换网络(如因特网)传递语音数据。多媒体数据信号编解码器(CODEC)原则(H.323等等)基于ASN.1并且使用于分组编码原则来获取抱负数据传播速率。 安全应用: 因特网安全授权同样也使用了ASN.1。高档编码原则在数据表达方面形成了 一种以便、平台无关原则,比加密要优越。PKIX、PKCS和X.509也是咱们所熟悉原则,它们也是基于A
3、SN.1。 老式通信网络: ASN.1和基本编码规则(BER)已经在重要通信领域流行了很长一段时间,所有ss7到ISDN一切都使用了ASN.1 BER信息在各种类型设备和计算机之间传递信号。 军事和空间应用: 美国国家宇航局(NASA)在其航空通信网规范中,也正在使用ASN.1和分组编码规则作为空对地或地对空合同。一、概述众所周知,抽象是解决软件开发问题有效手段。运用抽象,设计人员可以定义系统一种某些而不用关注这个部门事实上是如何实现或者表达。这一办法使得实现open,它简化了定义过程,使得在实现部件之前可以声明某些“公理”、并且在设计高层部件时假定下层部件是可以实现。抽象是当代多数软件规范特
4、点。作为当今最复杂系统之一,开放系统互联(OSI)是一种包括了大量抽象例子。OSI是一种国际通用原则体系,从物理层始终到顾客层,规划了计算机之间互联。高层次对象被抽象定义,并将由底层对象来实现。例如,某层一种服务也许需要在计算机之间传递某个抽象对象;某一底层则也许提供关于0、1字符串实现,运用某些编码规则把高层抽象对象转换成这些字符串。OSI阐明抽象对象办法叫做抽象语法标记(ASN.1,在X.208中定义),而用0、1字符来表达这样对象规则集合叫做基本编码规则(BER)。ASN.1是一种很灵活标记法,它容许定义众多数据类型从整数和位串等简朴类型到如集合、序列等构造,还可以是其他复杂定义类型。B
5、ER描述了如何将ASN.1类型表达和编码成八位字节串。普通不止一种编码给定数据办法,另一种叫做DER(Distinguished Encoding Rules)编码集合,它是BER子集,其特点是给每一种ASN.1值一种唯一编码。图1.1 阐明了抽象语法、编码规则之间关系。从图中可以看出,抽象语法运用某些正式规则来描述各种顾客数据;而编码规则采用恰当办法将用抽象语法描述顾客对象定义为适合物理传播信道传播格式。图1.1 抽象语法、编码规则之间关系二、抽象语法标记(ASN.1)ASN.1(Abstract Syntax Notation One)是一种用于描述构造化客体构造和内容语言。它定义在ISO
6、 8824或ITU-T X.208中。ASN.1类似于高档程序设计语言数据描述某些。它提供若干语言构件用以定义类型和值,类型相应构造,值相应内容。但和其她程序设计语言不同是,ASN.1类型不需要机器实现。一种ASN.1值可以用不同办法表达:打印值是用打印形式表达ASN.1值,对人而言,它是一种严格表达法,由于它不必依赖任何机器体系构造;本地值是由程序设计语言或系统用来表达ASN.1值;传送值表达传送中ASN.1值,它是ASN.1值比特流形式,是依照一组称之为传送文法(Transfer Syntax)规则而得到。ASN.1值表达法决定了它开发性和互操作性,并成为一种通用信息互换表达法。ASN.1
7、可以定义各种各样简朴类型数据,也可以定义十分复杂数据构造类型。21 ASN.1模块ASN.1基本单位是模块(module)。ASN.1模块事实上是由一组类型定义和值定义构成。类型定义就是阐明类型名称和类型格式,值定义则是规定将什么样详细值赋给某一类型变量。ASN.1模块普通格式如下:ModuleDefinition :=ModuleIdentifierDEFINITIONSTagDefault“:=”BEGINEXPORTS IMPORTSAssignmentListEND其中,ModuleIdentifier是模块标记符,也就是模块名称( 模块名第一种字母必要大写);IMPORTS构造规定了
8、模块中某些定义是从其她模块中移植过来;EXPORTS构造用于定义其她模块可以移植类型或值。类型定义和值定义是通过类型分派(type assignment)和值分派(value assignment)来完毕。类型分派和值分派包括于模块AssignmentList中。类型分派和值分派格式如下:类型定义语法: := type类型赋值: := 22 简朴类型1INTEGER整数类型。与普通程序设计语言不同是,ASN.1中没有限制整型位数。也就是说,INTEGER可以是任意大小整数。定义一种整型类型CounterCouter := INTEGERIpAddress := Octetstring变量赋值:
9、例子:ipInReceives Counter := 24502BOOLEAN布尔型。取值为TURE或FALSE.3REAL实数类型。和整型同样,ASN.1中对实数精度没有限制。每个实数都可以表达为M*BE,即三元组M,B,E形式,其中M是尾数,B是级数,E是指数。4ENUMERATED枚举类型。枚举类型事实上是一组个数有限整型值。可一种每个整型值赋以不批准义。5BIT STRING位串类型,由零个或各种比特构成有序位串。位串值可以由相应二进制或者十六进制串表达。其中左边位由较高权重。6OCTET STRING八位位组串。由零个或各种八位位组构成有序串。八位位串可以用十进制、二进制或者十六进制
10、表达。7OBJECT IDENTIFIER对象标记符。从对象树派生出一系列点分数字串形式,用来标记对象。8NULL空值类型。这是最简朴一种类型,它仅包括一种值NULL。重要由于位置填充。如果某时刻无法得知数据精确值,那么最简朴办法就是将这一数据定义为NULL类型。9CHARACTER STRING字符串类型。ASN.1中定义了某些字符集不完全相似CHARACTER STRING类型。不同类型包括字符集不同。字符串由双引号扩起。字符串类型涉及: NumericString:包括数字0到9以及空格; PrintableSting:包括所有大小写字母、数字、标点和空格; IA5String:由取自I
11、A5(5号国际字符表)字符构成,它和ASCII码基本相似; VisibleString:由取自IA5图形字符构成; GeneralString:包括所有原则字符。22 构造类型1 SEQUENCE序列类型,是包括零个或者各种构成元素有序列表。列表不同元素可以属于不同数据类型。构造类型定义SequenceType :=SEQUENCEElementTypeList |SEQUENCE ElementTypeList :=ElementType |ElementTypeList,ElementTypeElementType :=NamedType |NamedType OPTIONAL |Name
12、dType DEFAULT Value |COMPONENTS OF Type有序列表每个元素是由元素名称和元素类型构成。元素类型可以是简朴类型,也可以是定义其她构造类型。元素类型标记符后可以跟OPTIONAL或DEFAULT核心字。OPTIONAL核心字表达在序列类型实例中该元素可以浮现,也可以不浮现。DEFAULT核心字表达序列类型实例中该元素具备事先指定缺省值。COMPONENTS OF 核心字表达它包括了给定序列中所有构成元素。例子:UserAccount := SEQUENCE username VisibleString,password VisibleString,account
13、Nr INTEGER构造赋值:SequenceValue :=ElementValueList | ElementValueList :=NamedValue |ElementValueList,NamedValue例子:myAccount UserAccount := username steffen,password jane51,accountNr 47112 SEQUENCE OF单纯序列(数组)类型。即序列中各项属于同一类型ASN.1类型。SequenceOfType :=SEQUENCE OF Type |SEQUENCE例子:MemberCountries := SEQUENCE
14、 OF VisibleString赋值:SequenceOfValue := ValueList | ValueList :=Value |ValueList,ValueeuMembers MemberCountries := Austria,Belgium,Denmark,Finland,France,Germany,Greece,Ireland,Italy,Luxembourg,The Netherlands,Portugal,Spain,Sweden,United Kingdom3 SET集合类型,是包括零个或者各种构成元素无序集合。这些元素顺序无任何意义,但是她们之间必要是不相似,构成
15、元素类型可觉得不同ASN.1类型。SetType :=SETElementTypeList |SET 例子:UserAccount := SET username VisibleString,password VisibleString,accountNr INTEGER赋值:SetValue := ElementValueList | 例子:myAccount UserAccount := username steffen,password jane51,accountNr 47114 SET OF单纯集合类型,是包括零个或者各种构成元素无序集合。这些构成元素必要为相似ASN.1类型。Set
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- asn 基本 编码 指导 规则
限制150内