ASN.1

✍ dations ◷ 2025-11-10 11:52:19 #ASN.1

在电信和计算机网络领域,ASN.1(Abstract Syntax Notation One) 是一套标准,是描述数据的表示、编码、传输、解码的灵活的记法。它提供了一套正式、无歧义和精确的规则以描述独立于特定计算机硬件的对象结构。

ASN.1是ISO和ITU-T的联合标准,最初是1984年的CCITT X.409:1984的一部分。由于其广泛应用,1988年ASN.1移到独立标准X.208,1995年进行全面修订后变成X.680系列标准。

ASN.1本身只定义了表示信息的抽象句法,但是没有限定其编码的方法。各种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)。为了使ASN.1能够描述一些原先没有使用ASN.1定义,因此不适用上述任一编码规则的数据传输和表示的应用和协议,另外制订了ECN来扩展ASN.1的编码形式。ECN可以提供非常灵活的表明方法,但还没有得到普遍应用。

ASN.1与特定的ASN.1编码规则一起通过使用独立于计算机架构和编程语言的方法来描述数据结构,为结构化数据的交互提供了手段,特别是在网络环境的应用程序。

应用层协议如X.400(email)、X.500和LDAP(目录服务)、H.323(VoIP)和SNMP使用 ASN.1 描述它们交互的协议数据单元。在UMTS的接入和非接入层也有广泛的应用。ASN.1的其他应用领域参见此处。

这里列举了很多ASN.1的自由或者商业的工具。

FooProtocol 结构的定义系使用 ASN.1 表示法:

FooProtocol DEFINITIONS ::= BEGIN    FooQuestion ::= SEQUENCE {        trackingNumber INTEGER,        question       IA5String    }    FooAnswer ::= SEQUENCE {        questionNumber INTEGER,        answer         BOOLEAN    }END

ASN.1没有定义的谈话流动。 这是协议的文本描述。

假设消息,符合与foo的协议将被发送到接收方。这种特定的消息(PDU):

myQuestion FooQuestion ::= {    trackingNumber     5,    question           "Anybody there?"}

要通过网络发送上述消息,需要编码成位元字串(string of bits)。ASN.1定义了不同的算法来完成这项任务,被称为编码规则。有很多,最简单的一个是DER.

Foo协议规范应明确名称一套编码规则的使用,Foo的协议,使用者 知道他们应该使用哪一个。

下面显示DER编码格式(皆16进制)的数据结构:

30 -- 標籤說明 SEQUENCE13 -- octets長度02 -- 標籤說明 INTEGER01 -- octets長度05 -- value16 -- 標籤說明 IA5String0e -- octets長度41 6e 79 62 6f 64 79 20 74 68 65 72 65 3f -- value ("Anybody there?" in ASCII)

(Note: DER uses a pattern of type-length-value(英语:Type-length-value) triplets)

人们实际上得到的是21个octets:

30 13 02 01 05 16 0e 41 6e 79 62 6f 64 79 20 74 68 65 72 65 3f

ASN.1 的范围与 DER 结束于此. It is possible to transmit the encoded message to the party by any means (utilizing TCP or any other protocol). The party should be able to decode the octets back using DER.

另外,它是可能的编码用XER (ASN.1) 来获取更多人类可读性 "over the wire". 可以产生下列的 108 octets:

<FooQuestion>    <trackingNumber>5</trackingNumber>    <question>Anybody there?</question></FooQuestion>

PER 范例(未对齐)

另外,采用压缩编码规则(Packed Encoding Rules), 会产生下列 122 bits (小于16 octets):

01 05 0e 83 bb ce 2d f9 3c a0 e9 a3 2f 2c af c0

标准下载

(从ITU-T网站免费下载(页面存档备份,存于互联网档案馆))

描述ASN.1记法的标准:

描述ASN.1编码规则的标准

ASN.1标准列表

本条目部分或全部内容出自以GFDL授权发布的《自由线上电脑词典》(FOLDOC)。

相关

  • 剪接体剪接体(英语:Spliceosome)是一种由RNA与蛋白质剪接体次单位所组成的超大型复合物,用来将mRNA序列中转录自DNA模板的内含子移除,并将剩余的外显子连接起来(此过程称为剪接)。剪接
  • 液化液化指物质由气态转变为液态的过程。气体液化后体积会变成原来的几千分之一,同时放出大量的热,不同的气体具有不同温度和压强的液化临界点,因此加压的同时必须冷却以吸收热。有
  • 篮球冠军联赛篮球冠军联赛(BCL)是一年一度属于职业篮球俱乐部的欧洲比赛,由FIBA举办。俱乐部根据其在国家联赛和杯赛中的表现获得比赛资格,但有些球队可以透过外卡获得资格。2001年,国际篮联
  • 周神助周神助(1941年7月20日-)牧师是拥有47年传道经验,退休前曾担任台北灵粮堂主任牧师34年。于2011年7月24日上午在台大体育场的联合感恩礼拜中,正式把主任牧师一职交棒给区永亮牧师。
  • 楔子 (文学)章回小说多有楔子,取意制作木器的楔子。楔子的意涵写在篇首,用来引领读者进入正文,是加强结构的补充说明。元杂剧中也有“楔子”的应用,推测原因是限于杂剧一本四折的格局,借此得
  • 金贝壳奖金贝壳奖是西班牙圣塞巴斯蒂安国际电影节颁发的最高荣誉,即最佳影片奖。至今共有5位导演获得过2次金贝壳奖,分别为美国导演弗朗西斯·科波拉 (1969 & 1984),西班牙导演Manuel G
  • 阿卜杜拉·亚明阿卜杜拉·亚明·阿卜杜勒·加尧姆(迪维希语:އަބްދުﷲ ޔާމީން އަބްދުލް ގައްޔޫމް;1959年5月21日-),马尔代夫政治家、经济学家,2013年起担任马尔代夫总统
  • 程文德永康《程氏宗谱》之程文德常服像《松溪集》、《程文恭遗稿》程文德(1497年-1559年),字舜敷,初号益斋、后号质庵、复号松溪,学称“松溪先生”,浙江承宣布政使司永康人,明朝政治人物、
  • 陶梁《清代学者象传》之陶梁像陶梁(1772年-1857年),字甯求、凫芗,号凫香,江苏长洲县(今苏州市)人,清朝政治人物,进士出身。官至礼部左侍郎。嘉庆十三年(1808年)登进士,改庶吉士。嘉庆十四年(18
  • 安妮·埃德森·泰勒安妮·埃德森·泰勒(英语:Annie Edson Taylor;1838年10月24日-1921年4月29日)是一位美国女教师。1901年10月24日,在她的63岁生日那天,她成为了第一位乘坐木桶穿越尼加拉大瀑布并得