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を利用しているプロトコル・システム
関連項目