External Data Representation

External Data Representation (XDR)とは



External Data Representation(XDR)は、異なるコンピュータシステム間でデータを交換するためのシリアライズ形式の一つです。主にONC RPC(Open Network Computing Remote Procedure Call)のプレゼンテーション層として利用されます。

歴史



XDRは、サン・マイクロシステムズによって1987年にRFC1014として最初に規格化されました。その後、1995年にRFC1832として改訂され、最新の規格は2006年のRFC4506です。RFC4506は、技術的な変更はRFC1832からありません。XDRは、ONC RPCとともに規格化され、分散コンピューティング環境でのデータ交換の標準として重要な役割を果たしてきました。

特徴



XDRの最大の特徴は、データ表現形式を統一することにあります。これにより、異なるアーキテクチャのシステム間でもデータを正しく解釈できます。DCE/NDR(Distributed Computing Environment Network Data Representation)やMS RPC/NDRと比較すると、XDRは常に統一された表現形式に正規化される点が異なります。

  • - 整数の正規化: 32ビットおよび64ビットの整数は、ネットワークバイトオーダー(ビッグエンディアン)に正規化されます。DCE/NDRではビッグエンディアンとリトルエンディアンの両方をサポートしていますが、XDRでは常にビッグエンディアンに統一されます。
  • - 浮動小数点数正規化: 32ビット、64ビット、128ビットの浮動小数点数は、IEEE形式に正規化されます。DCE/NDRではIEEE形式に加えてVAX、Cray、IBM形式もサポートしていますが、XDRではIEEE形式に統一されます。
  • - 文字列の正規化: 文字列はASCII形式に正規化されます。DCE/NDRではASCIIEBCDICの2形式、MS RPC/NDRではUTF-16もサポートしていますが、XDRではASCIIに統一されます。
  • - アラインメントとパディング: データは32ビット単位でアラインされ、必要に応じてパディングが追加されます。これにより、異なるシステム間でのデータの整合性が保たれます。

これらの特徴により、各システムは内部形式とXDR形式との変換ルーチンのみを用意すればよく、異なる表現形式間の変換を個別に実装する必要がありません。しかし、内部形式とXDR形式が異なる場合、同じアーキテクチャ間でのデータ交換でも常に変換オーバーヘッドが発生する可能性があります。例えば、リトルエンディアンのIA-32/64系同士の通信では、エンディアン変換が常に発生します。

XDRの利用



XDRの利便性を高めるため、`rpcgen`というスタブコンパイラが提供されています。`rpcgen`を使用すると、データの整列化(シリアライズ)と非整列化(デシリアライズ)を行うプログラムを自動的に生成できます。

また、XDRは、ファイルシステムや特定のアプリケーションのデータフォーマットとしても使用されます。これにより、データの互換性が保証されます。

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



XDRは、以下のプロトコルやシステムで利用されています。

  • - ONC RPC: XDRはONC RPCの基盤となるデータ表現形式です。
  • - NFS (Network File System): ネットワークファイルシステムNFSでデータ交換に使用されています。
  • - R言語: 統計解析プログラミング言語であるR言語でデータのシリアライズ形式として使用されます。
  • - SpiderMonkey: MozillaのJavaScriptエンジンであるSpiderMonkeyで使用されています。
  • - sFlow: ネットワークモニタリングプロトコルであるsFlowで使用されています。
  • - libvirt: 仮想化管理ツールであるlibvirtで使用されています。

関連項目



  • - ONC RPC: XDRが使用される主要なRPCシステムです。
  • - DCE/NDR: XDRと比較されることのある、別のデータ表現形式です。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。