In a separate article, the author has explained the general concepts and the architecture of a client-server network. Essentially, whenever a collection of clients work with one or more servers to obtain a service, the combination is a client server network. The clients communicate one to one with the server(s). Any kind of connection that facilitates this communication will suffice. For example, one could connect clients to the serial ports of the server or the clients can communicate with servers over Ethernet in a LAN (Local Area Network) configuration. It can be as distributed as a browser in a client machine communicating with a far away web server to view a web site.
The Buzz Words
It always helps to get a understanding of the buzz words in use. This article is an attempt to discuss the most common meaning attached to the top few definitions and terminology in the client-server networking context. The very first term that needs to be understood is the term Client.
In the most basic form, a client machine needs to allow user inputs that will be conveyed to servers. It must have the capability to send these queries to the server, get a response back and be able to display the results. The most basic client then can be just a terminal connected in a serial port to a server. However, what you need is a client machine that can do a little more. It should be able to connect over the LAN at a minimum.
If you assume these basic network communication capabilities, you are looking at a PC with just the networking capability, for example. These have come to be known as the Thin Clients. In a sense one can simply have these thin clients by the millions hooked onto a network that has many powerful servers and provide IT services. This is a scenario many have envisioned. The vision is yet to be fulfilled. Most machines on a corporate LAN are regular PCs. Users prefer reasonably high processing power and other resources, such as storage, locally. These are called thick clients when they connect to a server for services.
A server is a powerful machine that can service requests from several machines simultaneously and provide a service. There’s a whole range of services one can think of that can be configured through these servers. Print Servers provide print services for clients, Fax servers provide fax receive/transmit services, File Servers provide central, managed file services, Application Servers make software applications available to multiple users. A Proxy Server provides Internet access services to your clients on the corporate network. It is the browser clients that communicate and get access to the web servers (via the proxy server) of specific sites you need to visit.
The application servers are a class by themselves. The simultaneous multiple use can be managed for a whole range of simple to complex software applications. They can be a simple timesheet application or as sophisticated an application as a database management system or even a customer relationship management (CRM) application. How much of the application should be handled by the client and how the server handles them are crucial issues in determining the architecture of the application server and client application. How these software applications are designed and developed is a topic in itself and will not be discussed here.
What we have discussed so far here is the two tier client server architecture. The scenario is such that clients directly communicate with the servers. The clients and the servers in the network form the two tiers of the network. Quite often it may be advantageous to introduce a Middleware. Clients communicate their requests to this middleware and the requests then get passed on to the real server on the backend. The middleware manages the transactions between the clients and the servers. The architecture that includes a middleware is called Three Tier Architecture.
Client-Server vs. Peer to Peer
An alternate network topology is where each node in a network is a peer or equal of others. When such peers connect together in a network it is a Peer to Peer or P2P network. Each node in such a network then can share things equally. But that could be a recipe for problems in a corporate scenario where keeping data, files, and resources up to date and non-duplicated is of prime concern. Equal and unrestricted sharing could lead to security issues, too.
On the other hand, data being centrally located is easier to administer, to enforce security policies, etc. Update, back up, version control, and so forth is easily done. Data updates on P2P may mean updating a large number of nodes. Communication bandwidth can soon become a limitation as the number of clients increase in a client server network. P2P networks can handle that much better and can even take up where one peer might have failed in sending out data to another one.