Abstract Syntax Notation One (ASN.1) について
ASN.1(Abstract Syntax Notation One)は、
電気通信や
コンピュータネットワークにおいて、
データ構造を記述するための標準的な記法です。この記法は、データの表現、エンコード(符号化)、転送、デコード(復号化)のプロセスを、機械の種類やOS、プログラミング言語に依存しない形で記述することを目的としています。
ASN.1 の歴史
ASN.1 は、
1984年にCCITT X.409の一部としてISOとITU-Tによって策定されました。その適用範囲の広さから、
1988年にX.208として独立し、
1995年にはX.680シリーズとして改訂版が発行されました。
ASN.1 の特徴
- - 抽象構文の定義: ASN.1は、データの構造を抽象的に定義するための記法であり、具体的なデータの符号化方法を限定しません。
- - 符号化規則: ASN.1で定義されたデータは、様々な符号化規則(例: BER, CER, DER, XER, PER, GSER)を用いて、実際のビット列に変換されます。これにより、異なるシステム間でのデータ交換が可能になります。
- - 多様な応用: ASN.1は、X.400電子メール、X.500/LDAPディレクトリサービス、H.323(VoIP)、SNMP、BACnetなどのアプリケーション層プロトコルで利用されています。また、UMTSなどのモバイル通信規格でも使用されており、非常に幅広い分野で活用されています。
ASN.1 の仕組み
ASN.1では、
データ構造を定義する際に、値の範囲や配列のサイズ、拡張性などを指定することができます。例えば、以下のような
データ構造を定義できます。
asn
FooHistory ::= SEQUENCE {
trackingNumber INTEGER,
questionNumbers INTEGER,
questions SEQUENCE OF UTF8String,
answers SEQUENCE (SIZE(1..10)) OF UTF8String,
anArray SEQUENCE (SIZE(100)) OF INTEGER
}
この定義に従って、データを符号化し、ネットワーク経由で送信することができます。受信側では、対応する符号化規則に従ってデータをデコードし、元の
データ構造を復元します。
符号化規則の例
DER (Distinguished Encoding Rules)
DERは、ASN.1の最も基本的な符号化規則の一つです。DERでは、データは「型-長さ-値」の組で符号化されます。
例:
30 13 02 01 05 1a 0e 41 6e 79 62 6f 64 79 20 74 68 65 72 65 3f
XER (XML Encoding Rules)
XERは、ASN.1のデータをXML形式で符号化する規則です。これにより、人間が読める形式でデータを交換できます。
例:
xml
5
14
Anybody there?
PER (Packed Encoding Rules)
PERは、ASN.1のデータを非常にコンパクトに符号化するための規則です。
例:
01 05 0e 83 bb ce 2d f9 3c a0 e9 a3 2f 2c af c0
ASN.1 と他のデータ構造定義との比較
- - バイナリ符号化 vs テキスト符号化: ASN.1は主にバイナリ符号化を使用しますが、他のプロトコル(例:HTTP, SMTP)では、テキストベースの符号化が用いられます。それぞれの方法には利点があり、ASN.1は効率的な符号化が可能で、PERはさらにコンパクトな符号化を実現します。テキストベースの符号化は、実装やデバッグが容易であるという利点があります。ASN.1のXERは、このギャップを埋めるためのテキスト符号化を提供します。
ASN.1 の応用
ASN.1の定義を元に、
コンパイラを使用して、
C言語や
Javaなどのソースコードを自動生成することができます。このコードとランタイムライブラリを利用することで、符号化されたデータとプログラムで理解できる形式との間で双方向の変換が容易になります。また、手動でエンコード・デコードのルーチンを実装することも可能です。
標準規格
ASN.1に関連する主な標準規格は以下の通りです。
- - ASN.1記法: ITU-T Rec. X.680 | ISO/IEC 8824-1, ITU-T Rec. X.681 | ISO/IEC 8824-2, ITU-T Rec. X.682 | ISO/IEC 8824-3, ITU-T Rec. X.683 | ISO/IEC 8824-4
- - ASN.1符号化規則: ITU-T Rec. X.690 | ISO/IEC 8825-1 (BER, CER and DER), ITU-T Rec. X.691 | ISO/IEC 8825-2 (PER), ITU-T Rec. X.693 | ISO/IEC 8825-4 (XER), ITU-T Rec. X.694 | ISO/IEC 8825-5 (XSD mapping), RFC 3641 (GSER)
- - 日本工業規格: JIS X 5603:1990, JIS X 5605-1:1998, JIS X 5605-2:1998, JIS X 5605-3:1998, JIS X 5605-4:1998, JIS X 5606-1:1998, JIS X 5606-2:1998
まとめ
ASN.1は、
データ構造の定義、符号化、転送、復号化を一貫して行うための強力なツールです。その柔軟性と効率性から、多くの
通信プロトコルやデータ交換システムで重要な役割を果たしています。