Client/Server Definition

The client/server model is an architecture (i.e., a system design) that divides processing between clients and servers that can run on the same computer or, more commonly, on different computers on the same network. It is a major element of modern operating system and network design.

A server is a a program, or the computer on which that program runs, that provides a specific kind of service to clients. A major feature of servers is that they can provide their services to large numbers of clients simultaneously.

The client is usually a program that provides the user interface, also referred to as the front end, typically a GUI (graphical user interface), and performs some or all of the processing on requests it makes to the server, which maintains the data and processes the requests.

The client/server model has some important advantages that have resulted in it becoming the dominant type of network architecture. One is that it is highly efficient in that it allows many users at dispersed locations to share resources, such as a web site, a database, files or a printer. Another is that it is highly (and very easily) scalable, from a single computer to thousands of computers.

An example is a web server, which stores files related to web sites and serves (i.e., sends) them across the Internet to clients (i.e., web browsers) when requested by users. By far the most popular web server is Apache, a free program which is claimed to host more than 68 percent of all web sites on the Internet.

The X Window System, the dominant system for managing GUIs on Linux and other Unix-like operating systems, is unusual in that the server resides on the local computer (i.e., on the computer used directly by the user) instead of on a remote machine (i.e., a separate computer anywhere on the network) while the client can be on either the local machine or a remote machine. However, as is always true with the client/server model, the ordinary user does not interact directly with the server, but in this case interacts directly with the desktop environments (e.g., KDE and Gnome) that run on top of the X server and other clients.

The client/server model is referred to as a two-tiered architecture. Three-tiered architectures, which are widely employed by enterprises and other large organizations, add an additional layer, known as a database server. Even more complex multi-tier architectures can be designed which include additional distinct services.

Others network models include master/slave and peer-to-peer. In the former, one program is in charge of all the other programs. In the latter, each instance of a program is both a client and a server, and each has equivalent functionality and responsibilities, including the ability to initiate transactions.

Created November 26, 2005.
Copyright © 2005 The Linux Information Project. All Rights Reserved.