ASN.1

✍ dations ◷ 2024-12-28 08:56:21 #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)。

相关

  • 软体动物见内文软体动物门(学名:Mollusca)属于无脊椎动物,就其物种多样性而言,是动物界的第二大门, 仅次于节肢动物门,其已确认的物种数量估计有十万多种。软体动物能适应许多不同环境,分布
  • 卢多尔夫人卢多尔夫人(学名:Homo rudolfensis),又名鲁道夫人,是人科下的化石物种,是于1972年在肯雅库比福勒发现的。其标本为一个头颅骨(编号KNM ER 1470),估计是属于190万年前的。卢多尔夫人化
  • 合弓纲合弓纲(Synapsida)意为“固定的颧弓”,也被称成兽形纲(Theropsida),是羊膜动物的一纲,包含羊膜动物中所有与哺乳类关系较近的物种。合弓纲是羊膜动物的两个主要演化支之一,另一个演
  • 摩洛摩洛,是一位上古近东神明的名号,其拉丁字母拼写形式有多种,包括Moloch、Molech、Molekh、Molek、或Moloc等。摩洛的古代希伯来文词根为מולך,拉丁字母形式为m-l-k(古希伯来文
  • 马悠马悠(德语:Josef Margraf,1953年4月3日-2010年1月26日),是一名德国生态学家,一生致力于保护东南亚和云南西双版纳的热带雨林。在云南的13年间,成立了西双版纳天籽生物多样性开发中心
  • 卡尔·奥尔夫卡尔·奥尔夫(德语:Carl Orff,1895年7月10日-1982年3月29日),又译卡尔·奥福或卡尔·奥夫,德国作曲家,音乐教育家,指挥家。奥尔夫一生与慕尼黑这座城市紧密相连,他生于慕尼黑,就学于慕
  • 国家粮国家粮(居民粮食国家供给制、居民粮食国家定量供应)是指中国大陆在计划经济时代(1950年代~1993年),针对城市居民的基本口粮由中央政府制定的定量供应制度。对应于地方的粮食统筹(地
  • 机器人9号《机器人9号》(英语:)是一部2009年上映的动画科幻片。监制为蒂姆·伯顿,由焦点电影公司(Focus Features)出品,改编自导演的同名短篇电影。电影讲述的是一群小机器人在人类毁灭后的
  • 韦斯特沃德霍!坐标:51°02′20″N 4°14′46″W / 51.039°N 4.246°W / 51.039; -4.246韦斯特沃德霍!(英语:Westward Ho!)是一个位于英国英格兰德文郡比迪福德的海滨小镇,为不列颠群岛里唯一一
  • 韩熙顺韩熙顺(韩语:한희순,1889年-1972年)是朝鲜王朝最后一批尚宫之一。电视剧大长今里长今的师父设定为韩尚宫就是为了纪念她。韩熙顺于高宗三十九年(13岁)进宫,当德寿宫的内人,负责高宗和