Client-Server Architecture

The client-server model is the foundational architecture of the modern web, defining how two or more entities interact to exchange information.

1. The Core Relationship

In this model, the workload is partitioned between service providers (servers) and service requesters (clients).

  • Client: Any device or application (Browser, Mobile App, IoT device) that initiates a request for data or service.
  • Server: A high-capacity machine or process that listens for incoming requests and serves the requested resources.

2. The Communication Loop

A typical request-response cycle involves several layers of networking:

DNS Resolution

When a user enters a URL, the client first needs to find the server’s numerical address.

  • DNS (Domain Name System) acts as the phonebook of the internet, mapping domain names (e.g., google.com) to IP Addresses.

Connection & Routing

  • IP Address: Identifies the specific machine on the network.
  • Ports: Identifies the specific process/service on that machine. Common ports:
    • 80: HTTP (Unsecured)
    • 443: HTTPS (Secured)
    • 22: SSH (Remote Access)

Protocols

The rules of engagement for communication:

  • TCP/IP: The underlying transport layer that ensures packets arrive in order.
  • HTTP/HTTPS: The application layer protocol used for web traffic.

3. Design Implications

  • Decoupling: Clients and servers can evolve independently as long as the interface (API) remains consistent.
  • Scalability: Servers can be scaled vertically (more power) or horizontally (more machines) to handle increased load.
  • Centralization: In the pure client-server model, the server is a central point of control, which simplifies management but can create single points of failure.

Source: Client-Server Architecture - Bytemonk Academy Tags: system-design networking architecture