Client-server
From Wikipedia, the free encyclopedia
Client server is network architecture which separates a client (often an application that uses a graphical user interface) from a server. Each instance of the client software can send requests to a server. Specific types of servers include web servers, application servers, file servers, terminal servers, and mail servers. While their purposes vary somewhat, the basic architecture remains the same.
Although this idea is applied in a variety of ways, on many different kinds of applications, the easiest example to visualize is the current use of web pages on the internet. For example, if you are reading this article on Wikipedia, your computer and web browser would be considered a client, and the computers, databases, and applications that make up Wikipedia would be considered the server. When your web browser requests a particular article from Wikipedia, the Wikipedia server finds all of the information required to display the article in the Wikipedia database, assembles it into a web page, and sends it back to your web browser for you to look at.
Characteristics of a server:
- Passive (slave)
- Waits for requests
- Upon receipt of requests, processes them and then serves replies
Characteristics of a client:
- Active (master)
- Sends requests
- Waits for and receives server replies
Servers can be stateless or stateful. A stateless server does not keep any information between requests. A stateful server can remember information between requests. The scope of this information can be global or session-specific. An HTTP server for static HTML pages is an example of a stateless server while Apache Tomcat is an example of a stateful server.
The interaction between client and server is often described using sequence diagrams. Sequence diagrams are standardized in the UML.
Another type of network architecture is known as a peer-to-peer architecture because each node or instance of the program is both a "client" and a "server" and each has equivalent responsibilities. Both architectures are in wide use.
Contents |
[edit] Tiered architecture
A generic client/server architecture has two types of nodes on the network: clients and servers. As a result, these generic architectures are sometimes referred to as "two-tier" architectures.
Some networks will consist of three different kinds of nodes: client, application servers which process data for the clients, and database servers which store data for the application servers. This configuration is called a three-tier architecture.
The advantage of an n-tier architecture compared with a two-tier architecture (or a three-tier with a two-tier) is that it separates out the processing that occurs to better balance the load on the different servers; it is more scalable. The disadvantages of n-tier architectures are:
- It puts more load on the network.
- It is much more difficult to program and test software than in two-tier architecture because more devices have to communicate to complete a user's transaction.
[edit] Advantages
- All the data are stored at the servers, so it has better security control ability. The server can control access and resource to make sure only let those permitted users access and change data.
- It is more flexible than P2P paradigm. If a server in C/S paradigm wants to update the data or other resources.
- There are already many matured technologies designed for C/S paradigm which ensures security, the user-friendliness of the interface, and ease of use.
- Any element of a C/S network can be easily upgraded.
[edit] Disadvantages
- Traffic congestion has always been a problem since the first day of the birth of C/S paradigm. When a large number of clients send requests to the same server at the same time, it might cause a lot of troubles for the server. The more clients there are the more troubles it has. Whereas, P2P network’s bandwidth is made up of every node in the network, the more nodes there are, the better bandwidth it has.
- C/S paradigm does not have as good robustness as P2P network has. When the server is down, clients’ requests cannot be fulfilled. In most of P2P networks, resources are usually located on nodes all over the network. Even if one or a few nodes depart or abandon the downloading; other nodes can still finish the downloading by getting data from the rest of the nodes in the network.
- The software and hardware of a server is usually very strict. A regular personal computer‘s hardware may not be able to serve over a certain amount of clients. Meanwhile, a Windows XP home edition does not even have IIS to work as a server. It needs specific software and hardware to fulfill the job. Of course, it will increase the cost.
[edit] Addressing
Methods of addressing in client server environments can be described as follows
- Machine process addressing; where the address is divided up as follows process@machine. Therefore 56@453 would indicate the process 56 on computer 453
- Name Server; Name servers have an index of all names and addresses of servers in the relevant domain.
- Localization packets; Broadcast messages are sent out to all computers in the distributed system to determine the address of the destination computer
- Trader; A trader is a system that indexes all the services available in a distributed system. A computer requiring a particular service will check with the trading service for the address of a computer providing such a service.
[edit] Examples
Visiting a web site is a good example of Client-Server architecture. The web server serves the webpages to the web browser. Most Internet services are types of servers. Some examples are file servers, DNSs, printer servers, etc.