Leçon 2 / 8
Leçon 02 · Partie 1 — Les fondations

Client et serveur

Le Web, c'est une conversation

Chaque fois que tu visites une page web, une conversation a lieu entre deux protagonistes : le client et le serveur. Cette conversation suit toujours le même schéma : le client demande, le serveur répond.

💡

Analogie : C'est exactement comme au restaurant. Toi = le client. Le serveur (oui, c'est le même mot !) prend ta commande, va en cuisine, et revient avec le plat. La cuisine ne sort rien d'elle-même : elle attend qu'on lui demande quelque chose.

Le client : toi, ton navigateur

Le client, c'est l'appareil et le logiciel qui initient la demande. Dans le contexte du Web, c'est presque toujours ton navigateur (Chrome, Firefox, Safari…).

Mais un client peut aussi être :

  • Une application mobile (Instagram, Spotify…)
  • Un script automatisé (crawler, bot)
  • Un autre serveur qui appelle une API

Ce qui définit un client : il initie la connexion et formule une requête.

Le serveur : la machine qui répond

Le serveur est un ordinateur (souvent dans un data center) qui attend des requêtes. Il tourne 24h/24, et dès qu'un client lui parle, il répond.

Un serveur, c'est physiquement une machine ordinaire — mais configurée pour :

  • Être accessible depuis Internet (adresse IP publique)
  • Tourner en permanence (haute disponibilité)
  • Gérer des milliers de connexions simultanées

Ton ordinateur peut être un serveur ! Si tu installes un logiciel serveur web (comme Apache ou Nginx), d'autres machines peuvent se connecter à toi. C'est comme ça qu'on développe en local.

Le cycle requête / réponse

Voici ce qui se passe quand tu tapes https://monminilab.fr dans ton navigateur :

// Cycle complet d'une requête web

CLIENT (ton navigateur)              SERVEUR (monminilab.fr)

  1. Résolution DNS ──────────────────▶ "Quelle est l'IP de monminilab.fr ?"
                    ◀────────────────── "C'est 104.21.42.100"

  2. Connexion TCP ──────────────────▶ Handshake (poignée de main)
                   ◀────────────────── Connexion établie ✓

  3. Requête HTTP ───────────────────▶ GET / HTTP/1.1
                                       Host: monminilab.fr

  4. Réponse HTTP ◀─────────────────── HTTP/1.1 200 OK
                                       Content-Type: text/html
                                       [page HTML...]

  5. Rendu ──── Le navigateur lit le HTML et affiche la page

Ce cycle complet prend généralement moins de 500 millisecondes. Parfois quelques dizaines de ms pour des serveurs proches de toi.

Un serveur, plusieurs clients simultanés

Un serveur web ne parle pas à un seul client à la fois. Il gère des milliers de connexions simultanées. Quand tu visites Google, des millions d'autres personnes font la même chose en même temps — et les serveurs de Google répondent à tout le monde.

// Un serveur, N clients en parallèle

  Utilisateur A ──▶ ┌─────────────┐
  Utilisateur B ──▶ │    Serveur  │ ──▶ Traite chaque requête
  Utilisateur C ──▶ │   web (ex:  │      et répond en parallèle
  Utilisateur D ──▶ │    Nginx)   │
  ...           ──▶ └─────────────┘

Les types de serveurs web courants

Nginx
Très performant, idéal pour servir des fichiers statiques et comme reverse proxy. Le plus utilisé au monde.
Apache
Le pionnier (1995). Très configurable. Encore très répandu, surtout pour PHP.
Caddy
Moderne, HTTPS automatique par défaut. Configuration simple.

Client-serveur vs peer-to-peer

Le modèle client-serveur n'est pas le seul possible. Dans un réseau peer-to-peer (P2P), chaque machine est à la fois client et serveur. BitTorrent fonctionne comme ça : tu télécharges (client) et tu distribues (serveur) en même temps.

Le Web utilise principalement le modèle client-serveur — centralisé, prévisible, plus facile à sécuriser.

// À retenir
  • Le client initie la requête (ton navigateur). Le serveur répond (machine dans un data center).
  • Chaque visite de page = au moins une requête HTTP + une réponse HTTP.
  • Ce cycle prend quelques dizaines à quelques centaines de millisecondes.
  • Un serveur gère des milliers de connexions simultanées.
  • Nginx et Apache sont les logiciels serveur web les plus courants.