The X-Windows system is portable for one reason:
The designers separated the <#1653#> display<#1653#> functionality from the
<#1654#> application<#1654#> functionality.
They did this by constructing a standard protocol, (a set of
rules, and format for records exchanged according to those rules),
that allows application programs to talk to the display process.
The display process (of which there is one for each physical display attached
to a machine) is called the <#1655#> Server<#1655#>, while the application programs
are <#1656#> Clients<#1656#>.
You can have lots of application programs. Each application program
can have 0, 1 or more <#1657#> Windows<#1657#>, which may or may not be visible
at once on the screen.
One handy consequence of this design is that a client can talk to a
display server on a different machine (or indeed several machines!).
The most common client program is a <#1658#> terminal emulation<#1658#> window -
usually the <#1659#> xterm<#1659#> application, which is normally running a shell
(Unix command interpreter) for you, but can run anything else that
does terminal I/O.
Note Bene: <#1660#> The model of client and server is the reverse of that
you may be used to in distributed systems: In a distributed file
system, you workstation is a client, and the server-under-the-stairs
with lots of discs is the server. In a networked windowing
system, the large machine in the basement with lots of CPU cycles is
the client, and you workstation (display) is the server.<#1660#>