ASN.1抽象語法標記1

ASN.1編碼ber

ASN.1(抽象語法表示法一)

ASN.1(抽象語法表示法一)是一種正式但靈活的表示法,允許您指定高級電信協議中使用的抽象對象。您可以使用整數和位字符串等簡單類型以及集合和序列等結構化類型來構建複雜類型的定義。

基本編碼規則 (BER)

BER 描述瞭如何將每種 ASN.1 類型的值表示或編碼爲八位八位組的字符串。通常有不止一種方法對給定值進行 BER 編碼。

可辨別編碼規則 (DER)

傑出編碼規則 (DER) 是 BER 的子集,它爲每個 ASN.1 值提供唯一的編碼。

DER 和 BER 編碼的文件是二進制文件。

對於此處的大多數用途,您可以將“BER 編碼“DER 編碼視爲同一事物。

 

基本編碼規則 (BER)

  基本編碼規則 (BER) 是一組規則,用於將 ASN.1 定義的數據編碼爲特定的表示形式,以便傳輸到另一個系統。我們將抽象語法符號與 等高級語言的聲明部分進行了比較。繼續類比,我們將傳輸語法 BER 與彙編/機器語言進行了比較。抽象符號 ASN.1 的實例或值通過一組編碼規則或傳輸語法 BER 進行編碼,以便在兩個應用實體之間傳輸。正如在應用程序編程中高級語言比彙編語言更常用一樣,網絡用戶和程序員在網絡應用中也比 BER 更容易熟悉 ASN.1。因此,我們詳細討論了 ASN.1,並以更簡短的方式討論了 BER

我們給出了 BER 的結構和示例,足以瞭解用於傳輸 ASN.1 定義的數據類型和值的編碼/解碼規則。ISO 8825(或 ISO 8825-第 部分:基本編碼規則)和 CCITT 的 X.209 包含 BER 的詳細規範。ISO 8825 PDAM 2 的後續修訂與 ISO 8825 合併形成 ISO 8825 第 部分:基本編碼規則。

抽象語法

內置類型:

簡單類型:

BOOLEAN

INTEGER

BIT STRING

OCTET STRING

NULL

OBJECT IDENTIFIER

REAL

ENUMERATED

CHARACTER STRING

結構體類型:

SEQUENCE (think array)

SEQUENCE OF (think record)

SET (think set)

SET OF (think set, all elements same type)

CHOICE

SELECTION

ANY

類和標籤(Classes and Tags)

UNIVERSAL

APPLICATION

PRIVATE

CONTEXT SPECIFIC

有用類型(Useful Types,可以認爲上述以外其他常用的類型)

GeneralizedTime (three forms)

UTCTime (like GeneralizedTime but only to a minute or second)

數據元素的結構

數據元素是 BER 的基本單位。編碼包括將信息表達爲數據元素;解碼是相反的過程。每個數據元素都是由三個組成部分組成的有序列表:標識符、長度和 內容。原始數據元素的特徵在於不包含附加數據元素的內容組件。在結構化數據元素中,內容組件包含一個或多個數據元素,如圖 所示 。每個組件都以八位位組編碼;編碼數據元素是八位位組的完整序列。

Type

Length

Value

 

 

 

 

 

標識符

標識符或標籤被編碼爲一個或多個八位位組,如圖 所示。它給出了內容組件中指定的數據類型。在單八位字節標識符中,位 和位 表示類別(UNIVERSAL 爲 00APPLICATION 爲 01CONTEXT-SPECIFIC 爲 10PRIVATE 爲 11),位 指定數據元素爲原始 (0) 或結構化 (1) ),位 到 給出標籤號。例如,00000011 表示標籤類別爲 UNIVERSAL00),數據元素爲原始(0),標籤編號爲 300011),即 BIT STRING 標籤編號。

 
圖:標識符(Tag)編碼  

當標籤編號大於 31 時,需要多於 個位,因此需要額外的八位位組。在這種情況下,第一個八位位組的位 到 爲 1,其餘每個八位位組在位 中具有 或 0,具體取決於是否標籤號分別以至少一個八位位組連續或沒有八位位組連續。例如,標籤 APPLICATION 293 編碼爲 01111111 10000010 00100101

 

長度

  數據元素的長度分量用以下三種形式之一指示內容分量的長度(八位位組數):

  • 1) 短格式 長度以一個八位位組給出,表示從 到 127 的數字範圍,因爲第一位必須爲 0。例如,長度字段 01010110 表示內容字段有 = 86 個八位位組
  • 2) 長格式 長度以 到 127 個八位位組給出,允許使用從 128 到 21016-1 的數字。實際上,數字處於該範圍的下限。每個八位位組的第 位中的 或 與標識符字段中的含義相同。例如,10011001 00011010 表示內容字段有 3226 個八位位組。
  • 3) 不定形式 結構化數據元素的內容(此形式允許的唯一類型)具有特定的內容結尾數據元素,由兩個全零的連續八位字節給出。長度字段包含一個八位位組,10000000,它表示存在內容結束八位位組。

內容

  在內容組件中,零個或多個八位位組對原始數據元素進行編碼,而零個或多個數據項對結構化數據元素進行編碼。ASN.1 數據類型的編碼在圖 中指定 。對於類型 BIT STRING 和 OCTET STRING,內容組件可以被編碼爲原始的或結構化的。所有字符串類型也可以被編碼爲原始或結構化,在這種情況下,每個組成數據項代表一個子字符串。
圖: ASN.1 數據類型的內容組件編碼。

Basic Encoding Rules (BER)

asn1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章