One of the core principles of software programming is the concept of the Client-Server model. Both the client and server share a key characteristic: they frequently communicate with each other. (In other words, they are quite talkative!)
This blog will explain the concept of clients and servers and their communication mechanisms.
What are Clients and Servers
First, let's discuss the Clients. In daily transactions, clients are individuals who request products or services from a business. In computing, a client can be a piece of hardware or software that requests services from a server. Smartphones, tablets, laptops, and web browsers are examples of the clients.
On the other hand, servers provide services to clients making the request.
In summary, clients initiate requests while servers fulfil them.
How Clients and Servers talk to each other
One effective method to grasp the intricacies of communication between clients and servers is examining a real-world example, such as a transaction between a client and a store. By observing this scenario, we can gain insight into how clients initiate requests and servers respond to them, providing a deeper understanding of the client-server architecture.
Step 1: The client locates the server
When buying an item, say a poster, we need to know the shop we want to visit and its location. The reason is the poster might only be available in a few shops. At the same time, not all these shops are open on the day we visit.
In computing, clients must also locate the appropriate server before requesting data or services. This is because not all servers have the desired information, and some servers may not be configured to receive requests from certain clients. As a result, the client must determine the location of the server that holds the necessary data or services and can receive its request.
The server's location is identified by its IP (Internet Protocol) address and port number. The IP address can be thought of as a building address while a port number is a specific room or department within that building. In order to find the server's location, the client sends a DNS (Domain Name System) query to an entity responsible for returning the IP addresses.
Step 2: The client sends an HTTP request
In the example of buying a poster, once the location of the shop is known, the client, just like in the computing world, must make a request for the specific item they want. The request must be formulated clearly and include all necessary information in order for the salesperson to locate the correct product. Without proper communication and information, the client may not receive the desired item or be turned away.
In computing, once the client has obtained the server's IP address and port number, it will make a request using a protocol called HTTP (Hypertext transfer protocol). However, it is important to note that the request must follow the format and guidelines specified by the HTTP protocol, otherwise it will be rejected. A typical HTTP request consists of three main components: the request method, the requested URL and the request headers. These components provide the necessary information for the server to understand and fulfil the client's request (source Client-Server Overview).
Step 3: The server fulfils the request
In our example of requesting to purchase a poster, once the salesperson receives the request, they will locate the requested poster. If it is in stock, the salesperson will proceed to the checkout process and we will be able to take the poster home. On the other hand, if the poster is not available, the salesperson will inform us accordingly.
The same process applies in the computing world. When the server receives a valid request from step 2 and can fulfil it, it sends a response back to the client. The response comprises a status code, response headers, and a response body. The status code indicates whether the request was successful or not. The response headers contain additional information about the response, such as the type of content and the date it was sent. The response body contains the actual data that the client requested.
Conclusion
The Client-Server model is a fundamental principle of software programming. The model is built around the concept of clients, who initiate requests for services or data, and servers, who provide those services or data. The client's requests follow the HTTP protocol while the server's responses follow their respective response protocol.
Comentários