外部數據表示法

外部數據表示法(External Data Representation,縮寫為XDR)是一個在1995年制定的IETF標準協定。

基本介紹

  • 中文名:外部數據表示法
  • 外文名:External Data Representation
  • 縮寫:XDR
  • 制定時間:1995年
  • 屬性IETF標準協定
  • 領域:計算機
介紹,表示格式化,分類方法,轉換策略,標記,例子,XDR 數據類型,

介紹

外部數據表示法(External Data Representation,縮寫為XDR)是一個在1995年制定的IETF標準協定。在OSI模型表示層presentation layer中實現。XDR允許把數據包裝在獨立於介質的結構中使得數據可以在異構的計算機系統中傳輸。從局部表示轉換到XDR稱為編碼,從XDR轉換到局部表示稱為解碼。XDR使用軟體來完成變換,所以在不同的作業系統中可以靈活的運用,同樣的,XDR獨立於傳輸層Sun的遠端程式呼叫RPC就是使用XDR。

表示格式化

因為計算機用不同的方法表示數據,使得編碼問題複雜。另外,不同應用程式使用不同的語言編碼,而且即使使用同一種程式語言,也可能有不止一個編譯程式,因此數據格式不統一。

分類方法

第一個問題是系統打算支持什麼樣的數據類型。通常,我們可以將由參數排列機制支持的類型分為三級。每一級都使參數排列系統面對更複雜的任務。
在最低一級,參數排列系統對基本類型(base type)的某個集合進行操作。通常,基本類型包括證書,浮點數和字元。系統還可以支持序數類型和布爾型。如上所述,基本類型集合的含義是指,編碼進程必須能將每一基本類型從一種表示法轉換為另一種表示法,如,把整形從大位元組序轉換為小位元組序表示。
再上一級是扁平類型(flat type):結構和數組。為了按字的邊界對齊欄位,編譯程式在編譯應用程式時習慣於在組成結構的欄位之間加入填充。參數排列系統通常將結構壓縮使得他們不含填充。
在最高一級,參數排列系統必須處理複雜類型(complex type):使用指針建立的類型。也就是說,一個程式要傳送給另一個程式的數據結構可以不包括在某個單一的結構中,而可能包含從一個結構指向另一結構的指針。樹就是包含指針的複雜類型的一個很好的例子。顯然,數據編碼器必須為網上傳輸準備好數據結構,因為指針是通過記憶體定址實現的,而且駐留在一台機器上某個記憶體地址的結構並不意味著在另一機器上有相同的駐留地址。換句話說,參數排列系統必須串列化(serialize)複雜數據結構。

轉換策略

一般有兩個選擇:標準中間形式和接收方調整。
標準中間形式的概念就是要確定每一種類型的所有外部表示法;在傳送數據前,傳送主機將數據由其內部表示轉換成這種數據的外部表示,而在接收數據的過程中,接收主機又把這種數據的外部表示轉換成本地表示。
接收方調整允許傳送方用其內部格式傳輸數據;傳送方不進行基本類型的轉換,但通常要壓縮和展開較複雜的數據結構。然後接收方負責把數據從傳送方的格式翻譯成其本地的格式。用這種策略的問題是,每個主機必須準備好轉換來自所有其他機器體系結構的數據。

標記

參數排列中的第三個問題是接收方如何知道它接收的訊息中包含什麼類型的數據。有兩種常用的方法:帶標記(tagged)數據和不帶標記(untagged)數據。
標記是指包含在一個訊息中的任何附加訊息,它有助於接收方解碼訊息。如類型標記,長度標記,體系結構標記。不帶標記,則需要在應用程式中指定數據信息。
樁是實現參數排列的一段代碼。在客戶端,樁把過程參數排列成可以通過網路協定傳輸的訊息。在伺服器端,樁反過來把訊息轉換成一組用來調用遠程過程的參數。

例子

XDR
外部數據表示法(External Data Representation)是用在SunRPC上的網路格式。
ASN.1
抽象語法表示法1(Abstract Syntax Notation One)是一個ISO標準,他定義網上傳送數據的一種表示方法。ASN.1用三元組形式表示每個數據項:<tag,length,value>。
NDR
網路數據表示法(Network Data Representation)是用於分散式計算環境的數據編碼標準。NDR使用的是接收方調整方式。NDR會在每個訊息前插入一個體系結構標記,而對單個數據項是不帶標記的。

XDR 數據類型

XDR定義了以下數據類型:
  • 字元
  • 短整型
  • 整型
  • 長整型
  • 浮點
  • 雙精度浮點
  • 枚舉
  • 結構
  • 字元串
  • 固定長度數組
  • 可變長度數組
  • 聯合
  • opaque data

相關詞條

熱門詞條

聯絡我們