-
ASN.1
鎖定
- 中文名
- ASN.1抽象語法標記
- 外文名
- Abstract Syntax Notation One
- 標 準
- ISO/ITU-T
- 縮 寫
- ASN.1
ASN.1簡介
在任何需要以數字方式發送信息的地方,ASN.1 都可以發送各種形式的信息(聲頻、視頻、數據等等)。ASN.1 和特定的 ASN.1 編碼規則推進了結構化數據的傳輸,尤其是網絡中應用程序之間的結構化數據傳輸,它以一種獨立於計算機架構和語言的方式來描述數據結構。
OSI 協議套中的應用層協議使用了 ASN.1 來描述它們所傳輸的 PDU,這些協議包括:用於傳輸電子郵件的 X.400、用於目錄服務的 X.500、用於 VoIP 的 H.323 和 SNMP。它的應用還可以擴展到通用移動通信系統(UMTS)中的接入和非接入層。
ASN.1 取得成功的一個主要原因是它與幾個標準化編碼規則相關,如基本編碼規則(BER) -X.209 、規範編碼規則(CER)、識別名編碼規則(DER)、壓縮編碼規則(PER)和 XML編碼規則(XER)。這些編碼規則描述瞭如何對 ASN.1 中定義的數值進行編碼,以便用於傳輸,而不管計算機、編程語言或它在應用程序中如何表示等因素。ASN.1 的編碼方法比許多與之相競爭的標記系統更先進,它支持可擴展信息快速可靠的傳輸 — 在無線寬帶中,這是一種優勢。1984年,ASN.1 就已經成為了一種國際標準,它的編碼規則已經成熟並在可靠性和兼容性方面擁有更豐富的歷程。
簡潔的二進制編碼規則(BER、CER、DER、PER,但不包括 XER)可當作更現代 XML 的替代。然而,ASN.1 支持對數據的語義進行描述,所以它是比 XML 更為高級的語言。
正是由於這種數據類型的“抽象”特性,所以描述它的語法在OSI術語中被稱為抽象語法(abstract syntax).抽象語法定義的數據類型,在傳輸時遵循的數據編碼規則,稱為傳輸語法(transfer syntax).一種ASN.1數據類型對應的傳輸語法可以有多種,但只能使用其中的一種。
ASN.1 的描述可以容易地被映射成 C 或 C++ 或 Java 的數據結構,並可以被應用程序代碼使用,並得到運行時程序庫的支持,進而能夠對編碼和解碼 XML 或 TLV 格式的,或一種非常緊湊的壓縮編碼格式的描述。
同時,ASN.1也是一種用於描述結構化客體的結構和內容的語言。
ASN.1定義
抽象語法定義:
ASN.1是描述在網絡上傳輸信息格式的標準方法。它有兩部分:一部分描述信息內數據,數據類型及序列格式;另一部分描述如何將各部分組成消息。它原來是作為X.409的一部分而開發的,後來才自己獨立成為一個標準。ASN.1在OSI的ISO 8824/ITU X.208(説明語法)和ISO 8825/ITU X.209(説明基本編碼規則)規範。
例如:
Report ::= SEQUENCE {author OCTET STRING,title OCTET STRING,body OCTET STRING,biblio Bibliography}
在這個例子中,"Report"是由名字類型的信息組成的,而SEQUENCE表示消息是許多數據單元構成的,前三個數據單元的類型是OCTET STRING,而最後一個數據類型見下面的ASN.1語法表示它的意義:
Bibliography ::= SEQUENCE {author OCTET STRING title OCTET STRING publisher OCTET STRING year OCTET STRING}
ASN.1數據類型
ASN.1 提供了一些基本的預定義數據類型:
UNIVERSAL 0 保留給編碼規則使用
UNIVERSAL 1布爾類型
UNIVERSAL 2整型
UNIVERSAL 3零或多個比特的序列
UNIVERSAL4 零或多個字節的序列
UNIVERSAL5 NULL
UNIVERSAL 6 對象標識符類型
UNIVERSAL 7 對象描述符類型
UNIVERSAL 8 外部類型和類型實例
UNIVERSAL 9 實數類型
UNIVERSAL 10 枚舉類型
UNIVERSAL 11 嵌入的 pdv 類型
UNIVERSAL 13 相關對象標識符類型
UNIVERSAL 14-15 保留給本建議的以後版本和國際標準使用
UNIVERSAL 16 序列和類型序列
UNIVERSAL 17 集合和類型的集合
UNIVERSAL 18-22, 25-30 字符串 類型
UNIVERSAL 23-24 時間 類型
UNIVERSAL 31-... 保留給本建議以外的類型和國際標準使用
ASN.1數據結構
ASN.1 還能夠定義如下的數據結構類型:
結構 ( SEQUENCE )
列表 ( SEQUENCE OF )
類型選擇 ( CHOICE )