當前位置:首頁 > 通用術語 > 什麼是ASN.1 – 抽象語法表示法?概念、運作方式

什麼是ASN.1 – 抽象語法表示法?概念、運作方式

2025-08-26通用術語7

ASN.1,即抽象語法表示法一,是國際標準化組織 (ISO) 標準,它提供了一種將人類可讀符號編碼為壓縮二進位形式的機制。抽象語法表示法 1 (ASN.1) 是 X.400 和 X.500 規格的一部分,提供格式化和編碼 X.400 型電子郵件訊息的標準方法,以便透過網路傳輸。更一般地說,ASN.1 是一種指定用於任何形式的串行傳輸的抽象對象的方法。

ASN.1還用於在簡單網路管理協定(SNMP)的管理資訊庫(MIB)檔案中定義物件。

ASN.1

怎麼運作

ASN.1 在語法上類似於程式語言,它允許定義不同的資料類型、資料結構、陣列、類別和其他類似於 C++ 程式語言中的結構。開放系統互連 (OSI) 參考模型的呈現層 (第 6 層) 使用 ASN.1 作為標準,以指定此層應用程式之間交換資訊的語法。ASN.1 資料類型可以是簡單的,也可以是結構化的。

ASN.1 資料結構以十六進位表示法編碼為八位元組。然後,這些結構作為二進位資訊透過網路傳輸。

八位元組編碼規則 (OER) 的設計易於實施,並產生比基本編碼規則 (BER) 產生的編碼更緊湊的編碼。除了減少開發編碼器/解碼器的工作量之外,使用 OER 還可以降低頻寬利用率(儘管不如打包編碼規則那麼多)、節省 CPU 週期並降低編碼/解碼延遲。

亞型

通常,設計人員只打算 ASN.1 類型值的某些子集在某些情況下有效。例如,在以百分比形式傳達濕度測量時,只有 0 到 100 範圍內的數字有效,或者在傳達郵遞區號時,只允許具有特定字元且長度在特定範圍內的字串。也許當某些協定訊息在特定上下文中使用時,選擇性校驗和欄位將不存在。

這些都是約束的範例,可以透過定義合適父類型的子類型來表示。這是透過在父項的符號中附加適當的子類型規格來完成的。結果本身就是一個類型,可以在允許類型的任何地方使用。(因此,子類型規範也可以應用於子類型,在這種情況下,它可能有助於進一步減少值集)。子類型規格由一或多個子類型值集組成,以 “|” 分隔(發音為“或”)。整個列表位於圓括號(())中。

例如:

Weekend ::= DaysOfTheWeek (saturday | sunday)

類型 Weekend 是透過將子類型規格附加至父類型 DaysOfThe Week 來定義。子類型規格 (圓括弧中的運算式) 會定義哪些 DaysOfTheWeek 的值也是 Weekend 的值。

有六種不同的值集表示法。其中兩個適用於所有父類型,其他僅適用於特定父類型。
適用於所有母系類型的值集表示法是單一值及包含子類型。前一種表示法只是父類型的某個值,結果值集僅由該值組成。例如上述 “星期六” 和 “星期日”,每個值都是 DaysOfTheWeek 的單一值。所包含的子類型表示法包括關鍵字 INCLUDES,後面接著相同母項類型的一些其他子類型,並表示由該子類型中所有值組成的值集。
例如,給定:
LongWeekend ::= DaysOfTheWeek

     (INCLUDES Weekend | monday)

類型 LongWeekend 包含三個值 saturday、sunday 和 monday,這是其定義中使用的值集的聯集。每個值集都會定義父類型值的某些子集。產生的子類型具有這些子集聯集中的值,這些值必須是非空的。
值範圍表示法可用來子類型化其值已排序的任何類型 (例如,整數類型) 。它涉及指定範圍的下限和上限。
大小範圍可以包含在值具有已定義大小的任何類型 (例如,位字串類型) 。在這裡,值集包含其大小 (以適當單位測量) 在指定範圍內的所有值。

字母限制只能套用至字串類型,且只容許由某些字元子集所形成的值。

最後,可以使用內部子類型來定義結構化類型的值集(例如,集合和類型集)。這裡的值集包括其組件值滿足特定約束的所有值。

名稱

ASN.1 中的數個物件類別具有可參考的名稱。我們實際上已經遇到了上述每種名稱的示例,如下所示:

類型參考:天氣報告
值參考:sample報告
標識符:濕度

像這些例子一樣,選擇名稱對人類讀者具有意義非常重要。事實上,如果名稱選擇正確(並遵循適當的佈局約定),那麼即使不精通該語言的人也可以通常掌握 ASN.1 某些部分的本質。

ASN.1 中的所有名稱都是從同一組字元抽取的字串,即:

