Client–server model

From Wikipedia, the free encyclopedia
  (Redirected from Client–server architecture)
Jump to: navigation, search



Client and server roles[edit]


Servers are classified by the services they provide. For instance, a web server serves web pages and a file server serves computer files. A shared resource may be any of the server computer's software and electronic components, from programs and data to processors and storage devices. The sharing of resources of a server constitute a service.


Client and server communication[edit]


Clients and servers exchange messages in a request-response messaging pattern: The client sends a request, and the server returns a response. This exchange of messages is an example of inter-process communication. To communicate, the computers must have a common language, and they must follow rules so that both the client and the server know what to expect. The language and rules of communication are defined in a communications protocol. All client-server protocols operate in the application layer. The application-layer protocol defines the basic patterns of the dialogue. To formalize the data exchange even further, the server may implement an API (such as a web service).[3] The API is an abstraction layer for such resources as databases and custom software. By restricting communication to a specific content format, it facilitates parsing. By abstracting access, it facilitates cross-platform data exchange.[4]

A server may receive requests from many different clients in a very short period of time. Because the computer can perform a limited number of tasks at any moment, it relies on a scheduling system to prioritize incoming requests from clients in order to accommodate them all in turn. To prevent abuse and maximize uptime, the server's software limits how a client can use the server's resources. Even so, a server is not immune from abuse. A denial of service attack exploits a server's obligation to process requests by bombarding it with requests incessantly. This inhibits the server's ability to respond to legitimate requests.





Early history[edit]

While formulating the client–server model in the 1960s and 1970s, computer scientists at Xerox and Xerox PARC used the terms server-host (or serving host) and user-host (or using-host).[5][6]


Client-host and server-host[edit]



Centralized computing[edit]



As microcomputers decreased in price and increased in power from the 1980s to the late 1990s, many organizations transitioned computation from centralized servers, such as mainframes and minicomputers, to fat clients.[12] This afforded greater, more individualized dominion over computer resources, but complicated information technology management.[10][11][13] During the 2000s, web applications matured enough to rival application software developed for a specific microarchitecture. This maturation, more affordable mass storage, and the advent of service-oriented architecture were among the factors that gave rise to the cloud computing trend of the 2010s.[14]

Comparison with peer-to-peer architecture[edit]

In addition to the client-server model, distributed computing applications often use the peer-to-peer application architecture.

In the client–server model, the server is often designed to be a centralized system that serves many clients. The computing power, memory and storage requirements of a server must be scaled appropriately to the expected work load, i.e. the number of clients connecting simultaneously. Load balancing and failover systems are often employed to scale the server implementation.


See also[edit]


  2. ^ The X Window System is one example.
  3. ^ Benatallah, B.; Casati, F.; Toumani, F. (2004). "Web service conversation modeling: A cornerstone for e-business automation". IEEE Internet Computing 8: 46. doi:10.1109/MIC.2004.1260703. 
  4. ^ Dustdar, S.; Schreiner, W. (2005). "A survey on web services composition". International Journal of Web and Grid Services 1: 1. doi:10.1504/IJWGS.2005.007545. 
  6. ^ Shapiro, Elmer B. (March 1969). Network Timetable. IETF. RFC 4. Retrieved 30 November 2013. 
  7. ^ Sturgis, Howard E.; Mitchell, James George; Israel, Jay E. (1978). Xerox PARC.  Missing or empty |title= (help); |chapter= ignored (help)
  10. ^ a b Nieh, Jason; Novik, Naomi; Yang, S. Jae (December 2005). "A Comparison of Thin-Client Computing Architectures" (PDF). Technical Report CUCS-022-00 (New York: Network Computing Laboratory, Columbia University). Retrieved 30 November 2013. 
  11. ^ a b Tolia, Niraj; Andersen, David G.; Satyanarayanan, M. (March 2006). "Quantifying Interactive User Experience on Thin Clients" (PDF). Computer (IEEE Computer Society) 39 (3). 
  14. ^ Barros, A. P.; Dumas, M. (2006). "The Rise of Web Service Ecosystems". IT Professional 8 (5): 31. doi:10.1109/MITP.2006.123. 
  15. ^ a b Yongsheng, H.; Xiaoyu, T.; Zhongbin, T. (2013). "An Optimization Model for the Interconnection among Peers of the P2P Network". Journal of Applied Sciences 13 (5): 700. doi:10.3923/jas.2013.700.707.