IT用語集 › インフラ › ICE (Inter-Client Exchange)

ICE (Inter-Client Exchange)

インフラ Svenska → 更新: 2026-10-23
詳細情報
開発
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は検索がほぼ不可能になった。

← 用語集に戻る