# A Bit History of Internet/Chapter 5 : Client-Server
## Client-Server Paradigm/Introduction

A client-server model is defined as the relationship between two computer programs that communicates with each other. The clients initiate the communication by sending service requests to the servers. They are typically personal computer with network software applications installed. Mobile device can also be function as a client. Servers are usually devices with files and databases stored inside, including complex applications like web sites. They have higher-powered central processors, larger disk drives and more memory compare to the client. The server will fulfil the request of the client by sharing resources with the clients while the client does not have any processing capability. This client-server model often happened over a network of computers. However, it can happen within a single computer too.
The client-server model can be found in functions such as email exchange, web access and database access. A web browser is actually a client. It runs software locally that processes information received from the web server. In a typical client-server model, one server is activated and it will wait for the client requests. Multiple client programs share the service of the same server program. They are often part of a larger application. The Internet's main program, TCP/IP (Transmission Control Protocol/Internet Protocol) is also built based on client-server model. The TCP/IP allow user to make client requests for FTP (File Transfer Protocol) servers.
The client-server architecture helps to reduce network traffic by providing a query response. It does not provide total file transfer. There are two type of the client-server architecture, which are the two tiers architecture and the three tier architectures. As for the two tier client-server architecture, the user interface is stored in the client while the data are stored in the server. Information processing is separated between the user interface environment and the data management server environment. In the three tiers client-server architecture, middleware is used between user interface environment and the data management server environment. This helps to overcome the drawback of the two tiers client-server architecture. It improves the performance when there are a large number of users. It also improves in flexibility as compare to the two tier approach. However, its development environment is more difficult to use than the development of the two tier’s application.

## Client and Server Programs/architectures

A client program is a program running on one end system (host) that requests and receives a service from a server program running on another end system. The client-server model includes Web, e-mail, file transfer remote login, and many other popular applications. Client-server internet applications are defined as distributed applications since a client program typically runs on one computer and the server program runs on another computer.
The client program and server program interact by sending messages to each other over the internet. At this level of abstraction, the routers, links and other nuts and bolts of the internet serve as a black box that transfers messages between the distributed of an internet application.
In client-server architecture, the server is an always-on host and the clients host can be either always-on or sometimes-on. The Web is a classic example of an always-on host. In the client-server architecture, clients do not communicate directly with each other. For instance, two browsers do not directly communicate. Besides that, because a server is an always-on host, a client can always contact the server by sending a packet to the server’s address.
A single server host isn't capable of keeping up with all the requests from clients; the server will quickly become overwhelmed if it is only one or two servers that handle all of the requests. To solve this problem, data intensive is often used to create a powerful virtual server in server-client architectures (application base on client-server are often infrastructure intensive, that means they require the service provider to purchase, install and maintain server farms). The service providers need to pay a cost for an interconnection and bandwidth cost for sending and receiving data and infrastructure intensive. For example, a popular service like Facebook is infrastructure intensive and is costly to provide.
However, not all of the internet consists of pure client programs interacting with pure server programs. Two predominant architecture paradigms are used in modern network applications, client-server and peer-to-peer (P2P). Different from client-server, P2P is direct communication between pairs of intermittently connected hosts. Some examples include internet calling (e.g.Skype), file distribution (e.g.BitTorrent), file sharing (e.g.eMule) and IPTV (e.gPPLive).

## Client/Server Evolution

A long time ago, client-server computing was just using mainframes and connecting to dumb terminals. Through the years, personal computers started to evolve and replaced these terminals but the processing is still done on the mainframes. With the improvement in computer technology, the processing demands started to split between personal computers and mainframes.
The term client-server refers to a software architecture model consisting of two parts, client systems and server systems. These two components can interact and form a network that connect multiple users. Using this technology, PCs are able to communicate with each other on a network. These networks were based on file sharing architecture, where the PC downloads files from corresponding file server and the application is running locally using the data received. However, the shared usage and the volume of data to be transferred must be low to run the system well.
As the networks grew, the limitations of file sharing architectures become the obstacles in the client-server system. This problem is solved by replaced the file server with a database server. Instead of transmitting and saving the file to the client, database server executes request for data and return the result sets to the client. In the results, this architecture decreases the network traffic, allowing multiple users to update data at the same time.
Typically either Structured Query Language (SQL) or Remote Procedure Calls (RPCs) are used to communicate between the client and server. There are several types of client-server architecture. One of the architecture is the Two Tier Architecture, where a client is directly connected to a server. This architecture has a good application development speed and work well in homogeneous environments when the user population work is small. The problem exists in this architecture is the distribution of application logic and processing in this model. If the application logic is distributed to dozens of client systems, the application maintenance will be very difficult. To overcome the limitations of the Two-Tied Architecture, Three Tier Architecture is introduced. By introducing the middle tier, clients connect only to the application server instead of connect directly to the data server. By this way, the load of maintaining the connection is removed. The database server is able to manage the storage and retrieve the data well. Thus, the application logic and processing can be handled in any application systematically.To enhance the Three Tier Architecture, it can be extended to N-tiers when the middle tier provides connections to various types of services, integrating and coupling them to the client, and to each other.For example , web server is added to Three Tier Architecture to become Four Tier Architecture where the web server handle the connection between application server and the client.Therefore ,more users can be handled at the same time.

