[轉載]H323中ASN描述文件的處理

在一個由不同廠家生產的計算機構成的環境中,由於機器硬件和軟件配置的不同,在數據表示(諸如安符編碼、數值表示、字長)方面往往存在差異。爲使廠家各產品之間互通互連,我們必須消除這些差異,應具有一套獨立於計算機硬件和軟件環境的外部數據表示格式,並通過對其編解碼實現。抽象語法表示ASN.1(ITU - T rec.X.680|ISO/IEC8824-1)及它的基本編碼規則BER(ITU-T Rec.X.690|ISO/IEC8825-1)和緊縮編碼規則PER(ITU-T Rec.X.691|ISO/IEC8825-2)即充當了這一角色,被許多應用層協議所使用,使不同系統之間的互連、互通成爲可能。
  在開發IP電話的H.323協議時,由於網關之間的視頻、音頻數據和控制消息要通過互聯網進行傳輸,而網關產品可能是不同廠家生產的,軟、硬件環境各不相同。因此採用了ASN.1語法表示,傳送的格式是基於ASN.1的PER(packed encodingrules)編碼格式的比特流。  

ASN編譯器的實現原理:

ASN1-C編譯器的實現方法
(1)實現編譯器要做的準備工作在實現編譯器之前,我們要做以下的工作:
  a.進行數據結構的映射,實現ASN.1類型到C類型的翻譯工作,並存在頭文件中。遵循規則如前所述,ASN.1基本類型見協議X.680。
  b.編制運行時函數庫(Run-time LibraryFunction),包括BER運行時庫函數、PER運行時庫函數以及運行時公用庫函數。BER運行時函數庫包括X.680中規定的基本的數據類型的BER編碼函數,PER運行時函數庫包括其PER編碼函數,公用函數庫包括跟蹤、診斷、打印、出錯信息處理以及其它爲前兩個庫函數所用的函數等。這一步設計的庫函數留出API接口供程序調用,用戶當然可以自己調用這些函數進行數據的編碼。在這裏,對這些函數的調用可自動由編譯器生成的.c文件調用。


OPAL中的文件結構是 ASN文件對應一個.h文件,然後對應一個自動生成的cxx文件。

關於應用和更深入的研究和了解有待再學習。

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