Table des matières

Client et serveur web

Définitions

Exemple : sur ma tablette, je consulte Wikipedia, j'envoie ma demande vers wikipdia.fr.

Plusieurs serveurs interviendront dans une telle requête :

  • Un serveur DNS pour trouver l'IP de wikipedia.fr
  • Un serveur sert de point d'entrée sur le réseau local où est hébergé wikipedia.fr. Sur ce réseau local, plusieurs machines et plusieurs serveurs concourent à faire fonctionner le site.

Déroulement d'une requête

  1. Sur le client, l'utilisateur utilise un navigateur web et consulte une page,
    il clique sur un lien vers http://wiki.goupill.fr?id=nsi:start
  2. Le navigateur met à jour la barre d'adresse.
  3. wiki.goupill.fr est identifiée comme les nom de domaine et sous-domaine. Une requête vers le serveur DNS est lancée pour connaître l'adresse IP correspondante.
  4. Le DNS répond 51.91.105.102.
  5. Le client envoie donc un paquet vers 51.91.105.102 en précisant qu'il demande wiki.goupill.fr?id=nsi:start selon le protocole http.
  6. Le paquet est transmis au serveur par tout le réseau IP.
  7. Le serveur, constamment à l'écoute, reçoit le paquet et l'ouvre.
  8. Le serveur interprète en détails l'adresse demandée et en particulier il tient compte de id=nsi:start. Il détermine la réponse qu'il doit faire.
  9. La réponse est une page web. Elle peut venir d'un fichier existant sur le serveur ou plus souvent, elle est fabriquée automatiquement sur demande en rassemblant différents éléments.
  10. Le fichier correspondant à la page est empaqueté et renvoyé au client sur le réseau IP.
  11. Le client est en attente de la réponse. Il reçoit le paquet et l'ouvre.
  12. Le fichier reçu est transmis au navigateur. Comme il s'agit d'un page web, le navigateur sait la prendre en charge et il l'affiche.

Côté client

Pour rester simple, côté client, il n'y a que le navigateur web.

Comme on le verra plus loin, l'utilisation de JavaScript peut avoir une grande importance côté client et changer la nature des échanges client - serveur.

Côté serveur

Ports logiciels

Le système d'exploitation met à disposition des ports logiciels. On peut les penser comme des prises virtuelles. http est par défaut branché sur le port 80 et https sur le port 443.

On peut configurer le serveur pour qu'il écoute sur le port 5000, par exemple, et alors l'adresse pour atteindre le serveur et être entendu de lui serait http://wiki.goupill.fr:5000?id=nsi:start.

Serveur http / https

Une machine ordinaire comme un ordinateur de bureau n'est a priori pas un serveur web. Qu'est-ce qui fait qu'une machine devient un serveur web ?

Il faut installer sur la machine un logiciel dont le rôle est de se mettre à l'écoute sur un certain port (80 pour http) pour capter les requêtes http et y répondre. Une fois que ce logiciel est installé, il faut bien sûr du contenu web pour que le serveur ait quelque chose à répondre aux requêtes.

On trouve deux logiciels principaux :

Un serveur web commercial sera une machine faite pour supporter de nombreuses connexions, être alimentée tout le temps… Mais un simple portable ou même un raspberry pi peut être un serveur web car c'est le logiciel installé qui fait le serveur.

Fonctionnement normal du serveur http

Par exemple, le serveur reçoit la requête http://nom.de.domaine/page.

Son fonctionnement le plus ordinaire sera alors :

Autre fonctionnement

On est libre de programmer / configurer le serveur comme on le souhaite.

Exemple : à la réception de la requête http://nom.de.domaine/page, le serveur fabrique un contenu html automatiquement. Il y place

En fabriquant sa page, le serveur est d'ailleurs libre d'utiliser ses propres données et/ou de demander des données à d'autres serveurs. C'est d'ailleurs ce que font les serveurs Google : suite à une recherche, ils produisent des pages contenant des liens vers d'autres sites et des publicités hébergées par d'autres serveurs…

Requêtes multiples

Le navigateur peut lancer plusieurs requêtes pour une même page.

exemple : vous affichez le fichier truc.html contenant la balise <img src="http://images.net/uneimage.png>. Le fichier image n'est pas contenu dans truc.html.

Le navigateur, au moment d'afficher truc.html va lire la balise <img src="http://images.net/uneimage.png> et automatiquement lancer une requête pour obtenir le fichier image et l'afficher à l'endroit voulu.

Naturellement, le navigateur fait de même pour toutes les autres images et les nombreux fichiers pouvant intervenir dans une page (scripts, images, feuilles de styles, favicon…)