第二章 抽象语法表示ASN.1
第2章抽象语法表示ASN.1
第2章 抽象语法表示ASN.1 1. 简单类型 表2.1中除了UNIVERSAL 16和UNIVERSAL 17之外都是简 单类型。 这些类型的共同特点是可以直接定义它们的值的集合, 可以把这些类型作为原子类型构造新的数据类型。简单类型还 可以分为4组。第一组包括BOOLEAN、INTEGER、BIT STRING、OCTET STRING、REAL和ENUMERATED等。这一 组可以叫做基本类型,它们的值已经在表2.1中列出了。需要说 明的是,实数可以表示为科学计数法:
第2章 抽象语法表示ASN.1
(3) 标识符以小写字母开头; (4) 类型指针和模块名以大写字母开头; (5) ASN.1定义的内部类型全部用大写字母表示; (6) 关键字全部用大写字母表示; (7) 注释以一对短线(- -)开始,以一对短线或行尾结束。
第2章 抽象语法表示ASN.1 2.2.1 抽象数据类型
第2章 抽象语法表示ASN.1
SequenceType::=SEQUENCE{ElementTypeList}| SEQUENCE {} ElementTypeList::= ElementType | ElementTypeList, ElementType ElementType::= NamedType NamedType OPTIONAL NamedType DEFAULT Value| COMPONENTS OF Type | |
第2章 抽象语法表示ASN.1 第四组包含4种类型。NULL是空类型,它没有值,只占用 结构中的一个位置,该位置可能出现或不出现数据。 EXTERNAL是外部类型,即标准之外的文档定义的类型。 UTCTime和GeneralizedTime是两种有关时间的类型,其区别是 表示时间的形式不同。前者(世界通用时)分别用两位数字表示年、 月和日(即YYMMDD),然后是时、分和秒(即hhmmss),最后可 以说明是否为本地时间;而后者用4位数字表示年,用两位数字 表示月和日,最后也可以说明是否为本地时间。例如 20000721182053.7是GeneralizedTime类型的一个值,表示2000年 7月21日,当地时间18点20分53.7秒。而值20000721182053.7Z表 示同样的时间,但是加了符号Z,则表示UTC时间。如果写为 20000721182053.7+0800则除了表示同样的当地时间外,还说明 了加8小时可以得到UTC时间。
ASN.1笔记——语法规则与类型概述
ASN.1笔记——语法规则与类型概述⼀.简介ASN.1(Abstract Syntax Notation dotone),抽象语法标记1。
是定义抽象数据类型形式的标准,是⽤于描述数据表⽰、表⽰、传输、编码的记法。
ASN.1只包含信息结构,不处理具体业务数据,它不是⼀个编程语⾔。
ASN.1没有限定编码⽅法,各种ASN.1编码规则提供了由ASN.1描述其抽象句法的数据的值的传送语法(具体表达),常见的编码规则有:基本编码规则(BER),规范编码规则(CER,CanonicalEncoding Rules)、唯⼀编码规则(DER,DistinguishedEncoding Rules)、压缩编码规则(PER,PackedEncoding Rules)和XML编码规则(XER,XMLEncoding Rules)。
这些编码规则描述了如何将定义在ASN.1中的值译成适合传输的电码。
ASN.1在OSI的ISO8824/ITU X.208(说明语法)和ISO8825/ITU X.209(说明基本编码规则)规范。
⼏个概念:(1)实际语法指诸如C、ObjectiveCaml等这样实际编程语⾔;(2)抽象语法(AbstractSyntax)指ASN.1,是协议采⽤ASN.1规范描述的描述⽂本。
描绘了与任何表⽰数据的编码技术⽆关的通⽤数据结构。
抽象语法使得⼈们能够定义数据类型,并指明这些类型的值。
抽象语法只描述数据的结构形式,与具体的编码格式⽆关,同时也不涉及这些数据结构在计算机内如何存放。
(3)传输语法(TransferSyntax)指表⽰层交换数据的表⽰⽅法,是实际通讯系统间的码流。
当数据在两个表⽰层实体之间传输时,这些数据的实际⽐特模式表⽰⽅法就是传送语法。
(4)编码指将抽象语⾔法转换成实际通讯系统间⽐特流;(5)编码规则将抽象语⾔法转换成实际通讯系统间⽐特流所遵循的语法规则;⼆.相关背景知识1.为了顺利完成应⽤⾳的通讯,需使⽤以下概念:(1)抽象语法:定义了数据的常⽤结构(包括不同的数据类型),并且建⽴了和应⽤层对话所⽤的构架。
B06、IEC62056技术文档--ASN.1语法(补充)
IEC62056 技术文档ASN.1语法(补充)深圳市航天泰瑞捷电子有限公司修订记录范围:本文就IEC62056系列标准中涉及的ASN.1语法进行补充说明,便于协助开发工程师阅读、理解DLMS/COSEM通信协议。
目录1 概述 (1)2 ASN.1 语法 (1)3 编码规则 (3)ASN.1语法补充1概述理解 DLMS/COSEM 应用层协议,需要首先了解:ASN.1、BER、A-XDR。
抽象语法记法ASN.1是用来描述应用层数据帧的。
DLMS 协议不同于其他一些简单通讯协议的地方就在于此。
他不是用一些表格,及一些固定的帧格式来描述的,而是用一种抽象语法语言来描述。
这样做的好处是,极大的提高了协议的抽象性和通用性,有利于程序移植。
编码规则BER 和A-XDR 是用来实现ASN.1 语法的。
2ASN.1 语法ASN.1 语法描述的数据帧:Name ::= [tag] IMPLICIT/EXPLICIT Data type{null-data [0] IMPLICIT NULL,item1 [1] IMPLICIT/EXPLICIT Data type A1 OPTIONALitem2 [2] IMPLICIT/EXPLICIT Data type A2 OPTIONALitem3 [3] Data type…}语法详细解释:1)Name 是这个数据帧的名字。
2)tag 包含类和一个数字。
类有四种:Universal(该数据帧在所有应用中的含义唯一)Application(该数据帧的含义与具体应用有关)Private(该数据帧属于某厂商的自定义范围)Context-specific(该数据帧与上下文有关,在不同上下文环境中可能有不同的含义)。
Tag 中的数字是这个数据帧的标号。
3)IMPLICIT/EXPLICIT 描述子数据帧与父数据帧的关系。
当前数据帧为子数据帧,可能派生于某一数据帧(父数据帧)。
ASN.1语法简介
ASN.1语法简介一、介绍Abst ractSynta x Not ation One(ASN.1)是一种独立于机器的描述语言,用于描述在网络上传递的消息标准包括: ISO8824-1 | I TU-TX.680: Spe cific ation of b asicnotat ion,ISO8824-2 | I TU-TX.681: Inf ormat ion o bject spec ifica tion,ISO 8824-3 |ITU-T X.682: Co nstra int s pecif icati on, ISO 8824-4 | IT U-T X.683: Para meter izati on of ASN.1ASN.1特别适合表示现代通信应用中那些复杂的、变化的及可扩展的数据结构A SN.1可分为两个部分语法规则:从数据类型、内容顺序或结构等方面来描述消息的内容编码规则:如何编码实际消息中的数据特点:表达简单和复杂类型的能力可对类型根据大小及(或)数值进行约束也可以施加更强的约束字段可标记为OPTIO NAL大写开头表示类型名,小写开头的表示变量名/字段名二、ASN.1术语1.抽象语法(Abs tract Synt ax)描述通用数据结构允许定义数据类型和值2.数据类型(Data Type)值的集合,可以是简单类型或结构类型可以对数据类型命名3.编码(Encod ing)用于表示数据值的字节序列4.编码规则(Encod ing R ules)给出从一种语法到另一种的映射方法5.传输语法(Trans fer S yntax)位模式(Bits patt ern)描述数据是在传输时是如何表示的三、A SN.1模块定义模块(mod ule):ASN.1规范中的基本构造块模块定义格式如下:<mod ulere feren ce> D EFINI TIONS ::=BEGINEXPO RTS IMPOR TSA ssign mentL istE ND其中:EXPO RTS 这个模块中的定义可能被其他模块引入IMP ORTS定义由其他模块引入Assig nment List这个模块中将定义类型分配、值分配及宏定义四、ASN.1简单类型1. 基本类型:BO OLEAN,INTE GER,E NUMER ATED,REAL,BIT S TRING,OCTE T STR ING2. 字符串类型(IS O10646-1的子集)Nu meric Strin g (0-9,<sp ace>)Prin table Strin g (0-9,A-Z,a-z,<spac e>,<s[ecia l>Vi sible Strin gGra phicS tringUTF8Strin gIA5Strin g (AS CII)3. 对象类型OB JECTIDENT IFIERObj ectDe scrip tor 对象标识符:一个任意长的非负整数序列,用于标记对象(如算法等)4. 其它类型N ULL 空值UTC Timeyymmd d hhm m[ss] <loc al of fsetfromUTC>Gener alize dTimeyyyy mmddhhmm[ss] <local offs et fr om UT C>强制从2050年开始五、ASN.1类型定义语法: <typ e nam e> ::= <ty pe>示例:Co unter ::=INTEG ERIp Addre ss ::= OCT ET ST RINGMonth s ::= ENUM ERATE D {j anuar y (1), feb ruary (2), marc h (3),apr il (4), ma y (5), jun e (6),jul y (7), aug ust (8), s eptem ber (9),o ctobe r (10), no vembe r (11), de cembe r(12)}六、ASN.1子类型定义语法:<subt ype n ame>::= <type> (<co nstra int>)示例:Count er ::= INT EGER(0..65536)IpAd dress ::=OCTET STRI NG (SIZE(4) )Sprin g ::= Mont hs (m arch| apr il |may)Summe r ::= Mont hs (j une | july | au gust)Sma llPri me ::= INT EGER( 2 | 3 |5 | 7 | 11 )Ex portK ey ::= BIT STRI NG (SIZE(40) )七、ASN.1赋值语法: <va lue n ame><type> ::= <val ue>示例:ip InRec eives Coun ter ::= 2450ip Route MaskIpAdd ress::= …FFFFF F00‟Hcurr entMo nth M onths ::=julycurre ntTim e UTC Time::= “030708094018+0800”n ame V isibl eStri ng ::= “Jo hn”m arrie d BOO LEAN::= T RUEf axMes sageBIT S TRING ::=…01100001101‟Binte rnetOBJEC T IDE NTIFI ER ::= { i so(1) org(3) do d(6)1 } p rivat e OBJ ECT I DENTI FIER::= { inte rnet4 }八、ASN.1结构类型SEQ UENCE对应于C语言中的s truct类型定义User Accou nt ::= SEQ UENCE {us ernam e Pri ntabl eStri ng,p asswo rd Pr intab leStr ing,accou ntNrINTEG ER}赋值my Accou nt Us erAcc ount::= {user name“tly”,pas sword “gue sswha t”,a ccoun tNr 2345}SEQU ENCEOF 对应于C语言中的数组类型定义M ember Count ries::= S EQUEN CE OF Prin table Strin gAcc ountR egist ry ::= SEQ UENCE OF U serAc count赋值e astAs ia Me mberC ountr ies ::= {“Chin a”, “Japan”, “K orean”, “D PR”}SET类似于SE QUENC E,但不考虑分量顺序类型定义User Accou nt ::= SET {us ernam e [0] Prin table Strin g,pa sswor d [1] Prin table Strin g,ac count Nr [2] INT EGER}赋值myAcc ountUserA ccoun t ::= {ac count Nr 2345,u serna me “t ly”,passw ord “guess what”}SE T OF集合类型,每一分量类型相同,不考虑顺序类型定义Keywo rds ::= SE T OFPrint ableS tring赋值s omeAS N1Key words Keyw ords::= {“INT EGER”, “BO OLEAN”, “R EAL”}。
ASN.1简介及OpenSSL中ASN.1接口使用举例
ASN.1简介及OpenSSL中ASN.1接⼝使⽤举例ASN.1(Abstract Syntax Notation One)是⼀套标准,是描述数据的表⽰、编码传输、解码的灵活的记法。
它提供了⼀套正式、⽆歧义和精确的规则以描述独⽴于特定计算机硬件的对象结构。
OpenSSL的编码⽅法就是基于该标准。
ASN.1是⼀种结构化的数字对象描述语⾔,它包括两部分:数据描述语⾔和数据编码规则。
ASN.1的数据描述语⾔允许⽤户⾃定义基本的数据类型,并可以通过简单的数据类型组成更复杂的数据类型。
ASN.1是ISO和ITU-T的联合标准,它本⾝只定义了表⽰信息的抽象句法,但是没有限定其编码的⽅法。
各种ASN.1编码规则提供了由ASN.1描述其抽象句法的数据的值的传送语法(具体表达)。
标准的ASN.1编码规则有基本编码规则(BER,Basic Encoding Rules)、规范编码规则(CER,Canonical Encoding Rules)、唯⼀编码规则(DER,Distinguished Encoding Rules)、压缩编码规则(PER,Packed Encoding Rules)和XML编码规则(XER,XML Encoding Rules)。
这些编码⽅法规定了将数字对象转换成应⽤程序能够处理、保存和⽹络传输的⼆进制编码形式的⼀组规则。
PEM编码全称是Privacy Enhanced Mail,是⼀种保密邮件的编码标准。
ASN.1与特定的ASN.1编码规则⼀起通过使⽤独⽴于计算机架构和编程语⾔的⽅法来描述数据结构,为结构化数据的交互提供了⼿段,特别是在⽹络环境的应⽤程序。
OpenSSL的PEM编码就是在DER编码基础上进⾏BASE64编码,然后添加⼀些头尾信息组成的,如在⽣成的rsa private.pem中头信息为-----BEGIN RSA PRIVATE KEY-----,尾信息为-----END RSA PRIVATE KEY-----,中间的数据部分即是对DER进⾏base64编码后的结果。
抽象语法表示ASN.1填空题
第二章抽象语法表示ASN.1[填空选择题]1:一种形式语言,提供统一的网络数据表示,通常用于定义应用数据的抽象语法和应用层协议数据单元的结构。
P232、表示层的功能:提供统一的网络数据表示。
P235、抽象语法用于定义应用数据,它类似程序设计语言定义的抽象数据类型。
P23二、ASN.1的基本概念P24-311、作为一种形式语言,ASN.1有严格的BNF定义。
P24P24●通用标签UNIVERSAL:由标准定义,适用于任何应用;●应用标签APPLICATION:是由某个具体应用定义的类型;●上下文专用标签CONTEXT SPECIFIC:这种标签在文本的一定范围(例如,一个结构struct)中适用;●私有标签PRIVATE:用户定义的标签。
4型。
这些数据类型的标签值均为通用标签Universal,有20多种。
P24●由单一成分构成的原子类型;ASN.1定义的数据类型中除了序列SEQUENCE和集合SET两种类型不属于简单类型外,其他10多种均属于简单类型。
P25●标签类型:由已知类型定义的新类型;包括CHOICE和ANY两种类型。
以下是ASN.1标签和类型关系图:6、枚举类型ENUMERATED:是一个整数的表,每一个整数有一个名字。
枚举类型与整数类型区别在于整数类型可以进行算术运算而枚举类型不能进行任何算术运算,也即枚举类型的值只是用证书表示的一个符号,而不具有整数的性质。
P267、对象类型OBJECT IDENTIFIER:泛指网络中传输的任何信息对象,其值是一个对象标识符,由一个整数序列组成,它惟一地标识一个对象。
P268、NULL类型:是空类型、没有值、只占用结构的一个位置。
P269、时间类型:有GeneralizedTime类型和UTC类型两种:P261)GeneralizedTime时间类型格式:如值20000721182053.7,表示2007年7月21日,当地时间18点20分53.7秒;2)UTC时间类型格式:如值20000721182053.7Z,表示同样的时间。
抽象语法表示asn.1填空题
[填空选择题]P231、(抽象语法表示):一种形式语言,提供统一的网络数据表示,通常用于定义应用数据的抽象语法和应用层协议数据单元的结构。
P232、表示层的功能:提供统一的网络数据表示。
P233、表示实体定义了应用数据的抽象语法。
4、传输语法:把抽象数据变换成比特串的编码规则。
P235、抽象语法用于定义应用数据,它类似程序设计语言定义的抽象数据类型。
P23二、的基本概念P24-311、作为一种形式语言,有严格的BNF定义。
P242、在中,每一个数据类型都有一个标签(tag),标签有类型和值。
P243、标签的类型分为4种,分别是:通用标签、应用标签、上下文专用标签和私有标签。
P24通用标签UNIVERSAL:由标准定义,适用于任何应用;应用标签APPLICATION:是由某个具体应用定义的类型;上下文专用标签CONTEXT SPECIFIC:这种标签在文本的一定范围(例如,一个结构struct)中适用;私有标签PRIVATE:用户定义的标签。
4、定义的数据类型可分为4类:分别为简单类型、构造类型、标签类型、其他类型。
这些数据类型的标签值均为通用标签Universal,有20多种。
P24●简单类型:由单一成分构成的原子类型;定义的数据类型中除了序列SEQUENCE和集合SET两种类型不属于简单类型外,其他10多种均属于简单类型。
P25●构造类型:由两种以上成分构成的构造类型,如序列SEQUENCE、集合SET类型。
●标签类型:由已知类型定义的新类型;●其他类型:包括CHOICE和ANY两种类型。
以下是标签和类型关系图:6、枚举类型ENUMERATED:是一个整数的表,每一个整数有一个名字。
枚举类型与整数类型区别在于整数类型可以进行算术运算而枚举类型不能进行任何算术运算,也即枚举类型的值只是用证书表示的一个符号,而不具有整数的性质。
P267、对象类型OBJECT IDENTIFIER:泛指网络中传输的任何信息对象,其值是一个对象标识符,由一个整数序列组成,它惟一地标识一个对象。
ASN.1学习笔记
contents:若数据是基本结构类型,如:BOOLEAN、INTERGER、REAL、BITSTRING等,即可直接进行编码;若数据是复合结构类型,如 SEQUENCE、SET、CHOICE、SEQUENCE OF 等,则属嵌套编码,此时contents中也包含有preamble、length、contents三个部分。2) 示例a. cug-Index INTEGER(1..256)的值为10时,PER编码为(pad)00001001b. error CHOICE{systemErr NULL,operationErr NULL,…} 若error值为systemErr,则PER编码为00。4. XER即XML Encoding Rules,主要应用于网站开发,本文不作介绍。结束语: 本文介绍了抽象语法符号1(ASN.1)的概念和数据表示方式,对BER编码过程给出了较详细的说明和示例,同时也简要地介绍了ASN.1的其它编码方法,如DER, PER, XER等。最近因学习3GPP之故,本人刚刚接触ASN.1,难免有疏漏和错误,还请各位给予指正,同时也欢迎大家互相交流学习。
1. BER1) 三种情况及其格式:a.简单类型(Primitive),定长;Identifier | Length | Contentb.构造类型(Constructed),定长;Identifier | Length | I | L | C | I | L | C | ...c.构造类型(Constructed),不定长;Identifier | Length | I | L | C | I | L | C | EOC|2) Identifier编码格式: 8 7 6 5 4 3 2 1 Class | P/C | Tag number分两种情况:a.Tag number < 31b.Tag number >= 313) Length及Content编码分三种情况:a.短形(L < 128),定长b.长形(L >= 128),定长c.不定长,仅用于构造类型4) 示例a.INTEGER 490000 0010 0000 0001 0011 erAccount ::= SEQUENCE { username IA5String, account INTEGER}myAccount UserAccount ::= { username “john”, account 129}0011 0000 0000 10100001 0110 0000 00110100 1010 0110 11110110 1000 0110 11100000 0010 0000 00100000 0000 1000 00012. DER为确保编码的唯一性,出现了CER和DER两种编码方案,它们均为BER子集。其中DER只使用定长编码,CER基于不定长编码。3. PER在PER中,tag从不传送,length和value如果双方都知道,也不需传送。因此,其编码更精简,效率更高。1) 格式preamble | length | contentspreamble:只出现在ENUMERATED、SEQUENCE、SET、CHOICE四种数据结构的编码中。用来记录结构中有无扩展项(extension)、选择项(optional)或缺省项(default);
ASN.1 语法简介
一、介绍
Abstract Syntax Notation One (ASN.1)是一种独立于机器的描述语言,用于描述在网络上传递的消息
标准包括: ISO 8824-1 | ITU-T X.680: Specification of basic notation,
ISO 8824-2 | ITU-T X.681: Information object specification,
示例:
ipInReceives Counter ::= 2450
ipRouteMask IpAddress ::= ‘FFFFFF00’H
currentMonth Months ::= july
currentTime UTCTime ::= “030708094018+0800”
name VisibleString ::= “John”
3. 对象类型
OBJECT IDENTIFIER
ObjectDescriptor 对象标识符:一个任意长的非负整数序列,用于标记对象(如算法等)
4. 其它类型
NULL 空值
UTCTime
yymmdd hhmm[ss] <local offset from UTC>
GeneralizedTime
username “tly”,
password “guesswhat”,
accountNr 2345
}
SEQUENCE OF 对应于C语言中的数组
类型定义
MemberCountries ::= SEQUENCE OF PrintableString
AccountRegistry ::= SEQUENCE OF UserAccount
抽象语法记法
抽象语法记法抽象语法记法(ASN.1)是一种ISO/ITU-T标准,描述了一种对数据进行表示、编码、传输和解码的数据格式。
它提供了一整套正规的格式用于描述对象的结构,而不管语言上如何执行及这些数据的具体指代,也不用去管到底是什么样的应用程序——不论是非常复杂的,还是非常简单的。
在任何需要以数字方式发送信息的地方,ASN.1都可以发送各种形式的信息(声频、视频、数据等等)。
ASN.1和特定的ASN.1编码规则推进了结构化数据的传输,尤其是网络中应用程序之间的结构化数据传输,它以一种独立于计算机架构和语言的方式来描述数据结构。
ISO协议栈中的应用层协议使用了ASN.1来描述它们所传输的PDU,这些协议包括:用于传输电子邮件的X.400、用于目录服务的X.500、用于VoIP的H.323和SNMP。
它的应用还可以扩展到通用移动通信系统(UMTS)中的接入和非接入层。
ASN.1取得成功的一个主要原因是它与几个标准化编码规则相关,如基本编码规则(BER)-X.209、规范编码规则(CER)、识别名编码规则(DER)、压缩编码规则(PER)和XER编码规则(XER)。
这些编码规则描述了如何对ASN.1中定义的数值进行编码,以便用于传输,而不管计算机、编程语言或它在应用程序中如何表示等因素。
ASN.1的编码方法比许多与之相竞争的标记系统更先进,它支持可扩展信息快速可靠的传输—在无线宽带中,这是一种优势。
1984年,ASN.1就已经成为了一种国际标准,它的编码规则已经成熟并在可靠性和兼容性方面拥有更丰富的历程。
简洁的二进制编码规则(BER、CER、DER、PER,但不包括XER)可当作更现代XML的替代。
然而,ASN.1支持对数据的语义进行描述,所以它是比XML更为高级的语言。
ASN.1的描述可以容易地映被射成C或C++或Java的数据结构,并可以被应用程序代码使用,并得到运行时程序库的支持,进而能够对编码和解码XML或TLV格式的,或一种非常紧凑的压缩编码格式的描述。
第二章 抽象语法表示ASN.1
<新类型的名字> ::= <类型描述>
◦ 其中: ◦ <新类型的名字>是一个以大写字母开头的标识符; ◦ <类型描述>是基于内建类型或在其它地方定义的类型。
如: Married ::= BOOLEAN Age ::= INTEGER Picture ::= BIT STRING 类型名 关键字
网络中不同类型的计算机交互通信时,采用的 ‚语法‛不同,这种差异决定了同一数据对象在不 同计算机中被表示为不同的比特序列。
test.x = 258; test.code=„a‟ test.code test.x a 00000001 00000011 test.code test.x a
00000011 00000001
ANSI.1定义的数据类型有20多种,标签类型都是 UNIVERSAL,如表2-3所示。 可分为4大类。
◦ 简单类型:由单一成分构成的原子类型,包括INTEGER ,BOOLEAN,... ◦ 构造类型:由两种以上成分构成的构造类型,包括 SEQUENCE,SEQUENCE OF,... ◦ 标签类型:由已知类型定义的新类型。 ◦ 其他类型:包括CHOICE和ANY两种类型。
◦ (7)OBJECT IDENTIFIER,对象标识符,从对象树派生 出的一系列点分数字串的形式,用来唯一标识对象。 在ASN.1中对象集合按照树形结构组织,树的每个分支被 赋予一个整数标识。 对象标识符是从根节点开始到对象节点路径上边标识的 顺序连接,它是对象的唯一标识。
例如: internet OBJECT INDETIFIER ::={iso(1)org(3)dod(6)1}
在ASN.1中,每一个数据类型都有一个标签(tag) 标签有类型和值,数据类型由标签的类型和值唯 一确定。
ASN.1基本语法和编码规则
ASN.1基本语法和编码规则1 ASN.1 简介ASN.1 (Abstract Syntax Notation One),抽象语法标记,是描述抽象类型和值的标记,缩写为ASN.1。
它用于对通过接口和通信媒体进行传输的信息的抽象描述,广泛应用于各种通信协议的说明中。
ASN.1是一个很灵活的标记法,它允许定义众多的数据类型——从整数和位串等简单类型到如集合、序列等的组合结构,还可以是其它复杂定义的类型。
一个ASN.1定义可以选用不同的编码规则,但解码器必须采用和编码器相同的编码规则。
目前标准化的编码规则有4个:BER、DER、CER、PER。
BER在19世纪80年代初形成,广泛应用于各种通信协议中,比如SNMP、MHS、TSAPI 等;DER是BER的一种特殊形式,用于对安全性敏感的应用,比如电子商务,要求对一条消息的编码和解码有且只有一条途径;CER是BER 的另一种特殊形式,类似于DER,但它适用于长消息,可以在知道整条消息之前就开始编码,实际中CER很少应用,这是因为工业界把DER作为安全编码的优先方法;PER在上述编码规则之后出现,因它的高效算法而闻名,它的编码速度和压缩程度比BER高,PER适用于带宽资源缺乏的应用,比如空中交通控制和音频—视频通信等。
2 BER的编码规则和传输语法2.1基本规则BER(Basic Encoding Rules)是ASN.1中最早定义的编码规则。
每种BER 编码方法都由三或四部分组成:(1)Tag octets:定义了ASN.1值的类和标签值,并指明编码方法是简单化的还是结构化的。
(2)Length octets:对于定长编码方法,它指出了内容octet的个数;对于结构化、非定长编码方法,它指明了长度是不确定的。
(3)V alue octets:对于简单的、定长编码方法,它给出了值的具体表示;对于结构化的方法,它给出了值的内容的BER编码的串联。
(4)End-of-values octets:对于结构化、非定长的编码方法,它表示内容结束;对于其它方法,没有该部分。
第2章抽象语法表示ASN.1
password “abcd123456”,
accountNr 67890 }
SEQUENCE OF 对应于C语言中的struct
类型定义
MemberCountries ::= SEQUENCE OF PrintableString 定义变量并赋值
eastAsia MemberCountries ::= {
Object Descriptor: 描述信息对象的语义
第四组包含4种类型 NULL:是空类型,它没有值,只占用结构中的一个位置, 该位置可能出现或不出现数据; EXTERNAL:是外部类型,即标准之外的文档定义的类型; UTCTime:时间类型;
GeneralizedTime:时间的类型。 注:两个时间类型的区别是表示时间的形式不同。
UNIVERSAL6 称为对象标识符 UNIVERSAL7 称为对象描述符
对象类型泛指网络中传输的任何信息对象,例如标准 文档、抽象语法和传输语法、数据结构和管理对象等都 可以看成信息对象。 OBJECT IDENTIFIER类型的值是一个对象标识符,由一 个整数序列组成,它惟一地标识一个对象。比如, internet OBJECT IDENTIFIER∷=1.3.6.1 或 {iso⑴ org⑶ dod⑹ 1}
表示层如同应用程序和网络之间的翻译官:主要解决用户
信息的语法表示问题,即提供统一的、格式化的表示和转 换数据服务。数据的压缩、解压、加密、解密都在该层完 成。
2.2
ASN.1的基本概念
ASN.1文本的书写规则(约定):
多个空格和空行等效于一个空格; 用于表示值和字段的标识符、类型指针(类型名)和模块 名由:⑴ 大小写字母;⑵ 数字;⑶ 短线组成; 标识符以小写字母开头; 类型指针和模块名以大写字母开头; ASN.1定义的内部类型全部用大写字母表示; 关键字(保留字)全部用大写字母表示; 注释以一对短线(- -)开始,以一对短线或行尾结束。
计算机网络管理技术课后习题答案
计算机网络管理课后习题答案第1章网络管理概论1-01网络管理对于网络的正常运行有什么意义?答:1、减少停机时间;2、改进响应时间;3、提高设备的利用率;4、减少运行费用;5、减少网络瓶颈;6、提高运行效率1-02局域网管理与本书所讲的网络管理有什么不同?结合你使用的局域网操作系统试举出几种管理功能。
答:局域网的管理相对简单,因为局域网运行统一的操作系统;对于异构型设备组成的网络,运行各种操作系统的互联网的管理就复杂的多了,就需要跨平台的网络管理技术1-03被管理的网络设备有哪些?答:主机,网桥,路由器,交换机,集线器等被管理网络资源:网络硬件(物理介质和连网设备、计算机设备)、网络软件(操作系统软件、通信软件、应用软件)1-04网络管理系统分为哪些层次?网络管理框架的主要内容是哪些?答:1、OSI/RM 2、管理站3、代理系统网络管理框架内容:各种网络管理应用工作的基础结构,1、管理功能分为管理站和代理;2、为存储管理信息提供数据库支持3、提供用户接口和用户视图功能;4、提供基本的管理操作1-05在管理站和代理中应配置哪些软件实体?答:管理站:1、OS ;2、通信;3、NME(网络管理实体);4、应用5、NMA(网络管理应用)代理:1、OS ;2、通信;3、NME(网络管理实体);4、应用1-06集中式网络管理和分布式网络管理有什么区别?各有什么优缺点?答:区别:集中式的网络中,至少有一个结点(主机或路由器)担当管理站角色,所有代理都在管理站监视和控制下协同工作,实现集成的网络管理。
而分布式的网络,是地理上分布的多台网络管理客户机与一网络管理服务器交互作用,共同完成网络管理功能。
集中式优点:管理人员可以有效的控制整个网络资源,根据需要平衡网络负载,优化网络性能。
缺点:网络通信消耗大,管理站失效,将导致网络管理中断;对于大型网络则力不从心。
分布式优点:灵活性和可伸缩性,善于控制大型网络。
缺点:不便于统一控制。
asn1结构 context类型
asn1结构 context类型ASN.1(抽象语法标记一)是一种用于描述数据结构的标准化的语法表示法。
在ASN.1中,context类型是一种用于标识和区分不同类型数据的一种方式。
它在通信协议和数据交换中起着重要的作用。
文章标题,ASN.1中的Context类型及其应用。
ASN.1中的context类型是一种非常重要的类型,它允许我们在数据结构中为不同的字段赋予不同的标识,从而使得数据在传输和解析过程中能够被正确地识别和处理。
在通信协议中,context 类型可以用来区分不同的消息类型,以及在数据编码和解码过程中进行正确的映射。
在ASN.1中,context类型的定义如下:asn1。
MyMessage ::= SEQUENCE {。
messageType INTEGER {。
request(0),。
response(1)。
} (0),。
messageData OCTET STRING (1)。
}。
在上面的例子中,我们定义了一个名为MyMessage的数据结构,其中包含了一个messageType字段和一个messageData字段。
在messageType字段中,我们使用了context类型来标识不同的消息类型,0代表请求消息,1代表响应消息。
这样一来,在数据传输和解析过程中,接收方就可以根据messageType字段的值来正确地识别消息类型,并进行相应的处理。
除了在通信协议中的应用之外,context类型还可以在数据编码和解码过程中起到重要作用。
通过使用context类型,我们可以在编码过程中为不同的字段赋予不同的标识,使得在解码过程中能够正确地将数据映射到相应的字段上,从而保证数据的完整性和正确性。
总之,ASN.1中的context类型在数据交换和通信协议中具有重要的作用,它能够帮助我们正确地识别和处理不同类型的数据,保证数据的完整性和正确性。
因此,在设计和实现通信协议和数据交换格式时,我们需要充分理解和正确应用context类型,以确保数据的可靠传输和解析。
信息技术 asn.1 编码规则 第2部分
信息技术 asn.1 编码规则第2部分《深入理解信息技术中的ASN.1编码规则》一、引言信息技术中的编码规则是保证数据在传输和存储过程中能够被准确解释和处理的重要环节。
其中,ASN.1编码规则作为一种通用的数据表示和交换标准,在各种领域都有着广泛的应用。
在上一篇文章中,我们已经对ASN.1编码规则的基本概念进行了介绍,本篇文章将继续深入探讨ASN.1编码规则的具体实现和应用。
二、ASN.1编码规则的基本原理在讨论ASN.1编码规则的具体实现之前,我们需要先了解ASN.1编码规则的基本原理。
ASN.1编码规则是一种将数据进行结构化表示和压缩传输的方法,它通过定义数据的类型、值域和编码规则,使得数据既能够被高效地传输和存储,又能够被准确解释和处理。
在ASN.1编码规则中,数据被表示为一系列的标签-长度-值(TLV)组成的结构,其中标签用于唯一标识数据的类型,长度用于表示数据的长度,值用于存储数据的实际数值。
三、ASN.1编码规则的具体实现1. BER编码规则在ASN.1编码规则中,最常用的编码规则之一就是基本编码规则(BER)。
BER编码规则是ASN.1编码规则的最基本形式,它通过将数据按照TLV结构进行编码,并使用可变长度的方式表示数据的标签和长度,从而实现了对各种数据类型的灵活处理。
在实际应用中,BER 编码规则通常被用于对数据进行压缩传输和网络通信,它具有较高的效率和灵活性,能够满足各种复杂数据结构的编码和解码需求。
2. DER编码规则除了基本编码规则(BER)之外,另一个常用的ASN.1编码规则是分布式编码规则(DER)。
与BER相比,DER编码规则在对数据进行编码时进行了严格的限制,包括禁止使用可变长度表示标签和长度、对数据进行唯一标识和排序等。
这些限制使得DER编码规则在对数据进行数字签名和加密等安全操作时具有更高的安全性和可靠性,因此在安全领域得到了广泛的应用。
3. CER编码规则还有一种基本编码规则(CER)也在一些特定领域得到了广泛的应用。
2(备用)抽象语法表示ASN
引入背景
在分布式/网络通信应用中,通信设备需要相互传输数据。但是设
备可能是由不同厂家生产的,其硬件体系结构、程序语言的语法定 义和程序功能实现一般是不相同的。例如,在一台设备中,整形数 据类型是16位表示,而在另一台则可能用32位表示。这些差异导 致了同一数据对象在不同的设备上被表示为不同的符号串。
位模式(Bits pattern) 描述数据是在传输时是如何表示的 用于数据在线路上的传输。
抽象语法
是协议设计者所使用的工具,用于将设计者的思想记录下来,
便于交流和讨论。 描述通用数据结构 允许定义数据类型和值
计算机通信的最终目的是传递数据的语义。因此一个 数据无论采用何种表示方式,其语义不应改变。
2019/2/10
11
GeneralizedTime
本地时间 “YYYYMMDDHHMMSS.fff”
格林威治标准时间 “YYMMDDHHMMSS.fffZ” 和标准时间的差值. “YYYYMMDDHHMMSS.fff+-
HHMM” 20001231235959.999 20001231205959.999Z 20001231235959.999+0300
2019/2/10
1
把这些对象转换成“0”和“1”的比特流的一套规则称
为BER(Basic Encoding Rules ,X.209),说明了如何 把每种ASN.1类型的值编码为8bit的octet流。
这样,经过ASN.1处理的消息独立于应用环境, 就不会因为系统终端的区别而产生歧义。 可以将通信编解码设计与开发工作转嫁给ASN.1 编译器完成。从而不必在手工编写编解码器。一 方面大量减少了缺陷引入,另一方面更是大大加 快了系统开发速度
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ANSI.1定义的数据类型有20多种,标签类型都是 UNIVERSAL,如表2-3所示。 可分为4大类。
◦ 简单类型:由单一成分构成的原子类型,包括INTEGER ,BOOLEAN,... ◦ 构造类型:由两种以上成分构成的构造类型,包括 SEQUENCE,SEQUENCE OF,... ◦ 标签类型:由已知类型定义的新类型。 ◦ 其他类型:包括CHOICE和ANY两种类型。
标识符 类型名 值
1.简单类型
◦ (1)INTERGER:ASN.1中没有限制整数的位数,即它 可以是任意大小的整数。 例子: ColorType ::=INTEGER colorA ColorType ::=1 这里说明了一个ColorType 类型的变量colorA ,并将 值赋为1。
1.简单类型
host 1 format
host 2 format
为了保证同一数据对象在不同计算机中语义的正确 性,实现在不同应用系统之间的信息交换。 对于网络中n个异体的节点能互通,我们需要为每 个节点编写(n-1)个编解码程序,即需要总数为 n*(n-1)个编解码程序。
ASN.1的作用是提供统一的网络数据表示 在互相通信的端系统中至少有一个应用实体(如 SNMP、TELNET、FTP等)和一个表示实体(即 ASN.1)。 表示实体定义了应用数据的抽象语法。 应用协议按照预先定义的抽象语法构造协议数据 单元,用于交换信息。 表示实体则对应用层数据进行编码,将其转换成 二进制的比特串进行传送。
◦ VisibleString:由取自IA5的图形字符组成,不含控制字符集。
◦ GeneralString:包含所有的标准字符。
例如:
NumString::=NumericString str1 NumString::=“1234567890” Surname ::=PrintableString personSurname1 Surname ::=“John”
<新的值的名字> <该值的类型> ::= <值描述>
◦ ◦ ◦ ◦ 其中: <新的值的名字>是以小写字母开头的标识符; <该值的类型>可以是一个类型的名字,也可以是类型描述; <值描述>是基于整数、字符串、标识符的组合。
如: Married ::= BOOLEAN Age ::= INTEGER Picture ::= BIT STRING married Married=FALSE age Age ::= 20 pitcure Picture ::=„01101‟B
1.简单类型
◦ (4) ENUMERATED,枚举类型,实际上是一组个数 有限的整数值。可以给每个整型值赋予不同的意义。
例2.3 Week ::=ENUMERATED { Monday (1), Tuesday (2), Wednesday (3), Thursday (4), Friday (5), Saturday (6), Sunday (7) } week Week : : =Monday
<新类型的名字> ::= <类型描述>
◦ 其中: ◦ <新类型的名字>是一个以大写字母开头的标识符; ◦ <类型描述>是基于内建类型或在其它地方定义的类型。
如: Married ::= BOOLEAN Age ::= INTEGER Picture ::= BIT STRING 类型名 关键字
(5)BIT STRING,位串类型,由0个或多个比特组成 的有序位串。位串的值可以由对应的二进制或十六进 制串表示。
单引号引用的二进制串后加大写字母B: ‘01101‟B 单引号引用的十六进制串后加大写字 H:‘0123456789ABCDEF‟H
例如: Occupation ::= BIT STRING jack Occupation::=‘0110’B
名字形式:.dod.1 数字形式:1.3.6.1
◦ (8)NULL,空值类型,它仅包含一个值—NULL,主 要用于位置的填充。如果某个时刻无法得知数据的准确 值,简单的方法就是将这一数据定义为NULL类型。还 可以用NULL表示序列中可能缺省的某个元素。
2.构造类型 构造类型有序列和集合两种:
SEQUENCE 序列 (元素有序)
类似:C语言中的结构体
SEQUENCE OF(元素类型必须相同)
类似:C语言中的数组
SET 集合 (元素无序) SET OF(元素类型必须相同)
2.构造类型
◦ (1)SEQUENCE,序列类型,是包含0个或多个组成元 素的有序列表。 每个元素由元素名和元素类型组成,元素类型可以是 简单类型,也可以是定义的其他构造类型。
序列类型
序列类型的一个值
2.构造类型
◦ (1)SEQUENCE,元素类型标识符后可以跟如下3
个关键字。
OPTIONAL:元素项可选。
DEFAULT:具有默认值。
COMPONENTS OF表示它包含了给定序列中的所有组 成元素。
例2.6 AirlineFlight ::=SEQUENCE { airline IA5STRING, flight IA5STRING, seats SEQUENCE { maximum INTEGER, occupied INTEGER, vacant INTEGER, }, airport SEQUENCE { origin IA5STRING, stop[0] IA5STRING OPTIONAL, stop[1] IA5STRING OPTIONAL, destination IA5STRING
◦ (7)OBJECT IDENTIFIER,对象标识符,从对象树派生 出的一系列点分数字串的形式,用来唯一标识对象。 在ASN.1中对象集合按照树形结构组织,树的每个分支被 赋予一个整数标识。 对象标识符是从根节点开始到对象节点路径上边标识的 顺序连接,它是对象的唯一标识。
例如: internet OBJECT INDETIFIER ::={iso(1)org(3)dod(6)1}
ASN.1是由原CCITT和ISO共同开发的标准语 ◦ 由ISO 8824/ITU-T X.208定义 ◦ 一种数据类型描述语言 ◦ 独立于计算机架构和语言 ◦ 可容易地映射成C或C++或Java的数据结构
◦ 与多个标准化编码规则相关
库
ASN.1数据类型定义
发 送 数 据 结 构
ASN.1数据结构 ASN.1数据标识
数据具有语法和语义两个方面
◦ 语法:指数据的表示形式,或者说构成数据的 规则。 ◦ 语义:指数据的内容及其含义。
同样的语义有不同的语法表示
确定要表示信息的数据类型。 对于不同类型的数据定义不同的操作。 任何类型的数据最终都将被表示成为比特序列。
比特序列不能说明它自身表示哪一种 类型的数据,它所代表的意义会因计 算机体系结构、程序设计语言等因素 的不同而不同。
抽象语法表示ASN.1
◦ Abstract Syntax Notation(ASN.1)是一种形式语言 ◦ 提供统一的网络数据表示,用于定义应用数据的抽象语 法和应用协议数据单元的结构。 ◦ OSI或SNMP管理信息库,都是用ASN.1定义的。
基本编码规则BER
◦ Basic Encoding Rule(BER)是一种编码规则 ◦ 用ASN.1定义的应用数据在传送过程中按照BER变换成 比特串。
图2-1 关于信息表示的通信系统模型
实际语法(Concrete Syntax ):
本地的,并且定义本地系统的数据表示方法。
抽象语法(Abstract Syntax ) :
定义了数据的常用结构(包括不同的数据类型),独立于任 何编码技术的,只与应用有关。
传输语法(Transfer Syntax):
◦ (2)BOOLEAN:布尔型,取值为TRUE或FALSE。所 有可归结为二值形式的问题回答都可以表示为布尔型。 例子:
1.简单类型
◦ (3)实数类型,对精度没有限制,可以表示为科学计 数法:M×BE,其中尾数M和指数E可以取任何正或负整 数值,基数B可以取2或10。
如:3.14*105 {M,B,E}{314,10,3} 例如:
提供从抽象语法表示的数据到比特序列,以及其相反操作的 方法。
编码规则(Encoding Rule):
提供了如何将抽象语法映射为传输语法。
抽象语法独立于任何编码技术,要满足应用的需要,能够 定义应用需要的数据类型和表示这些类型的值。 同等表示实体之间通信时对用户信息的描述和编码规则称 为传输语法。
在ASN.1中,每一个数据类型都有一个标签(tag) 标签有类型和值,数据类型由标签的类型和值唯 一确定。
标签(tag) 数据类型 值(tag) P23 表2-3
标签的类型分为以下4种:
◦ 通用标签:UNIVERSAL表示,由标准定义的。 ◦ 应用标签:APPLICATION表示,是由某个具体应用定 义的类型。 ◦ 上下文专用标签:Context-Specific表示,这种标签在 一定范围)中适用。 ◦ 私有标签:PRIVATE表示,用户定义的标签。
◦ 例2.4 对于SNMP的MIB中,在获取响应信息中的错误 状态如下所示。 ErrorStatus::= ENUMERATED { noError (0), tooBig (1), noSuchname (2), badValues (3), readOnly (4), genError (5) }