• Aucun résultat trouvé

INTERACTIONS HOMME- MACHINE SUR LE WEB CHAPITRE 4 : LE MODÈLE CLIENT/SERVEUR LE PROTOCOLE HTTP

N/A
N/A
Protected

Academic year: 2022

Partager "INTERACTIONS HOMME- MACHINE SUR LE WEB CHAPITRE 4 : LE MODÈLE CLIENT/SERVEUR LE PROTOCOLE HTTP"

Copied!
17
0
0

Texte intégral

(1)

INTERACTIONS HOMME- MACHINE SUR LE WEB

CHAPITRE 4 : LE MODÈLE CLIENT/SERVEUR

LE PROTOCOLE HTTP

(2)

Le modèle client/serveur

Le modèle client/serveur est assez simple mais présente cependant quelques subtilités que nous allons découvrir dans ce chapitre.

Distinguons dans un premier temps qui est client et qui est serveur.

Lorsqu'un ordinateur A veut échanger des données avec un ordinateur B, l'ordinateur A va demander des fichiers (texte, photos, vidéos…) à l'ordinateur B.

Dans ce cas l'ordinateur A est le client (il demande des

ressources), l'ordinateur B (qui fournit les ressources) est le

serveur.

(3)

Le modèle client/serveur

L'exemple classique est lorsque l'on effectue une navigation sur internet.

Notre navigateur web (donc nous sommes client) demande (on dit qu'il effectue une "requête") le contenu d'une page web stockée sur un

(4)

Le modèle client/serveur

Dans le cas d'une consultation de page web, le serveur enverra l'ensemble des données qui accompagne le lecture correcte de la page: fichiers css, images, fichiers javascript…

(5)

Le modèle client/serveur

Si toutes les ressources nécessaires sont présentes sur un seul serveur, on parle d’architecture à deux niveaux ou 2 tiers (1 client + 1 serveur).

Si certaines ressources sont présentes sur un deuxième serveur (par

exemple des bases de données), on parle d’architecture à trois niveaux ou 3 tiers (1 client interroge le premier serveur qui lui-même interroge le deuxième serveur).

Au-delà on parle d'architecture N-tiers

(6)

Le modèle client/serveur

Dans certains cas, l'ordinateur peut à la fois jouer le rôle de client et de serveur, c'est le cas lorsque vous effectuez du peer-to-peer

Rq. Même si nous ne le verrons pas ici, il est possible de transformer votre ordinateur en serveur web afin d'héberger votre site web et de le mettre à disposition d'autres utilisateurs (clients).

(7)

Le modèle client/serveur

Aucun serveur, même extrêmement performant, ne serait capable de répondre à toutes ces requêtes. Google, Amazon ou encore Facebook possèdent un très grand nombre de serveurs afin de pouvoir satisfaire les demandes des utilisateurs en permanence.

Revenons sur une architecture classique.

Afin assurer une continuité de service, dans les sociétés, plusieurs serveurs assurent

exactement le même rôle (on parle de redondance). Vous vous doutez bien que Google ne possède pas qu'un seul serveur, en effet, en moyenne, chaque seconde, c'est environ 65000 clients qui se

connectent aux serveurs du moteur de recherche de Google

(8)

8

Le modèle client/serveur

Pour répondre à ce nombre de requêtes importantes, les serveurs sont concentrés dans un datacenter (qui sont des

bâtiments très sécurisés).

Chaque armoire sur l'image ci-contre (qu'on appelle une baie) contient des centaines de serveur entassés les uns sur les autres.

Ces serveurs sont des machines plates ce qui facilite leur entassement. Il n'y a pas d'écran car on ne les utilise pas

directement. Ils se contentent de

transmettre le contenue des sites web sur le réseau.

(9)

Le modèle client/serveur

Actuellement les serveurs peuvent générer du code HTML. Ainsi le code HTML envoyé aux clients dépendra des actions du client lui-même. On parle de page web dynamique.