大寫字母:ABCDEFGHIJKLMNOPQRSTUVWXYZ
小寫字母:abcdefghijklmnopqrstuvwxyz
十進制數字:0123456789
連字符:–

名稱中的第一個字元必須是字母。名稱中字母的大小寫很重要,因此「邊框」和「邊框」是不同的名稱。事實上,首字母的大小寫具有特殊意義,因為類型引用(以及模組引用,見下文)必須以大寫字母開頭,而值引用和標識符必須以小寫字母開頭。然而,使用兩個或多個名稱並不是一個好主意,這些名稱僅因某些字母的大小寫而不同。

必須選擇使用者選擇的名稱,以避免與 ASN.1 的保留字(包括該語言的大部分關鍵字)發生衝突。由於關鍵字通常為大寫,因此在名稱中使用小寫字母可以輕鬆遵守這一點,並且通常也使名稱更具可讀性。名稱的長度沒有上限,這允許使用適當的短語作為物件的名稱。

合法(且可能適當)名稱的範例如下:

  • 未格式化郵政地址

  • 存取控制清單

  • 前十字韌帶

  • 溫度

  • MverifyPDU

  • 創紀錄低

  • ib-g3傳真非基本參數

這些範例中的前幾個可用來做為類型參照,其他範例則可作為識別碼或值參照使用。

請注意,在這些範例中使用了兩種不同的約定來形成多字名稱,因為空格在名稱中無效,因此不能用來分隔各個作品。

“什麼是ASN.1 – 抽象語法表示法?概念、運作方式” 的相關文章

什麼是存取控制?概念、怎麼運作、通用術語

什麼是存取控制?概念、怎麼運作、通用術語

存取控制是一個通用術語,描述管理員如何保護對 Active Directory 中物件的存取。存取控制一詞也用於 Windows Server 和 Windows XP 平臺,以描述如何使用 NTFS 檔案系統來保護檔案和資料夾,以及如何控制共用資料夾、印表機和其他網路資源的存取。存取控制原則怎麼運...

什麼是令牌環(Token Ring)?概念、怎麼運作的

什麼是令牌環(Token Ring)?概念、怎麼運作的

網路百科全書中令牌環的定義。什麼是令牌環(代幣戒指)(在計算機網絡中)?Token Ring 是 IBM 開發的一種流行的局域網 (LAN) 技術,在許多商店中仍然擁有龐大的安裝基礎,但近年來已被不同形式的以太網大大超越。權杖環在 IEEE 802.5 規範中進行了標準化,該規範描述了配置為物理星形...

什麼是基本磁碟(Basic Volume)?概念、怎麼運作的

什麼是基本磁碟(Basic Volume)?概念、怎麼運作的

網路百科全書中基本磁碟的定義。磁碟管理中的磁碟區是什麼?檔案系統中的最高組織層次是磁碟區。檔案系統位於磁碟區上。磁區至少包含一個分割區,這是實體磁碟的邏輯分割。包含存在於一個分割區上的資料的磁區稱為簡式磁區,而包含存在於多個分割區上的資料的磁區稱為多分割區磁區。什麼是基本磁碟?Microsoft W...

什麼是手持裝置標記語言 (HDML)?概念、運作方式

什麼是手持裝置標記語言 (HDML)?概念、運作方式

手持設備標記語言 (HDML) 是一種簡單的語言,用於為小型顯示器手持設備創建類似超文本的內容。什麼是 HDML(手持設備標記語言)?一種以超文本標記語言 (HTML) 為模型的標記語言,針對個人數字助理 (PDA)、尋呼機和行動電話等手持信息設備的無線互聯網訪問進行了優化。這些設備的顯示器尺寸有限...

什麼是代理程式 (SNMP)?概念、運作方式

什麼是代理程式 (SNMP)?概念、運作方式

網路百科全書中AGENT的定義。什麼是代理程式 SNMPSNMP中的代理程式是一種簡單的網路管理協定客戶端軟體,在集線器、路由器或其他網路元件上運行。代理程式會收集 TCP/IP 統計資料及條件的相關資訊,並可在向 SNMP 管理系統要求時提供此資訊。代理程式還可以在發生設陷時向管理系統發...

什麼是服務品質 (QoS)?概念、運作方式

什麼是服務品質 (QoS)?概念、運作方式

網路百科全書中服務品質 (QoS) 的定義。什麼是服務品質 (QoS)?一般來說,QoS 是具有可預測延遲和資料遺失的任何網路技術。更具體地說,是允許為通過網路傳輸的不同流量流定義絕對或相對效能要求的任何機制。換句話說,服務品質 (QoS) 網路可以保證特定路徑、連線或流量類型的一定輸送量。這使得確...