X Window System コアプロトコル
Channel: 宇宙のすべての知識 プリンシピア
Date: 06/09/2021

X Window System コアプロトコル, by Wikipedia https://ja.wikipedia.org/wiki?curid=1315743 / CC BY SA 3.0

#X_Window_System
X Window System ロゴ X Window System コアプロトコル（英: X Window System core protocol）とは、X Window Systemの基本プロトコルである。
X Window System はビットマップ・ディスプレイのためのネットワーク型ウィンドウシステムであり、UNIX系などのオペレーティングシステムのグラフィカルユーザインタフェースの基盤となっている。
X Window System はクライアントサーバモデルに基づき、サーバがディスプレイやキーボード/マウスといった入出力ハードウェアを制御する。
アプリケーションプログラムは全てクライアントとして動作し、サーバ経由でユーザーや他のクライアントとやり取りする。
このやり取りを規定するのが X Window System コアプロトコルである。
他にも X Window System に関連したプロトコルはあるが、それらには X Window System コアプロトコル上に構築されたものと全く別個のものがある。
Xコアプロトコルと呼ばれることもある。
 X Window System コアプロトコルでは、パケットは要求（Request）、応答（Reply）、イベント（Event）、エラー（Error）の4種類しかなく、非同期にネットワーク上を転送される。
要求パケットはクライアントからサーバに何らかの操作を依頼し（例えば、新たなウィンドウの生成）、結果としてデータを返してもらうものである。
応答パケットは、そのようなデータをサーバからクライアントに返すためにある。
イベントパケットは、サーバからクライアントにユーザーの操作やその他の事象の発生を知らせる。
エラーパケットは、サーバからクライアントに対して、要求パケットの内容を処理しているときにエラーが発生したことを知らせる。
要求パケットによって、応答パケット、イベントパケット、エラーパケットが生成される可能性がある。
しかし、それ以外ではプロトコル上はパケットの送受信の順序は指定されていない。
コアプロトコルへの拡張がいくつか存在し、それぞれに固有の要求/応答/イベント/エラーパケットが定義されている。
 X は1984年、マサチューセッツ工科大学（MIT）で生まれた（2006年現在のリリース X11 は 1987年9月に登場）。
設計者 Bob Scheifler と Jim Gettys は設計にあたっての原則として、コアプロトコルは「機構を生成するものであって、ポリシーを生成するものではない」とした。
結果として、コアプロトコルにはクライアント間やクライアントとユーザー間のやり取りが具体的には示されていない。
これらのやり取りに関する規定は別途行う必要があり、ICCCM や freedesktop.org の仕様が作成された。
また、特定のウィジェット・ツールキットを使うことで必然的にやり取りが規定される。
 サーバとクライアント間の通信は、伝送路上でパケットを交換することでなされる。
コネクションはクライアントが確立する（クライアントの起動についてはプロトコル上規定されていない）。
クライアントは最初のパケットを送信する。
これには、使用するエンディアン、プロトコルのバージョン、クライアントがサーバに期待する認証方式が指定されている。
サーバは、コネクションを受け付けるか否かを示した応答パケットを送り返すか、認証のためのパケットを送る。
コネクションが受け付けられる場合、その後のやり取りでクライアントが使うべきデータを格納したパケットが送られる。
 クライアントとサーバのやり取りの例 コネクションが確立すると、クライアントとサーバ間で以下の四種類のパケットが交換される。
 要求（Request）: クライアントがサーバから情報を要求するか、サーバに何らかの実行を要求する。
 応答（Reply）: サーバへの要求に対する応答。
全ての要求パケットに対して応答パケットが生成されるわけではない。
 イベント（Event）: サーバがクライアントに対して、キーボードやマウスからの入力、ウィンドウの移動、リサイズ、前面への露出などのイベントを知らせる。
 エラー（Error）: 要求が不正だった場合、サーバはエラーパケットを送る。
要求はキューイングされるので、要求に対するエラーは即座に返ってくるとは限らない。
 要求パケットと応答パケットは...