ASN.1

✍ dations ◷ 2025-12-10 11:07:33 #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)。

相关

  • 前镇渔港前镇渔港位于台湾南部的高雄市前镇区,是高雄港港区内的多个渔港之一。该港属于远洋渔业基地,是台湾行政院农委会所归类的“第一类渔港”之一,作业范围包含太平洋、印度洋及大西
  • 数据中心数据中心,指用于安置计算机系统及相关部件的设施,例如电信和储存系统。一般它包含冗余和备用电源,冗余数据通信连接,环境控制(例如空调、灭火器)和各种安全设备。大型数据中心消耗
  • 大赦大赦是1954年《中华人民共和国宪法》中规定的对某一范围内的罪犯一律予以赦免的制度。自1975年宪法起,大赦制度被取消。1949年《中华人民共和国中央人民政府组织法》规定: .mw
  • 让·鲍德里亚Lucile Baudrillard 、让·鲍德里亚(法语:Jean Baudrillard,1929年7月29日-2007年3月6日),又译为让·博德里亚,生于法国兰斯,殁于巴黎,社会学家及哲学家。他被称为“知识的恐怖主义者
  • 陈策 (弘治癸丑进士)陈策(?-?),字嘉言,直隶常州府无锡县人,明朝政治人物。弘治癸丑进士,官至江西布政使。应天府乡试第三十九名举人。弘治六年(1493年)中式癸丑科二甲第五十八名进士。曾任礼部精膳司郎中。
  • 特斯科科特斯科科(纳瓦特尔语:Texcoco,IPA:.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","Code2000","Gentium"
  • 王良 (明朝)王良(14世纪-1402年),字天性,河南行省汴梁路祥符县(河南省开封市)人,明朝政治人物。洪武年间,其累任至佥都御史,后因连坐被贬刑部郎中。建文年间,升任刑部左侍郎。商议减燕府削藩事宜,因
  • 2011年澳门羽毛球格兰披治黄金大奖赛2011年澳门羽毛球格兰披治黄金大奖赛为第6届澳门羽毛球公开赛,是2011年世界羽联大奖赛的第十四站。本届赛事于2011年11月29日至12月4日在中国澳门金光综艺馆举行,并获薰风(KUMP
  • 吉妮西丝·卡尔莫娜吉妮西丝·卡尔莫娜(西班牙语:Génesis Carmona,1991年9月20日-2014年2月19日)是一名委内瑞拉卡拉沃沃州的模特。她最近代表卡拉沃沃州竞选委内瑞拉小
  • 双轮战车双轮战车是一种轻型,开放式乘处,双轮的马拉车辆,为古代常见的军事战斗车辆与运输工具。最早发源于欧亚大草原,后来向西亚、欧洲与东亚传播,成为一种古代世界普遍的军事单位与交通运输工具。许多国家,如古埃及、古希腊、波斯以及中国的商朝、周朝,都以战车兵为重要的军事兵种,驾车也成为一种贵族阶层的专门技艺。此外双轮战车也充作赛车与座车之用,成为常见的贵族运输工具。直到骑兵兴起后,双轮战车才逐渐被取代。马车大约于公元前3000年起源于美索不达米亚,对车辆用于战争的最早记载出现于大约公元前2500年苏美尔城邦乌尔的遗物上