X can be run over any type of network, including TCP/IP, OSI, and DECnet.
As a contrast, Microsoft Windows is not a client server architecture,
and all windows applications must be executed on the same machine as Windows.
Typically, a user will have multiple clients running on the display at one time.
X clients make requests to the X server (using the X prototcol) whenever they want something done on the display. The request is acted upon by the X Server.
MS Windows applications on the other hand make an API call that usually
results in a call directly to the display device driver.
The X protocol has 4 message types: Requests, Replys, Events, and Errors. These messages are exchanged between X clients and X servers.
Clients always send Requests to the server. The X server send a Reply to Requests that need some information returned to them (such as getting a bitmap from a window).
The X server sends Events to the clients when something has happen that the client should know about (such as input from the keyboard or mouse).
Errors are sent from the X server to the client when something goes wrong (such as the client specified a bad window identifier in a Request).
Hooks are included in the core X protocol for adding extensions. This allows new features to be added to X (on an optional basis), without making any incompatible changes to the X protocol.