複製鏈接
請複製以下鏈接發送給好友

外部數據表示法

鎖定
外部數據表示法(External Data Representation,縮寫為XDR)是一個在1995年制定的IETF標準協定。
中文名
外部數據表示法
外文名
External Data Representation
縮    寫
XDR
制定時間
1995年
屬    性
IETF標準協定
領    域
計算機

外部數據表示法介紹

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

外部數據表示法表示格式化

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

外部數據表示法分類方法

第一個問題是系統打算支持什麼樣的數據類型。通常,我們可以將由參數排列機制支持的類型分為三級。每一級都使參數排列系統面對更復雜的任務。
在最低一級,參數排列系統對基本類型(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定義了以下數據類型: [2] 
  • 字符
  • 短整型
  • 整型
  • 長整型
  • 浮點
  • 雙精度浮點
  • 枚舉
  • 結構
  • 字符串
  • 固定長度數組
  • 可變長度數組
  • 聯合
  • opaque data
參考資料
  • 1.    Srinivasan R. XDR: External data representation standard[R]. 1995.
  • 2.    Eisler M. XDR: External data representation standard[R]. 2006.