## Server Farm

A server farm or server cluster is a group of computers acting as server that is kept in a single location. When demands are increase on a computer server, it may be difficult or impossible to handle with just only one server. Hence, server farm is being used. With server farm, workload is distributed among multiple server components, providing for expedited computing processes. Server farms were most frequently used by institutions that were academic/ research- based or big companies. However, since computers and companies have become more main stream, server farm is now being used in many companies regardless of the companies’ size or demand.
A server farm perform services as providing centralized access control, file access, printer sharing, and backup for workstation users. The servers may have individual operating systems or a shared operating system and may also be set up to provide load balancing when there are many server requests.
In a server farm, there are usually a primary and a backup server. These two servers might be given the same task to perform. Hence, if one server fails, the other server can act as backup. This is to maintain server functionality while preventing the server from going offline if a problem were to occur. Usually, a server farm will have network switches and routers, these devices allow different parts of the server farm to communicate. All these computers, router, power supplies and all the others components are typically mounted on a 19-inch rack in a server room.
The performance of a server farm is not evaluated by the performance of the processors. A server farm performance is actually limited by the server room’s cooling system and the cost of electricity. Due to its large consumption of electricity, the design parameter for a server farm is usually based on performance per watt. For those on a 24/7 run system, power saving features is more important in order to make sure that the system is able to shut down some parts according to demand. Thus, the service will not be interrupted while the system can save more power.

## Examples

There are many examples of the Client-Server Model. In this chapter, we will discuss on the interface, internet, banking account and data processing system.
Firstly, we will discuss about the interface. Interface is a concept where components interact between each other. A component is then able to function independently while using interfaces to communicate with other components via an input/output system and an associated protocol.
The internet is also an example of a client server. On the internet, we are the clients and requests are sent by us to the server. The internet which is the server will then search for the subject and then provide us with options. Hence, the internet, or also known as the World Wide Web is actually a huge collection of servers that responds to various types of clients. The information that is available on the web server can be access by many different clients.
The process of checking account balance in a bank using online banking system is another example of a client-server program. The client program in the computer will send service request to the server of the bank. The program may also forward the request to its own database client program which sends the request to the server database of another bank in order to get the information. The information is then sent back to the bank’s data client and return back to the client program of the computer which display the account balance to the user.
Data processing is another application that implements the client-server model. When copying a file from another computer, a client is used to access the file on the server. In other words, the server serves data to the client.

## References

* ↑ Sullivan, J. (2000). Definition::Client/Server. In TechTarget. Retrieved November 10, 2011, from http://searchnetworking.techtarget.com/definition/client-server
* ↑ Types of Client Server Architecture? (2011,, November 10). In Answer.com. Retrieved November 10, 2011, from http://wiki.answers.com/Q/Types_of_client_server_architecture
* ↑ Ross, K. (2010). Networking: A Top-down Approach, Fifth Edition
* ↑ Andykramek ( 2008, September 29). Introduction to Client Server Architecture. Retrieved November 15, 2011, from http://weblogs.foxite.com/andykramek/archive/2008/09/29/6935.aspx
* ↑ David Raney(2009).The Evolution of Client/Server Computing. Retrieved November 15, 2011, from http://cis.cuyamaca.net/draney/214/web_server/client.htm
* ↑ Server Farm (2011, November 23). In Server Farm Org. Retrieved November 23, 2011, from http://serverfarm.org/
* ↑ Definition:: Server Farm (2011, November 23). In TechTarget. Retrieved November 23, 2011, from http://searchcio-midmarket.techtarget.com/definition/server-farm
* ↑ What is a Server Farm? (2011, November 23). In WiseGeek. Retrieved November 23, 2011, from http://www.wisegeek.com/what-is-a-server-farm.htm
* ↑ Server Farm (2011, November 23). In Wikipedia, The Free Encyclopedia. Retrieved November 23, 2011, from http://en.wikipedia.org/wiki/Server_farm
* ↑ Mitchell, B. Client (2011) Server Model:: What is Client Server Network Technology. In About.com. Retrieved November 23, 2011, from http://compnetworking.about.com/od/basicnetworkingfaqs/a/client-server.htm
* ↑ Greer, J. D. (1995-1996) Client/Server, the internet and WWW. In Robelle Solutions Technology Inc. Retrieved November 23, 2011, from http://www.robelle.com/www-paper/paper.html
* ↑ Client Server Model (2011, November 10). In Wikipedia, The Free Encyclopedia. Retrieved November 10, 2011, from http://en.wikipedia.org/wiki/Client%E2%80%93server_model