Intégration Web – La relation client-serveur et les dialogues

LEÇON

 

Principes de Base

La relation entre le client et le serveur est très simple : le client lance des demandes, le serveur répond.

Petit rappel :

  • Client = la machine/processus qui lance des demandes
  • Serveur = une machine/processus qui répond aux demandes faites par ses clients
  • Le client et le serveur peuvent être deux processus distincts sur la même machine.

Au cœur du concept client-serveur est le dialogue entre les deux processus/machines.

Par un standard pré-établi, le dialogue se fait toujours selon un certain protocole. Dans le cas de navigation sur le web, on parle de HTTP (Hypertext Transfer Protocol). Voici la signification donc des caractères http:// devant toute adresse web. Il spécifie que le client (le navigateur) exige de parler au serveur via le protocole HTTP.

Remarque : un autre protocole qu'on voit souvent est le protocole FTP. Les adresses qui commencent avec ftp:// existent également (typiquement pour télécharger un fichier).

 

Dialogue typique web

Exemple de dialogue entre client et serveur(s) dans un contexte web :

  1. L'internaute tape une adresse web http://www.exemple.fr/
  2. Le navigateur (client) cherche l'entrée DNS pour cette adresse (exemple.fr) sur un serveur DNS
  3. Le serveur DNS répond avec l'adresse IP de l'adresse web (ou un message d'erreur)
  4. Le navigateur lance une requête HTTP à l'adresse IP, port 80 (par défaut) - vers un serveur web
  5. Le serveur web répond par HTTP avec un fichier HTML qui peut faire référence à des fichiers supplémentaires CSS, JavaScript, images JPG/PNG, et cetera - chaque élément pouvant être disponible sur le même serveur web ou un autre
  6. Le navigateur fait une demande pour chaque élément supplémentaire - potentiellement donc vers plein de différents serveurs web
  7. Dans chaque cas le serveur répond par HTTP avec l'élément demandé (ou un message d'erreur)
  8. Le navigateur construit l'affichage à partir des éléments reçus

 

Éléments inclus et exclus d'un dialogue web

Il est important de savoir quels éléments d'un système web (en gros, quels types de fichier) peuvent faire partie du dialogue, et quels éléments restent strictement côté serveur.

Ceci est important car ça nous aide à comprendre l'anatomie d'un système web, à comprendre où se fait l'exécution du code des différents éléments et, d'un point de vue sécurité, à comprendre où on peut placer des informations sensibles.

Exemple : un client (navigateur) fait deux demandes :

  • une page avec une adresse comme http://www.exemple.fr/mapage.html (ce qui indique un fichier HTML).
  • une autre avec une adresse comme http://www.exemple.fr/mapage.php (ce qui indique un fichier PHP).

Il est critique de reconnaître que le serveur web ne fera pas la même chose dans les deux cas. Dans le cas de mapage.html, il va renvoyer le fichier html tel qu'il existe sur le disque-dur du serveur. Dans le cas de mapage.php, le serveur ne va pas quand même envoyer le fichier PHP tel qu'il existe sur le serveur ! Il va plutôt passer ce fichier à l'interpréteur de script PHP (toujours côté serveur) pour exécution puis renvoyer le résultat de cette exécution au client.

Types de fichiers typiquement envoyés par le serveur web en réponse à une requête HTTP (liste non-exhaustive !) :

  • fichiers HTML
  • fichiers CSS
  • fichiers JavaScript
  • fichiers image (type JPG/JPEG, PNG, GIF et cetera)
  • fichiers vidéo (type ogg, mp4, 3gp et cetera)
  • fichiers audio (type ogg et autres)
  • fichiers police (.eot, .ttf, .otf)
  • et cetera

Ne fait typiquement jamais partie de la réponse à une requête HTTP :

  • fichiers PHP, ASP, Ruby, Perl, Python ou autres fichiers de type script
  • fichiers de configuration du serveur et ses extensions (php.ini, httpd.conf, et cetera)
  • les fichiers de stockage de la base de données