asn淺析–簡單介紹

來源:互聯網
上載者:User

asn1是一種自組織自訂的資料結構,它是自洽的,幾乎不需要外界的參與就能自己解釋自己,這就做到了與機器無關,與應用無關,儘可能的與環境無關,這就是它最大的優勢。那麼到底什麼是asn結構呢,簡單說它就是一個嵌套的三元組,複雜得說它可以寫一本厚書,甚至好幾本。所以還是簡單的理解它吧,以下用asn指代其最顯然的編碼形式--ber格式,因為本文基於ber格式介紹,並不涉及更多抽象文法方面的asn定義,asn的三元組就是{類型、長度、值},所謂的可嵌套值得是每個三元組中的“值”同時又可以表示為新的三元組,是否表示為新的更小的三元組以及它到底是什麼要看它的“類型”是什麼,所謂的嵌套僅限於“值”這個欄位,那麼“類型”和“長度”有什麼說頭呢?實際上它們很有說頭,這裡面有好幾個問題需要解決,首先就是誰來規定“類型”和“長度”的類型和長度,如果說固定化它們那麼可擴充性肯定不佳,如果說靠外界程式規定那麼它們就依賴了外界而不再是自洽的了,因此就需要它們本身也是可以自我解釋的,也許是歌德爾的不完備性在普遍的起作用吧,想讓asn完全的自恰是不可能的,必須靠外界給予硬性規定,但是這種規定必須做到最小化和標準化,因此這最小化的規定由國際標準組織來規定,於是就有了ASN.1標準。
     asn1以位元組為基礎,定義1個位元組為“類型”和“長度”的元長度,首先考慮“類型”,從高位到低位的規定:8位和7位兩位定義class,一共四種,第6位表示後面的“值”是基本類型還是複合類型,再後面的5位表示一個tag,如果我們把class想象成大的類型,那麼tag就是該大類中的小類,但是如果5個位元組不夠了怎麼辦,實際上如果你第5位為1,那麼就說明接下來的位元組還是表示tag,直到最高位不為1為止結束tag;接下來就是“長度”了,一個位元組僅能表示最多一個位元組的長度,如果長度超過256怎麼辦?解決辦法就是只要“長度”的最高位為1,那麼此位元組表示的就是“長度”的長度,這樣就可以定義更長的長度了;接下來的“值”要麼是一個確定的數字要麼是上面三元組的重複。
     上面描述的就是asn的最基本的理念,如果問asn最成功的地方在哪裡,答案就是越複雜的協議用asn定義越方便,我們知道應用程式層協議是最複雜的,要比底層協議複雜的多,於是很多應用程式層協議都是用asn1定義的,典型的如H323,snmp,ssl(osi定義在展示層),用asn而不是類似ip等底層協議的方式是因為應用程式層協議充滿了變數。它和分層協議模型相比有何不同以及有何優勢,且待下回分解。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.