Souvent les serveurs sont spécialisés dans certaines tâches, par exemple, les serveurs qui envoient aux clients des pages HTML sont appelés "serveur web".

Il en existe pour gérer des fichiers : serveur de fichier, pour permettre l'impression de document : serveur d'impression, pour gérer les emails : serveur de

messagerie…

Pour cela, il existe des langages de programmation mais qui s'exécute

"coté serveur" afin de générer du contenu HTML. Le plus utilisé se nomme

(10)

Le protocole HTTP

Les robots des moteurs de recherche (ex Googlebot) qui explorent les sites internet utilisent également le protocole HTTP pour communiquer avec les serveur web.

Le protocole HTTP (acronyme de Hypertext Transfer Protocol) est le protocole

réseau utilisé par les navigateurs Web (Firefox, Internet Explorer...) et les serveurs Web (Apache, IIS...) pour communiquer entre eux.

C'est lui qui est utilisé par exemple pour obtenir un fichier HTML, une image, poster un formulaire Internet. Il est donc au cœur de l'Internet.

Techniquement c'est un protocole texte (donc lisible en clair) s'appuyant les protocoles plus bas-niveau TCP et IP (cf. partie réseau)

(11)

Le protocole HTTP

Avec le protocole HTTP la communication entre un navigateur et un serveur Web est finalement assez simple.

En voici le déroulé :

• une URL telle que

http://www.monsite.com/fichier.html est donnée au navigateur par un internaute

• le navigateur en extrait le nom de domaine 'www.monsite.com' et à partir de cette information sait comment trouver le serveur Web distant (grâce à une opération dite de DNS qui transforme un nom de domaine en une

adresse IP)

• à partir de là une connexion (basée sur les protocoles TCP/IP) est établie entre le navigateur et le serveur Web distant

• une requête HTTP demandant la ressource '/fichier.html' est alors transmise par le navigateur

• le serveur Web trouve la ressource correspondante et en renvoie le contenu

(12)

En-tête HTTP d'une requête

La première ligne contient toujours :

le type de requête, la partie chemin de l'URL de la ressource cible et enfin la version du protocole (1.0 ou 1.1 généralement).

Les 2 types de requête les plus connus sont :

GET : c'est pour 'obtenir' une ressource. C'est bien entendu la requête la plus utilisée sur Internet.

POST : c'est pour envoyer le contenu d'un formulaire. Donc plutôt utilisé pour soumettre des données en vue d'un traitement (côté serveur)

Les [CRLF] symbolisent une séquence ASCII [10-13], appelée [Carriage Return - Line feed]. C'est en fait le délimiteur utilisé par le protocole HTTP pour séparer les lignes de l'en-tête.

Les lignes suivantes sont des champs HTTP, toujours formatées de cette

GET /fichier.html HTTP/1.1[CRLF]

Host: www.monsite.com[CRLF]

User-Agent: Mozilla/5.0 Safari/531.9[CRLF] [CRLF]

Voici un exemple d'entête de requête envoyé par un navigateur

(13)

En-tête HTTP d'une réponse

La première ligne de la réponse contient toujours le 'code' HTTP indiquant si la requête a réussi ou pas. (ici 200)

Puis, comme pour la réponse, on trouve les lignes des champs HTTP.

la ligne Server indique le type de serveur qui a fourni la réponse (le plus souvent Apache..(installé sur près de la moitié des serveurs mondiaux)

HTTP/1.1 200 OK[CRLF]

Date: Thu, 24 Sep 2009 19:37:34 GMT[CRLF]

Server: Apache/2.2.3[CRLF]

Content-Length: 7234[CRLF]

Content-Type: text/html; charset=UTF-8[CRLF]

[CRLF]

[ici se trouve le corps de la réponse : la page HTML]

Voici un exemple d'entête de réponse envoyé par un serveur web tel que Apache

(14)

En-tête HTTP d'une réponse

Ouvrez l'invite de commande de votre ordinateur (taper invite de commande dans cortina sous windows, sous linux c'est le terminal)

