The
client–server model of computing is a
distributed application structure that partitions tasks or workloads between the providers of a resource or service, called
servers, and service requesters, called
clients. Often clients and servers communicate over a
computer network on separate hardware, but both client and server may reside in the same system. A server host runs one or more server programs which share their resources with clients. A client does not share any of its resources, but requests a server's content or service function. Clients therefore initiate communication sessions with servers which await incoming requests.