ASN.1

✍ dations ◷ 2025-06-07 03:44:20 #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)。

相关

  • 2006年联合国秘书长选举科菲·安南潘基文2006年联合国秘书长选举旨在选出一名新任联合国秘书长,以接替任期将于2006年12月31日结束第二届任期的时任秘书长科菲·安南。此次选举共有七名候选人,来自韩
  • 形式逻辑逻辑(古希腊语:λογική;德语:Logik;法语:logique;英语:logic;意大利语、西班牙语、葡萄牙语: logica),又称理则、论理、推理、推论,是对有效推论的哲学研究。逻辑被使用在大部分的
  • 爱国日爱国日可以指:
  • 南桑威奇板块南桑威奇板块,或南桑威奇微板块(英语:South Sandwich Plate),是一个微板块,位于南大西洋和南冰洋的交界处。它呈弧形,弧顶指向东方,东界以消减带和南美洲板块相邻,南界亦以消减带和南
  • 尼古莱·蒂杜莱斯库尼古莱·蒂杜莱斯库(1882年-1941年),罗马尼亚外交家。1900年毕业于卡罗尔一世中学后到巴黎学习法律。1905年回罗马尼亚,任拉西大学法学教授。1912年成为国会议员,5年后成为财政部
  • DC国度DC国度(英语:DC Nation)为基于DC漫画的节目和短片,于卡通频道的周六早晨卡通(英语:Saturday-morning cartoon)播出。首映于2012年3月3日,由华纳兄弟动画制作,节目包含了绿光战警:动画
  • 捷德安东·伊戈列维奇·扎斯拉夫斯基(俄语:Антон Игоревич Заславский,德语:Anton Igorevich Zaslavski,1989年9月2日-),以艺名捷德(英语:Zedd)更为人知,是一名德籍俄裔DJ、唱片制作人及词曲作家。他最初制作电子浩室音乐,但后来转向其他风格,吸收了前卫浩室、Complextro、Dubstep和古典音乐的影响。捷德在德国凯撒斯劳滕长大并开启自己的音乐事业。其最著名的作品是与Foxes合作的《Clarity》,这支单曲在公告牌百强单曲榜上最高登上第8位,
  • 卡洛·加林贝蒂卡洛·加林贝蒂(意大利语:Carlo Galimberti,1894年8月2日-1939年8月10日),意大利男子举重运动员。他曾代表意大利参加1924年、1928年、1932年和1936年夏季奥林匹克运动会举重比赛,共获得一枚金牌和二枚银牌。
  • 神探《神探》(英语:)是杜琪峰与韦家辉共同导演的电影,剧本由韦家辉负责。本片入选第64届威尼斯影展竞赛片。两名警员到树林查案,结果一名警员王国柱(李国麟饰)连人带枪失踪,另一名警员高志伟(林家栋饰)平安而回,失枪却接连牵涉不同的抢劫谋杀案。重案组督察何家安(安志杰饰)受命调查此案多月毫无进展,决定找旧上司,已退职的陈桂彬(刘青云饰)请教。陈桂彬是破案天才,手上从没破不到的案,多年前因自切一只耳朵给退休的助理处长(高雄饰),被认定患上精神病而被退职。陈桂彬本已过着隐世生活,何家安出现让陈桂彬才能得以发挥,沉睡的
  • 立化中学杀人案立化中学杀人案发生于2021年7月19日,一名13岁的中一男学生在新加坡位于文礼的立化中学被斧头砍死。嫌犯是一名16岁的中四男学生,他在事件发生后不久被捕,据报道,这在新加坡历史上是前所未有的案件。袭击发生在当地时间上午11点16分到11点44分之间,发生在立化中学四楼的厕所。 一群学生目击嫌犯—一个十六岁的中四学生—在上午11:35厕所的外面持有斧头。当嫌犯要求他们报警时,学生们撤退到他们的教室并执行了行动限制。嫌犯随后前往在厕所旁的一间教室向第二组学生提出同样的要求,第二组学生也实施了封锁。两组学生们