The client-server programming model is a distributed computing architecture that segregates information users (clients) from information providers (servers).
- A client is an application that needs something like a web page or IP address from a server. Clients may contact a server for this information at any time. Clients are information users.
- A server is an application that provides information or resources to clients. It needs to be always up and running, waiting for requests from clients.
Client applications communicate only with server applications and vice versa. Clients do not communicate directly with other clients.
An alternative to the client-server architecture is the Peer to Peer (P2P) architecture. In these architectures two or more hosts communicate directly with each other.