A common form of distributed system
in which software is split between server
tasks and client
tasks. A client sends requests to a server, according to some protocol
, asking for information or action, and the server responds.
This is analogous to a customer (client) who sends an order (request) on an order form to a supplier (server) who despatches the goods and an invoice (response). The order form and invoice are part of the "protocol" used to communicate in this case.
There may be either one centralised server or several distributed ones. This model allows clients and servers to be placed independently on nodes
in a network
, possibly on different hardware
and operating systems
appropriate to their function, e.g. fast server/cheap client.
Examples are the name-server/name-resolver relationship in DNS
, the file-server/file-client relationship in NFS
and the screen server/client application split in the X Window System
["The Essential Client/Server Survival Guide", 2nd edition, 1996].