ICE (Inter-Client Exchange)
詳細情報
- 開発
- Bob Scheifler、Jordan Brown(X Consortium)
- 公開
- 1994年(X11R6)
- 種別
- プロトコルとライブラリ(libICE)
- 仕様
- Inter-Client Exchange Protocol
Xサーバーを介さずに互いに通信したいXプログラムのための、X11R6の汎用トランスポート。XSMPやKDEのDCOPの土台として知られる。
Xプロトコルのチャネルはクライアントからサーバーへの一本だけなので、2つのプログラムが直接会話したければ、毎回独自の方法を考案するしかなかった。Bob ScheiflerとJordan Brownは、これを終わらせるために1994年のX11R6向けにICEを設計した。通常は/tmp/.ICE-unix/以下のUnixソケットという一本の接続の上で、双方がまずバージョンとバイトオーダーを折衝し、~/.ICEauthorityにあるMIT-MAGIC-COOKIE-1を提示し、その同じ線上で一つ以上のサブプロトコルを開く。各メッセージにはメジャー/マイナーのオペコードと8バイト単位の長さを持つヘッダが付き、複数のプロトコルが互いに干渉せず接続を共有できる。
最初のサブプロトコルがセッション管理のXSMPで、広く使われたのも結局それだけだった。KDEは2000年にDCOPをlibICEの上に載せ、KDE 4でD-Busに替わるまで使い続けた。ライブラリは、libSMが必要とするという理由が大きいが、今もすべてのX.Orgインストールに含まれている。略語のICEは後にWebRTCがまったく別の意味で再利用したため、本来のICEは検索がほぼ不可能になった。