What is Client-Server Architecture?

The asura Hayagrive performs a penance to ask the goddess Durga for the boon of invincibility.

Much of our digital world depends on a little technique discovered out of necessity in the early days of computing. This paradigm of how digital devices communicate and co-operate, makes the entirety of the internet possible and efficient. So to understand information technology and online content delivery methods, you must understand what client-server architecture is.

Client-Server model diagram

The basics of the client-server model are in the name; It is a system that includes a client and a server, and the client-server model works as a series of transactions between the two. The client initiates the transaction by sending a request to the server, and the server, which is always in a state of readiness to accept requests, responds by providing a service or resource to the client. That is the core principle of the client-server model. In most implementations of client-server architecture, the server is one or a few, and the clients are many. This centralisation of resources and services with the server is the main utility of this paradigm and is how it was first introduced into the digital realm.

Diagram of mainframe connected to multiple dumb terminals.

In the middle of the 20th century, when complex electronic devices first became viable, computers were large, rare and expensive beasts. Even with the advent of transistor technology to replace the old vacuum-tube based circuitry, computers could only be afforded by large number-crunching organisations, and universities that needed them to train a new breed of engineer and scientist. These places often had one computer, with less processing power than your average smart-phone today, occupying an entire climate-controlled room. But the people who needed to access the one computer were many, and so the idea of multiple dumb terminals was invented. These were simple workstations that had little more than a screen and a keyboard, and many of these could be connected to the one main-frame computer so that many users could access its, at the time, staggering processing power. A lone user could rarely throw enough at the processor or work fast enough to keep the computer occupied to its full capacity, so the limited resource was shared. The dumb terminal was a client that requested a response from the singular computer server, and thus the client-server model was born as a practical solution to resource sharing. The resources to be shared included the processing power of the computer and also the storage of data. In the early days magnetic storage, first tape and then disc drives, was centralised. The idea of personal, portable or removable storage mediums, even as seemingly primitive as the floppy disc, were a long way away.

Diagram of client-server transaction between networked mainframes.

It was in this original spirit of sharing limited computing resources, that the idea of networking was born. If a university managed to get two computers, imagine the leap in their computing capabilities if they could get the two beasts to complement each other. The possibilities were astonishing, so connections were made and the client-server architecture was the logical organisation for it. One computer made a request of the other. The computer receiving the request carried out the required action or accessed the requested data and sent a response ending the transaction. It was an elegant solution, if you think about it; Neither computer would be held up by this transaction any longer than was required to send and fulfil the request, and then the processing power could be returned to their other local tasks. Eventually the idea of networking between the precious computing power of universities and government organisations began to follow more organised patterns and universal standardised protocols, and what we call the internet was born of it.

Diagram of client-server transaction in internet browsing.

When you browse the web today, your browser software on your desktop computer or mobile device is the client. In the simplified transaction, for the sake of explanation, you enter a URL into your browser to visit a website. Your browser, the client, connects to the computer that holds the website you want to visit, the server, and sends a request for the website using a standard called the Hyper Text Transfer Protocol (hence http://). The server accepts this request and sends a response to your browser along with the requested data if available. If you entered the right address and the website is live, the server sends the browser the appropriate HTML page and you see the homepage on your screen. If there was an error, the server responds with an error code, such as 404, when it can’t find the page you requested. That, in a nutshell, is the client-server architecture of the world wide web in action.

Diagram of client-server transactions while browsing a dynamic website.

An important point to grasp here is that client and server are not fixed and unchanging entities, but merely the roles played by devices and software during a particular transaction. A device that is a server for one transaction can then switch to being a client in another. To continue with our example of the browser and the web server, when the computer that stores the website receives a request for a page from your browser, it is behaving as a server and responds directly if the page to be displayed is static HTML. However, if the website is a dynamic one, based on a content management system such as WordPress or Drupal, the data is not stored as static HTML files but rather in a database, often located on a separate computer that hosts multiple databases for efficiency. At this point in the transaction the original web server becomes a client and sends a request for data to a MySQL database server. Once the web server receives the requested data from the database server, it reverts to being a server in the original transaction and sends the page to your browser where it is displayed. These client and server modes of a particular device are usually happening concurrently, with multiple transactions in progress, rather than that simplified consecutive way described here, but this should have made the sometimes fluid nature of the client-server relationship clear.

Client-server architecture is not limited to web servers on the internet. It is the standard model of device interaction in a whole range of digital services where resources and transactions are accessed on demand, rather than as a dumb broadcast. The client-server model is how a lot of our technological world works. Understanding it gives you an essential insight into the workings of content management methods, content delivery networks and global digital communication itself.