Client et serveur : définitions et interactions

Dans cette nouvelle leçon, nous allons définir ce qu’est un « client » et ce qu’est un « serveur » et allons par la même voir les grandes différences entre les langages dits « client side » et les langages dits « server side ».

 

Le fonctionnement d’Internet et du Web

L’Internet est un système créé pour transporter de l’information. C’est un réseau de réseaux qui utilisent chacun des protocoles (ensemble de règles établies qui définissent comment formater, transmettre et recevoir des données) différents pour envoyer de l’information.

Le World Wide Web, ou plus simplement « Web », est l’un des réseaux de l’Internet. Le Web n’est donc qu’une partie d’Internet.

Plus précisément, le Web est un réseau de machines interconnectées qui stockent des sites. Lorsqu’une machine est connectée au web et fournit un accès à un site web, on l’appelle un serveur car elle « sert » le site web.

Un serveur est une sorte de super ordinateur, fonctionnant 24h/24 et 7j/7 (en théorie), et étant beaucoup plus puissant que nos ordinateurs. Un serveur dispose de certains logiciels spécifiques et son rôle est de stocker toutes sortes de médias composant les sites (fichiers, images, etc.), et de les rendre accessible pour tout utilisateur à n’importe quel moment, où qu’il soit.

Pour pouvoir se comprendre et échanger des données toutes ces machines doivent parler la même langue, c’est-à-dire utiliser le même protocole.

Le Web repose ainsi sur le protocole HTTP, pour HyperText Transfer Protocol (protocole de transfert hypertexte) et sur son frère qui utilise des clefs de cryptage : le HTTPS (Secure HTTP). Pour utiliser ce protocole, nous allons devoir passer par un navigateur web (Chrome, Safari, etc.) qu’on va alors appeler un « client http ».

Pour accéder directement à une page web, on passe ainsi par un navigateur en utilisant le protocole HTTP. On va passer une adresse au format spécial à notre navigateur : une URL pour Uniform Resource Locator ou « localisateur uniforme de ressource » qui sert à identifier une page web de manière unique.

Ici, notre navigateur (et nous) sommes des « clients » puisque nous sommes ceux qui demandons à accéder à la page web.

Le navigateur va alors chercher où se trouve le serveur hébergeant la page demandée. Pour cela il va utiliser un service de DNS (Domain Name Server) qui sont des serveurs permettant d’associer un nom de domaine (pierre-giraud.com par exemple) à une adresse IP unique.

Notez ici que chaque fournisseur de services Internet fournit une liste d’adresses de DNS à contacter. Si le premier DNS ne reconnait pas le site, alors il envoie la demande à d’autres DNS et ainsi de suite jusqu’à ce qu’un DNS possède le site dans sa liste de noms.

L’adresse IP liée au site va alors être renvoyée au serveur. L’IP (Internet Protocol) est une suite de nombres qui permet d’identifier de manière unique une machine connectée à Internet. Chaque machine va posséder sa propre IP qui va changer en fonction du réseau sur lequel elle est connectée (l’IP est attribuée par le fournisseur de services Internet).

Le navigateur possède donc maintenant l’adresse IP de notre site et donc l’adresse de la machine (le fameux « serveur ») sur lequel il est stocké. Il va ainsi pouvoir directement contacter le serveur en utilisant le protocole HTTP pour lui demander de renvoyer la page en question et va également envoyer notre IP pour que le serveur sache à quelle adresse renvoyer la page demandée.

Lorsque le serveur reçoit la requête, il recherche immédiatement le fichier demandé, effectue éventuellement certaines opérations dessus et le renvoie au navigateur ou renvoie un code d’erreur si le fichier demandé est introuvable ou ne peut pas être envoyé.

 

Langages client side et server side

Un site Internet n’est qu’un ensemble de fichiers de codes liés entre eux et faisant éventuellement appel à des ressources ou médias comme des images, etc.

Le code écrit dans ces fichiers, encore appelé « script », va pouvoir être exécuté soit côté client (client-side), c’est-à-dire directement dans le navigateur de l’utilisateur qui cherche à afficher la page, soit du côté du serveur (server-side).

Vous devez bien comprendre ici qu’un navigateur (côté client) et un serveur (côté serveur) ne vont pouvoir chacun effectuer que certaines opérations et lire certains langages.

Pour être tout à fait précis, la grande majorité des navigateurs ne sont capables de comprendre et de n’exécuter que du code HTML, CSS et JavaScript. Un navigateur est ainsi incapable de comprendre du code PHP.

Lorsqu’un navigateur demande à un serveur de lui servir une page, le serveur va donc se charger d’exécuter tout code qui ne serait pas compréhensible par le navigateur (en utilisant au besoin un interpréteur).

Une fois ces opérations effectuées, le serveur va renvoyer le résultat (la page demandée après interprétation) sous forme de code compréhensible par le navigateur, c’est-à-dire principalement en HTML. Le navigateur va alors afficher la page au visiteur. Cette page va être unique puisqu’elle a été générée par le serveur pour un utilisateur spécifiquement et en tenant compte de données particulières.

Si en revanche la page demandée par le visiteur ne contient aucun code nécessitant l’intervention du serveur, alors le serveur va la renvoyer telle quelle au navigateur qui va l’afficher au visiteur.

Notez bien ici que les opérations réalisées côté serveur vont être transparentes pour le visiteur et que celui-ci ne va jamais avoir accès ni pouvoir voir le code exécuté côté serveur tout simplement car une fois les opérations terminées, le serveur ne va renvoyer que du code compréhensible par le navigateur.

C’est la raison pour laquelle lorsque vous analyser le code d’un page, vous ne trouverez jamais d’instructions PHP mais seulement généralement du code HTML, CSS et JavaScript qui sont des langages qui s’exécutent côté client.

Le schéma ci-dessous résume ce qu’il se passe lorsque vous demandez à accéder à une page web via votre navigateur :

Illustration de l'interaction entre client et serveur dans un contexte Web

Laisser un commentaire