2020コースデザインウィーク1 Asn.1形式の学習

2020コースデザインウィーク1 Asn.1形式の学習

1.はじめに

  • ASN.1(抽象構文記法dotone)抽象構文記法 1。これは、抽象データ型の形式を定義する標準であり、データの表現、表現、送信、およびエンコードを記述するための表記法です。

  • ASN.1には情報構造のみが含まれ、特定のビジネスデータは処理されませんプログラミング言語はありません

  • ASN.1符号化方法が限定されるものではなく、転送構文ASN.1値構文記述抽象データ(特異的発現)、共通の符号化規則であるによって提供される様々なASN.1符号化規則:基本符号化規則(BER) Canonicalエンコードルール(CER、CanonicalEncodingルール)一意のエンコードルール(DER、DistinguishedEncodingルール)圧縮エンコードルール(PER、PackedEncodingルール)、およびX MLエンコードルール(XER、XMLEncodingルール)これらのコーディング規則は、ASN.1で定義された値を適切な伝送コードに変換する方法を説明しています。

  • ASN.1は、OSIのISO8824 / ITU X.208(構文の説明)およびISO8825 / ITU X.209(基本的なエンコードルールの説明で指定されています

  • いくつかの概念:

  • 実際の文法:C、ObjectiveCamlなどの実際のプログラミング言語を指します。
  • 抽象構文(AbstractSyntax):ASN.1を参照します。これは、ASN.1仕様を使用するプロトコルによって記述される説明テキストです。データを表すエンコーディングテクノロジーから独立した一般的なデータ構造を示しています。抽象構文を使用すると、データ型を定義し、これらの型の値を指定できます。抽象構文は、データの構造を記述するだけで、特定のエンコード形式とは何の関係もありません。また、これらのデータ構造がコンピューターにどのように格納されるかは関係ありません。
  • 転送構文(TransferSyntax):プレゼンテーション層でのデータ交換の表現方法を指します。これは、実際の通信システム間のコードストリームです。2つのプレゼンテーション層エンティティ間でデータが転送される場合、これらのデータの実際のビットパターン表現は転送構文です。
  • コーディング:実際の通信システム間で抽象言語メソッドをビットストリームに変換することを指します。
  • エンコーディングルール:文法上のルールに続いて、実際の通信システム間で抽象言語メソッドをビットストリームに変換します。

2. ASN.1の基本的な文法規則

  • ASN.1はBacosパラダイム(BNF)を使用します。
  • 二重引用符で囲まれた単語( "word")は、これらの文字自体を表します。また、double_quoteは二重引用符を表すために使用されます。
  • 二重引用符の外の単語(アンダースコアが含まれている場合があります)は、文法部分を表しています。
  • 山かっこ(<>)は必須です。
  • 大括弧([])はオプションです。
  • 中括弧({})には、0から無数の回数まで繰り返すことができる項目が含まれています。
  • 縦棒(|)は、左側または右側のいずれかを選択できることを示します。これは「OR」と同等です。
  • :: =は「として定義」を意味します。
  • ASN.1では、シンボルの定義が見つかる限り、シンボルの定義に順序はありません。
  • すべての識別子、参照、およびキーワードは、文字で始まり、その後に文字(大文字と小文字の両方)、数字、またはハイフン "-"(ハイフン "-"または2つの連続する文字で終わることはできません)が続く必要がありますハイフン)、アンダースコア「_」は使用できません。コメントは、行末で始まり、行末または行末で終わります。
  • キーワードは通常すべて大文字です。
  • 識別子の中では、タイプとモジュール名のみが大文字で始まり、他の識別子は小文字で始まります。
  • ASN.1では、実数は実際には、仮数、基数、指数の3つの整数として定義されます。小数表現はありません。
  • ASN.1は、スペース、タブ、改行、コメントを変換しません。ただし、定義記号(または割り当て記号) ":: ="に区切り文字があってはなりません。

3. ASN.1のタイプ

タイプは、エンコードして送信できる空でない値のセットです。高水準言語の複雑なデータ構造と比較すると、ASN.1のタイプは主にデータ伝送用です。

ASN.1の型は、基本型(組み込みデータ型)と結合型に分けられ、結合型は1つ以上の基本型で構成されます。

1.基本タイプ

タイプ 意味
ビット列 ビット文字列
ブール ブール
整数 整数
ヌル ヌル値
OBJECT IDENTIFIER オブジェクト識別子
オクテット弦 バイト文字列
PrintableString 印刷可能な文字列
UTCTime 「協定世界時」
GeneralizedTime 世界時

2.建設タイプ

  • 複雑なものは、単純なコレクションまたはもののシーケンスと見なすことができます。
  • コレクションは順序に依存しませんが、シーケンスは順序に依存します。
  • 構造タイプは、いくつかのフィールド(単純タイプまたは他の構造タイプ)を含む複雑なものを記述するために使用されます。
  • ASN.1は、秩序と無秩序のさまざまな状況を説明する4つの構築方法を定義しています。

2.1シーケンス

  • 1つ以上のフィールドの順序付けられたシーケンスを表します。次に例を示します。

     ReportEntry ::= SEQUENCE { 
       author OCTET STRING, 
       title OCTET STRING, 
       body OCTET STRING, 
       biblioBook Bibliography 
       } 
    
  • ユーザー定義の型名と識別子の大文字の規則
    型名は「ReportEntry」の
    ようにキャメルの大文字で大文字になり、識別子「biblioBook」のようにキャメルの大文字で大文字になりました

2.2シーケンス

  • 特定のタイプの0個以上のフィールドの順序付けられたシーケンスを表します。次に例を示します。

     Report ::= SEQUENCE SIZE (100) OF ReportEntry
     Report ::= SEQUENCE SIZE (MAX) OF ReportEntry
    

2.3セット

  • 次のように、1つ以上のフィールドの順序付けられていないセットを表します。

     Menu ::=SET{
     	sandwich Food,
     	coke Beverage
     }
    

2.4セット

  • 特定のタイプの0個以上のフィールドの順序なしセットを表します。次に例を示します。

     Class ::= SET SIZE (50) OF Student
    

2.5 ASN.1を使用してデータ構造を書き込む

  • さまざまな構築方法に基づいて、基本的なデータ型が階層的にネストされ、最終的に任意の抽象的なものを記述できるデータ構造が構築されます。

  • たとえば、次のとおりです。

       Bibliography ::= SEQUENCE { 
       	author OCTET STRING 
       	title OCTET STRING 
       	publisher OCTET STRING 
       	year OCTET STRING 
       } 
    

3.その他のキーワード

  • 選択:いくつかのタイプから1つを選択します
  • ANY:構築されたタイプのフィールドは、他のフィールドの値に依存します(ANY DIFINED BY)
  • オプション:構築タイプのフィールドはオプションです
  • デフォルト:構築タイプのフィールドのデフォルト値を指定します

おすすめ

転載: www.cnblogs.com/Brass/p/12711196.html