X Window Systemプロトコルとアーキテクチャ
Xはクライアントサーバモデルに基づいている。「Xサーバ」プログラムはグラフィックディスプレイのあるコンピュータ上で動作し、各種「クライアントプログラム」と通信する。サーバはグラフィカルな出力(ウィンドウ)の要求を受け付け、(キーボードやマウスの)ユーザー入力をクライアントに送信する。
Xでは、サーバがユーザーの使っているマシン上で動作し、クライアントは他のマシンでも動作できる。これは一般的なクライアントサーバモデル(「クライアント」がユーザーのコンピュータ上で、「サーバ」が遠隔のコンピュータ上で動作する)とは逆であり、Xを新たに使おうとする人は、この逆転に戸惑うことが多い。Xの用語はエンドユーザーやハードウェアよりもプログラムの観点を採用している。遠隔にあるプログラムはローカルなマシン上で動作するXサーバのディスプレイと接続し、クライアントとして機能する。ローカルなXディスプレイは入っているトラフィックを受け付けるので、サーバとして機能する。
サーバとクライアント間の通信プロトコルは透過性を実現している。クライアントとサーバは同じマシン上でも動作できるし、異なったマシン上でも動作できる。それらマシンのアーキテクチャやオペレーティングシステムの差異は問題にならない。クライアントとサーバ間の通信をインターネット上で行う場合、暗号化されたコネクション上でトンネリングすることでコンピュータセキュリティを確保できる。
Xサーバは単純だが拡張可能となるよう設計された。そのため、プロトコルに対して様々な機能拡張がなされている。
プロトコルレベルでは、拡張は要求/イベント/エラーのパケットの新たな型として認識される。クライアントのアプリケーションは拡張ライブラリを通して拡張機能にアクセスできる。Xサーバ実装への拡張の追加は、サーバがモジュール設計になっていないため、難しいと言われている。XCBプロジェクトの長期目標の一つとして、XMLによるプロトコル記述から拡張機能のクライアント側とサーバ側のコードを自動生成するというものがある。
以下は、これまで開発された拡張の一部である。