Les invites de commandes suivantes nécessitent évidemment que vous soyez connecté à internet.

Explorons un peu quelques codes HTTP.

Taper : curl http://google.com --head

Quel est le code http de réponse et que signifie-t-il ?

Le code 301 signifie que la page google.com est redirigée de manière permanente. Elle existe donc mais pas à cette adresse.

Taper : curl http://www.google.com --head

Quel est le code http de réponse et que signifie-t-il ?

Le code 200 signifie que la page www.google.com existe bien.

(15)

En-tête HTTP d'une réponse

Taper : curl https://isnfeuillade.000webhostapp.com/index2.php --head Quel est le code http de réponse et que signifie-t-il ?

Le code 404 signifie que la page demandée n'existe pas

Il en existe d'autres comme le code 403 qui interdit l'accès à une URL sécurisée (cette URL attend un login et un mot de passe). le code 500 qui signifie que le serveur web n'a pas été capable de traiter la requête (en général c'est un problème plutôt sérieux)

(16)

En-tête HTTP d'une réponse

Essayez de comprendre les informations reçues dans la réponse.

Taper : curl http://www.google.com --head -v

Content-Type

le serveur Web indique le type ('MIME type') de la

ressource qu'il renvoie (image, html, pdf...). Il peut même indiquer parfois l'encodage des caractères du contenu.

Par exemple: text/html; charset=UTF-8

Server le serveur Web indique sa signature dans ce champ.

Set-Cookie

le serveur Web (souvent guidé par les lignes de code du développeur d'un site Web) peut indiquer au navigateur des valeurs de cookies. Ces valeurs seront renvoyés par le navigateur dans les requêtes futures.

Location c'est le champ utilisé lors des redirections pour indiquer la nouvelle URL cible

(17)

ET le HTTPS ?

Le HTTPS est la version sécurisée du protocole HTTP.

Cela signifie que les données sont chiffrées avant d'être transmises sur le réseau.

Concrètement cela signifie que même si un hacker arrive à intercepter les données transmises, elles seront illisibles et donc inexploitables car cryptées.

Comment se déroule une communication client-serveur utilisant le protocole HTTPS ?

Dans un premier temps, le client envoie une requête de connexion sécurisée au serveur (https au lieu de http)

Dans un second temps, le serveur établit la connexion mais il fournit au client un certificat prouvant son identité. Ce certificat d'identité est en général fournit au client par l'organisme permettant la connexion (comme une banque, ou les

impôts…)

A partir de ce moment là, les échanges client-serveur seront chiffrés grâce à un système de clé publique et clé privée (cf. cours de l'an prochain).

Lorsque vous connectez à un site "sensible" pour lequel il est nécessaire d'entrer un

Références

Documents relatifs

– Comment casser la relation forte entre client et serveur, comment rendre le client indépendant du serveur pour l'appel.

Serveur en gestion multi--clients clients en en mode connecté. mode

◮ Réponse : message transmis par un serveur à un client suite à l’exécution d’une opération, contenant le résultat

— http://SERVEUR/cgi-bin/ : répertoire d’exécution des scripts CGI pointant vers /usr/lib/cgi-bin/ ; Ce serveur est également configuré pour exécuter les scripts PHP

En revanche, certaines utilisations comme le continu (streaming) nécessitent l'emploi d'un protocole plus léger et plus rapide, comme UDP (User Datagram Protocol ou protocole

• Un serveur peut répondre aux demandes de service de plusieurs clients : les requêtes arrivées et non traitées sont stockées dans une file d’attente.

Or cette configuration manuelle peut être fastidieuse pour un nombre important de périphériques car pour chaque machine il faut entrer manuellement l'adresse IPv4, le masque

Ces paramètres permettent au serveur de calculer le contenu de la page à fabriquer et à renvoyer au client : on parle alors de site dynamique car le contenu est calculé à