Chapitre 6.4Clients et serveurs

Comment le contenu arrive jusqu'à ton navigateur.

1 minute de lecture

On sait maintenant que des machines forment des réseaux et qu'elles s'entendent grâce à des protocoles. Reste à savoir qui parle à qui. Dans la quasi-totalité des échanges, l'un demande et l'autre répond. C'est le modèle client-serveur, et il gouverne à peu près tout ce que tu fais en ligne.

L'analogie du restaurant

Imagine-toi en tant que client dans un restaurant 3 étoiles. C'est tellement chic que tu as à disposition un serveur qui peut te conseiller sur le plat, un autre sur le dessert, un troisième sur les vins... Chacun t'apporte un service différent. Ils sont entraînés pour répondre à toutes sortes de requêtes : "je veux un plat sans gluten", "on peut avoir du pain"...

Les serveurs ont tous leur mode de communication et leur vocabulaire. Rosé, pour l'un, fait allusion au vin, alors que l'autre pensera à une cuisson de canard.

Le serveur, un logiciel qui attend

Dans le monde informatique, c'est tout pareil.

Concrètement, un serveur informatique est un logiciel qui tourne en continu sur une machine. Cette machine, tu ne la verras jamais, elle est louée dans un bâtiment quelque part, chez un hébergeur ou un fournisseur de cloud. Dans le langage courant, on utilise indistinctement le mot serveur pour désigner soit le logiciel, soit la machine, soit même le bâtiment entier. Quand on t'annonce que "le serveur est tombé", la première question à poser est donc lequel, un programme qui redémarre en dix secondes ou un centre de données privé de courant.

Le serveur est en permanence à l'écoute d'une requête entrante pour assurer un service de qualité à ses clients.

Il y a des serveurs dédiés pour chaque service : les sites web, les emails, le transfert de fichiers... Chacun a son propre vocabulaire et sa façon d'organiser ses communications, autrement dit son propre protocole.

Le client, le logiciel qui demande

Pour charger un site web, il faut donc dialoguer avec un serveur web en respectant son protocole. Les serveurs web communiquent en utilisant les protocoles HTTP et HTTPS.

De base, ton ordinateur n'a aucune idée de comment faire ça, il faut installer un logiciel dédié. C'est ce logiciel capable de communiquer avec le serveur en suivant le protocole qu'on appelle "client".

Des clients qui savent parler à des serveurs web, tu en utilises tous les jours : les navigateurs web. Chrome, Safari, Firefox, Opera, Edge... ce sont tous des clients HTTP, capables d'interpréter la réponse d'un serveur HTTP et d'en faire une page lisible.

Une même machine peut d'ailleurs jouer les deux rôles. Un serveur web qui va chercher des informations dans une base de données est serveur pour ton navigateur, et client pour la base de données. Ce sont des rôles dans une conversation, pas des catégories de machines.

Les rôles s'inversent même parfois en cours de route. Quand un prestataire de paiement prévient ton site qu'un virement est arrivé, c'est lui qui appelle et ton serveur qui répond. Nous verrons ces webhooks et les connexions permanentes dans les chapitres sur la communication asynchrone et le temps réel. Le modèle reste le même, c'est juste que chacun est client à son tour.

Dernier point, et il change beaucoup de choses. Un serveur ne répond pas à un client mais à des milliers, parfois en même temps. Quand une seule machine n'y suffit plus, on en met plusieurs derrière une même adresse, et c'est le répartiteur de charge qui distribue le travail entre elles.

Ce modèle n'est pas le seul. Dans un réseau pair à pair (peer to peer), chaque machine est à la fois client et serveur des autres, sans point central. C'est le principe du BitTorrent, et une partie de ce qui fait tenir le dark web.

PrécédentFrameworks et bibliothèques Tous les chapitres