External Data Representation

External Data Representation (XDR) とは、データ交換用のシリアライズ形式の一つ。

主にONC RPC (SunRPC) のプレゼンテーション層として使われる。

歴史

[編集]

サン・マイクロシステムズによって、1987年にRFC1014、1995年にRFC1832として ONC RPCと同時に規格化され、現在は2006年のRFC4506が最新となっている。(RFC4506はRFC1832からの技術的な変更点はない

特徴

[編集]

DCE/RPC で使われている DCE/NDR (及び MS RPC/NDR)に比べ、常に統一した表現形式に正規化する点が特徴となっている。

  • 整数(32/64bit)はネットワークバイトオーダー(ビッグエンディアン)に正規化。(DCE/NDRではビッグエンディアンとリトルエンディアンの両形式をサポート)
  • 浮動小数点数(32/64/128bit)はIEEE形式に正規化。(DCE/NDRではIEEE/VAX/Cray/IBM形式)
  • 文字列はASCIIに正規化。(DCE/NDRではASCII/EBCDICの2形式、MS RPC/NDRではUTF16もサポート)
  • 32bit単位にアラインされるよう、必要に応じてパディングされる。

上記の特徴のため、個々の環境では内部形式と統一された正規化形式との変換ルーチンのみ用意すればよい。(DCE/NDRでは各サポート形式と内部形式との変換ルーチンが必要)

その反面、マシンの内部フォーマットと正規化形式と違う場合、同じアーキテクチャ同士のデータ交換でも常に変換オーバーヘッドが発生する。

  • 例) IA-32/64系(リトルエンディアン)同士の通信では、常にエンディアン変換が発生する。(Sun Workstation同士の通信の場合、ビッグエンディアンのため、エンディアン変換は発生しない)

rpcgenというスタブ・コンパイラを使うと、整列化・非整列化するプログラムが自動的に生成される。

共用ファイルのデータフォーマットとしてXDRのみを使うこともある。

XDRを利用しているプロトコル・システム

[編集]

関連項目

[編集]