X Window Systemプロトコルとアーキテクチャ
セレクション (selection)、カットバッファ (cut buffer)、ドラッグ・アンド・ドロップ (drag-and-drop) は、ユーザーがX Window Systemでウィンドウからウィンドウにデータを転送するための機構である。セレクションとカットバッファは一般に、ユーザーがウィンドウ内のテキストなどの何らかのデータを選択し、それを他のウィンドウに貼り付けるのに使われる。ドラッグ・アンド・ドロップは、ユーザーがウィンドウ内の何かを選択し、選択したものの上でマウスをクリックし、それを他のウィンドウにドラッグするという場合に使われる。
2つのウィンドウはそれぞれ独立した別々のアプリケーションが制御しているので、Xサーバに接続された2つのクライアントが相互にやり取りしないとデータ転送できない。
サーバとクライアント間の通信は、ネットワーク経路上でパケットを交換することでなされる。コネクション確立はクライアント側から先にパケットを送ることでなされる。サーバはコネクション確立について受理または拒否のパケットを送り返すか、さらなる認証を求めるパケットを送る。コネクションが受理された場合、受理パケットにはクライアントがその後のサーバとのやり取りで必要とするデータが含まれている。
コネクション確立後、クライアントとサーバの間で以下の4種類のパケットがやり取りされる。
要求 (Request): クライアントがサーバから情報を要求するか、サーバに何らかの実行を要求する。
応答 (Reply): サーバへの要求に対する応答。全ての要求パケットに対して応答パケットが生成されるわけではない。
イベント (Event): サーバがクライアントに対して、キーボードやマウスからの入力、ウィンドウの移動、リサイズ、前面への露出などのイベントを知らせる。
エラー (Error): 要求が不正だった場合、サーバはエラーパケットを送る。要求はキューイングされるので、要求に対するエラーは即座に返ってくるとは限らない。
Xサーバは基本的なサービス群を提供する。クライアントはサーバとのやり取りによって、より複雑な機能を実現する。