Abstract Syntax Notation One
ASN.1 記法で FooProtocol のデータ構造を定義したものを以下に示す。
これが Foo プロトコル作成者が公開する仕様となる。ASN.1 はプロトコルの手順(流れ)を定義しない。その部分は文章で説明される。
ここで、Foo プロトコル準拠のメッセージを他の誰かに送るとする。このメッセージ(PDU)は以下のようになっている。
ASN.1 は、値とサイズの制限および拡張性をサポートする。上記仕様は次のように変更可能である。
この変更は trackingNumber が持つ値を 0 から 199 までに、questionNumbers が持つ値を 10 から 20 までに制限する。questions 配列のサイズは 0個から10個であり、answers 配列の数は 1個から10個である。anArray フィールドは 0 から 1000 までの範囲の整数が常に100 個である。上記中の '...' は拡張性マーカーであり、将来バージョンのFooHistoryメッセージ仕様にフィールドが追加される可能性があることを示す。
ASN.1 コンパイラを使って、ASN.1 記法によるコードから、等価なデータ構造を表現する適当なコード(例えばC言語のソースコード)を生成する場合もある。このコードとランタイムライブラリにより、符号化されたデータ構造と言語が理解できる表現の間で双方向の変換が可能となる。あるいは、人間の手でエンコード・デコードのルーチンを書く場合もある。