<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=ASN.1</id>
	<title>ASN.1 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=ASN.1"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=ASN.1&amp;action=history"/>
	<updated>2026-07-12T15:26:54Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=ASN.1&amp;diff=76131&amp;oldid=prev</id>
		<title>140.82.205.243 来自 2023年6月6日 (二) 06:35</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=ASN.1&amp;diff=76131&amp;oldid=prev"/>
		<updated>2023-06-06T06:35:08Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox technology standard&lt;br /&gt;
| title = ASN.1&lt;br /&gt;
| long_name = 抽象句法符号一&lt;br /&gt;
| image = &lt;br /&gt;
| caption =&lt;br /&gt;
| status = 已生效&lt;br /&gt;
| year_started = 1984&lt;br /&gt;
| version = (02/21)&lt;br /&gt;
| version_date = February 2021&lt;br /&gt;
| preview =&lt;br /&gt;
| preview_date =&lt;br /&gt;
| organization = [[ITU-T]]&lt;br /&gt;
| committee =&lt;br /&gt;
| base_standards =&lt;br /&gt;
| related_standards = [[X.690]]&lt;br /&gt;
| abbreviation =&lt;br /&gt;
| domain =&lt;br /&gt;
| license =&lt;br /&gt;
| website = https://www.itu.int/rec/T-REC-X.680/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
在[[电信]]和[[计算机网络]]领域，&amp;#039;&amp;#039;&amp;#039;ASN.1&amp;#039;&amp;#039;&amp;#039;（&amp;#039;&amp;#039;&amp;#039;Abstract Syntax Notation One&amp;#039;&amp;#039;&amp;#039;) 是一套[[标准]]，是描述[[数据]]的表示、编码、传输、解码的灵活的记法。它提供了一套正式、无歧义和精确的规则以描述独立于特定计算机硬件的对象结构。&amp;lt;ref&amp;gt;{{Cite web|title=X.680 : Information technology - Abstract Syntax Notation One (ASN.1): Specification of basic notation|url=https://www.itu.int/rec/T-REC-X.680/|accessdate=2021-04-29|work=www.itu.int|archive-date=2021-04-23|archive-url=https://web.archive.org/web/20210423082631/https://www.itu.int/rec/T-REC-X.680/}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 标准简介 ==&lt;br /&gt;
ASN.1是[[ISO]]和[[ITU-T]]的联合标准，最初是1984年的[[CCITT X.409:1984]]的一部分。由于其广泛应用，1988年ASN.1移到独立标准&amp;#039;&amp;#039;&amp;#039;X.208&amp;#039;&amp;#039;&amp;#039;，1995年进行全面修订后变成&amp;#039;&amp;#039;&amp;#039;X.680&amp;#039;&amp;#039;&amp;#039;系列标准。&lt;br /&gt;
&lt;br /&gt;
ASN.1本身只定义了表示信息的[[抽象句法]]，但是没有限定其编码的方法。各种ASN.1的&amp;#039;&amp;#039;&amp;#039;编码规则&amp;#039;&amp;#039;&amp;#039;提供了由ASN.1描述其抽象句法的数据的值的传送语法（具体表达）。标准的ASN.1编码规则有：&lt;br /&gt;
* [[BER|基本编码规则]]（BER，Basic Encoding Rules）&lt;br /&gt;
* [[CER|规范编码规则]]（CER，Canonical Encoding Rules）&lt;br /&gt;
* [[DER|唯一编码规则]]（DER，Distinguished Encoding Rules）&lt;br /&gt;
* [[PER|压缩编码规则]]（PER，Packed Encoding Rules）&lt;br /&gt;
* [[XER|XML编码规则]]（XER，[[XML]] Encoding Rules）&lt;br /&gt;
&lt;br /&gt;
为了使ASN.1能够描述一些原先没有使用ASN.1定义，因此不适用上述任一编码规则的数据传输和表示的应用和协议，另外制订了[[ECN]]来扩展ASN.1的编码形式。ECN可以提供非常灵活的表明方法，但还没有得到普遍应用。&lt;br /&gt;
&lt;br /&gt;
ASN.1与特定的ASN.1编码规则一起通过使用独立于计算机架构和编程语言的方法来描述数据结构，为结构化数据的交互提供了手段，特别是在网络环境的应用程序。&lt;br /&gt;
==应用==&lt;br /&gt;
[[应用层]]协议如[[X.400]]（[[email]]）、[[X.500]]和[[LDAP]]（[[目录服务]]）、[[H.323]]（[[VoIP]]）和[[SNMP]]使用 ASN.1 描述它们交互的[[PDU|协议数据单元]]。在[[UMTS]]的接入和非接入层也有广泛的应用。ASN.1的其他应用领域参见此处[https://web.archive.org/web/20051023024910/http://asn1.elibel.tm.fr/en/uses/index.htm]。&lt;br /&gt;
&lt;br /&gt;
==工具==&lt;br /&gt;
这里[https://web.archive.org/web/20051023025313/http://asn1.elibel.tm.fr/links/#tools]列举了很多ASN.1的自由或者商业的工具。&lt;br /&gt;
&lt;br /&gt;
给定了协议内容并选定了编码规则，很多工具可以生成读（解码）写（编码）PTU的C/C++、Java、C#、Python等源代码。&lt;br /&gt;
&lt;br /&gt;
ASN.1是一种和平台、语言无关的描述语言，可以使用很多ASN.1的翻译工具，将ASN.1翻译成为C, C++, Java等代码。用于跨平台编程的protocol buffers和Apache Thrift具有类似功用。&lt;br /&gt;
==範例==&lt;br /&gt;
[[Foo]]Protocol 結構的定義係使用 ASN.1 表示法:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;FooProtocol DEFINITIONS ::= BEGIN&lt;br /&gt;
&lt;br /&gt;
    FooQuestion ::= SEQUENCE {&lt;br /&gt;
        trackingNumber INTEGER,&lt;br /&gt;
        question       IA5String&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    FooAnswer ::= SEQUENCE {&lt;br /&gt;
        questionNumber INTEGER,&lt;br /&gt;
        answer         BOOLEAN&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
END&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ASN.1沒有定義的談話流動。 這是協議的文本描述。&lt;br /&gt;
&lt;br /&gt;
假設消息，符合與foo的協議將被發送到接收方。這種特定的消息（PDU）:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;myQuestion FooQuestion ::= {&lt;br /&gt;
    trackingNumber     5,&lt;br /&gt;
    question           &amp;quot;Anybody there?&amp;quot;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
要通過網絡發送上述消息，需要編碼成位元字串（string of bits）。ASN.1定義了不同的算法來完成這項任務，被稱為編碼規則。有很多，最簡單的一個是DER.&lt;br /&gt;
&lt;br /&gt;
Foo協議規範應明確名稱一套編碼規則的使用，Foo的協議，使用者 知道他們應該使用哪一個。&lt;br /&gt;
&lt;br /&gt;
===DER的編碼範例===&lt;br /&gt;
下面顯示DER編碼格式（皆16進位）的數據結構:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
30 -- 標籤說明 SEQUENCE&lt;br /&gt;
13 -- octets長度&lt;br /&gt;
&lt;br /&gt;
02 -- 標籤說明 INTEGER&lt;br /&gt;
01 -- octets長度&lt;br /&gt;
05 -- value&lt;br /&gt;
&lt;br /&gt;
16 -- 標籤說明 IA5String&lt;br /&gt;
0e -- octets長度&lt;br /&gt;
41 6e 79 62 6f 64 79 20 74 68 65 72 65 3f -- value &lt;br /&gt;
(&amp;quot;Anybody there?&amp;quot; in ASCII)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Note: DER uses a pattern of {{link-en|type-length-value|Type-length-value}} triplets)&lt;br /&gt;
&lt;br /&gt;
人們實際上得到的是21個octets:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;30 13 02 01 05 16 0e 41 6e 79 62 6f 64 79 20 74 68 65 72 65 3f&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ASN.1 的範圍與 DER 結束於此. It is possible to transmit the encoded message to the party by any means (utilizing [[Transmission Control Protocol|TCP]] or any other protocol). The party should be able to decode the octets back using DER.&lt;br /&gt;
&lt;br /&gt;
===XER編碼的範例===&lt;br /&gt;
另外，它是可能的編碼用XER (&amp;#039;&amp;#039;&amp;#039;ASN.1&amp;#039;&amp;#039;&amp;#039;) 來獲取更多人類可讀性 &amp;quot;over the wire&amp;quot;. 可以產生下列的 108 octets:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;FooQuestion&amp;gt;&lt;br /&gt;
    &amp;lt;trackingNumber&amp;gt;5&amp;lt;/trackingNumber&amp;gt;&lt;br /&gt;
    &amp;lt;question&amp;gt;Anybody there?&amp;lt;/question&amp;gt;&lt;br /&gt;
&amp;lt;/FooQuestion&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===PER 範例（未對齊）===&lt;br /&gt;
另外，採用壓縮編碼規則（Packed Encoding Rules）, 會產生下列 122 bits (小於16 octets):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;01 05 0e 83 bb ce 2d f9 3c a0 e9 a3 2f 2c af c0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 标准下载 ==&lt;br /&gt;
（[http://www.itu.int/ITU-T/studygroups/com17/languages/ 从ITU-T网站免费下载]{{Wayback|url=http://www.itu.int/ITU-T/studygroups/com17/languages/ |date=20051003203133 }}）&lt;br /&gt;
&lt;br /&gt;
描述ASN.1记法的标准：&lt;br /&gt;
* ITU-T Rec. X.680 | ISO/IEC 8824-1&lt;br /&gt;
* ITU-T Rec. X.681 | ISO/IEC 8824-2&lt;br /&gt;
* ITU-T Rec. X.682 | ISO/IEC 8824-3&lt;br /&gt;
* ITU-T Rec. X.683 | ISO/IEC 8824-4&lt;br /&gt;
&lt;br /&gt;
描述ASN.1编码规则的标准&lt;br /&gt;
* ITU-T Rec. X.690 | ISO/IEC 8825-1 (BER, CER and DER)&lt;br /&gt;
* ITU-T Rec. X.691 | ISO/IEC 8825-2 (PER)&lt;br /&gt;
* ITU-T Rec. X.692 | ISO/IEC 8825-3 (ECN)&lt;br /&gt;
* ITU-T Rec. X.693 | ISO/IEC 8825-4 (XER)&lt;br /&gt;
&lt;br /&gt;
[https://web.archive.org/web/20050930230347/http://asn1.elibel.tm.fr/standards/ ASN.1标准列表]&lt;br /&gt;
&lt;br /&gt;
== 参见 ==&lt;br /&gt;
*[[TTCN]]&lt;br /&gt;
*[[ECN]]&lt;br /&gt;
&lt;br /&gt;
*[[Federal Standard 1037C]]&lt;br /&gt;
*[[MIL-STD-188]]。&lt;br /&gt;
{{FOLDOC}}&lt;br /&gt;
&lt;br /&gt;
*[http://www.asn1.org/ The ASN.1 Consortium]{{Wayback|url=http://www.asn1.org/ |date=20050922175014 }}&lt;br /&gt;
*[http://www.marben-products.com/asn.1/overview.html ASN.1 C, C++, Java Tools]{{Wayback|url=http://www.marben-products.com/asn.1/overview.html |date=20010306051723 }}&lt;br /&gt;
* [https://web.archive.org/web/20130608074223/http://www.marben-products.com/asn.1/services/decoder-asn1.html {{lang|en|&amp;#039;&amp;#039;Online ASN.1 decoder&amp;#039;&amp;#039;}}] Free online tool.&lt;br /&gt;
*[http://www.asnlab.com/products.html ASN.1 IDE, Editor, Compilers]{{Wayback|url=http://www.asnlab.com/products.html |date=20100629225338 }}&lt;br /&gt;
*[https://web.archive.org/web/20051213194224/http://asn1.elibel.tm.fr/ ASN.1 相关站点]&lt;br /&gt;
*[https://web.archive.org/web/20051023030019/http://asn1.elibel.tm.fr/fr/biblio/index.htm 参考资料]&lt;br /&gt;
*[https://web.archive.org/web/20051023025313/http://asn1.elibel.tm.fr/links/ 其他]&lt;br /&gt;
*[https://web.archive.org/web/20051023025752/http://asn1.elibel.tm.fr/en/tools/tutorial/ ASN.1教程]&lt;br /&gt;
*[http://support.microsoft.com/?scid=kb%3Bzh-cn%3B252648&amp;amp;x=12&amp;amp;y=9 微軟知識庫 《XGEN: A 简短简介 BER 和 ASN 1》]{{Wayback|url=http://support.microsoft.com/?scid=kb%3Bzh-cn%3B252648&amp;amp;x=12&amp;amp;y=9 |date=20190919020019 }}&lt;br /&gt;
&lt;br /&gt;
== 参考 ==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
==外部链接==&lt;br /&gt;
*[https://www.oss.com/asn1/resources/asn1-made-simple/introduction.html   ASN.1 Made Simple] {{Wayback|url=https://www.oss.com/asn1/resources/asn1-made-simple/introduction.html |date=20230105050744 }}&lt;br /&gt;
*[https://obj-sys.com/asn1tutorial/asn1only.html  ASN.1] {{Wayback|url=https://obj-sys.com/asn1tutorial/asn1only.html |date=20230105050744 }}&lt;br /&gt;
*[http://luca.ntop.org/Teaching/Appunti/asn1.html  A Layman&amp;#039;s Guide to a Subset of ASN.1, BER, and DER] {{Wayback|url=http://luca.ntop.org/Teaching/Appunti/asn1.html |date=20081208034838 }}&lt;br /&gt;
&lt;br /&gt;
{{Data Exchange}}&lt;br /&gt;
&lt;br /&gt;
[[Category: ITU-T标准]]&lt;br /&gt;
&lt;br /&gt;
[[Category:ITU-T建议书]]&lt;br /&gt;
&lt;br /&gt;
[[Category:数据序列化格式]]&lt;/div&gt;</summary>
		<author><name>140.82.205.243</name></author>
	</entry>
</feed>