Université des Sciences et de la Technologie
d’Oran
- Mohamed Boudiaf -
Cours L3/ISIL
HyperText Transfert Protocol
Pr Mekkakia.M.Z
Introduction
Client (Navigateur web) et
Serveur Web
Les deux s’échangent des
documents HTML en utilisant le
protocole HTTP
2
Quelques rappels
Le web se base sur 3 concepts :
L’URL(Uniform Resource Locator)
HTTP (HyperText Transfer Protocol)
Les langages du web
3
URL
[Link]
mathinfo/[Link]
https :
protocole applicatif (comment?)
[Link] :
nom du serveur (où?)
faculte/fac-mathinfo/[Link] :
chemin complet/page demandée (quoi?)
4
HTTP
Définit le format et la signification des
messages échangés entre client et serveur
Requête HTTP : demander une page web
du client vers le serveur
Réponse HTTP : répondre au navigateur
du serveur vers le client
5
Les langages (élémentaires)du
Web
HTML : décrire le contenu d’une page
web
CSS : définir les styles de la page web
Javascript : programmation coté client
(navigateur)
PHP : programmation coté serveur
6
Le client Web
Client web (client HTTP) est un logiciel qui
permet de se connecter à un serveur web
(serveur HTTP).
Exemples de client web
Navigateur Web (ex: Mozilla, Chrome, )
Aspirateur de site Web (ex: wget, HTTrack, …)
Robot d’indexation (ex: Googlebot, Facebot, …)
Robot d’archivage (ex: Archivarix, Heritrix, … )
. . .
7
Serveur Web
Serveur Web est un programme qui
utilise le protocole HTTP pour fournir
les fichiers qui constituent les pages
HTML d’un site Web
Exemple de serveurs web open source
Serveur HTTP Apache
NGINX
Apache Tomcat
[Link]
8
HTTP est un protocole sans
état
(Stateless protocol)
Aucune information n'est conservée
entre deux requêtes successives.
les requêtes sont indépendantes les unes
des autres.
Ceci permet au serveur HTTP de servir plus
de clients .
Cookie est utilisé pour conserver des
informations entre deux requêtes.
9
COOKIE (Témoin de
connexion)
Les cookies mémorisent l'information
sur l'utilisateur d'un site
EX: pour lui montrer un contenu approprié
dans le futur.
Les cookies permettent de :
Donner un ID au client
Ex: permettre au serveur de ne pas compter deux fois
le même navigateur pour comptage du nombre de
visites sur le site
Propager un code d'accès
éviter l’authentification lors de chaque requête
Propager un ID dans
10
une base de données, une session PHP
Communication
client/serveur(1/2)
1- URL [Link]
est donnée au navigateur.
2- Le navigateur
extrait le nom de domaine '[Link]'
grâce à l’opération DNS lookup, il résout le nom
de domaine en une adresse IP.
3- Une connexion TCP/IP est établie entre
navigateur et serveur Web distant.
11
Communication client/serveur
(2/2)
4- Requête HTTP demandant la ressource
'/[Link]' est transmise par le
navigateur
5- Le serveur Web trouve la ressource
correspondante et en renvoie le contenu
dans une réponse HTTP
6- Le navigateur reçoit et affiche le contenu
du fichier HTML '/[Link]'
12
Requête HTTP (Format)
Ligne de commande (Commande,
URL, Version de protocole)
En-tête de requête
[Ligne vide]
Corps de requête
13
Requête HTTP (Contenu!)
Méthode (commande) employée
URL de la ressource
Version du protocole utilisé par le client
Navigateur employé et sa version
Type du document demandé (ex: HTML)
...
Certaines de ces lignes sont optionnelles.
14
Requête HTTP (Exemple 1)
GET /mondossier/[Link] HTTP/1.1
User-Agent : Mozilla/5.0
Accept : text/html
"GET" est la méthode employée
"/mondossier/[Link]" correspond l'URL
"HTTP/1.1" : la version du protocole est la 1.1
"Mozilla/5.0" : le navigateur web employé
"text/html" : le client s'attend à recevoir du HTML
15
Requête HTTP (Exemple2)
GET [Link]
HTTP/1.0
User-Agent : Mozilla/4.0 (compatible; MSIE 5.0;
Windows 95)
Accept : text/html
If-Modified-Since : Saturday, 15-January-2000
[Link] GMT
16
Requêtes HTTP (Les plus
utilisées)
GET
Demander une ressource.
HEAD
Demander des informations sur la ressource, sans
demander la ressource elle-même.
POST
Soumettre des données en vue d'un traitement (côté
serveur).
c'est la méthode employée lorsqu'on envoie au
serveur les données issues d'un formulaire.
DELETE
Supprimer une ressource sur le serveur.
PUT
Modifier une ressource sur le serveur
17
Réponse HTTP (Format)
Ligne de statut (Version, Code-
réponse, Texte-réponse)
En-tête de réponse
[Ligne vide]
Corps de réponse
18
Réponse HTTP (Exemple)
Ligne de statut (Version, Code-réponse, Texte-
réponse)
HTTP/1.1 200 OK
En-tête de réponse
Date: Thu, 15 feb 2019 [Link] GMT
Server: Apache/2.0.54 (Debian GNU/Linux) DAV/2
SVN/1.1.4
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=ISO-8859-1
Corps de réponse
<html> <head> . . . </html> 19
Réponses HTTP (Quelques
codes)
Code-réponse Texte-réponse Signification
1xx Information
100 Continue Attente de la suite de la requête.
101 Switching Protocols Acceptation du changement de protocole.
2xx Succès
Requête traitée avec succès. La réponse dépendra de la
200 OK
méthode de requête utilisée.
204 No Content Requête traitée avec succès mais pas d’information à renvoyer.
3xx Redirections
301 Moved
Document déplacé de façon permanente.
Permanently
302 Found Document déplacé de façon temporaire.
4xx Erreur du client HTTP
400 Bad Request La syntaxe de la requête est erronée.
401 Unauthorized Une authentification est nécessaire pour accéder à la ressource.
5xx Erreur du serveur
503 Service Unavailable Service temporairement indisponible ou en maintenance.
HTTP Version not
505 Version HTTP non gérée par le serveur.
supported
20
Versions HTTP
HTTP/0.9 : Première version publique (1991)
HTTP/1.0 : Premier RFC (Rfc1945, 1996)
HTTP/1.1 : Version standardisée (RFC 2068, 1997)
HTTPS : Connexion chiffrée (RFC 2818, 2000)
HTTP/2 : Plus de performances (RFC 7540 , 2015)
HTTP/3 : Juin 2022 (RFC 9114) (Chiffrement et
support de UDP –QUIC protocole)
Plus de detail : [Link]
Statistiques ( en date de juin 2022)
8 % du trafic Internet est basé sur HTTP/1,
suivi de HTTP/2 à 67 %
et de HTTP/3 à 25 %.
21
CGI (Common Gateway
Interface)
CGI est utilisée par les serveurs HTTP
Un programme CGI:
reçoit des données envoyées par le serveur,
Il les traite
puis renvoi
des en-têtes de réponses et
des tags HTML valides. En effet
lorsqu'un programme CGI renvoie un fichier, il doit
commencer par envoyer un en-tête HTTP permettant
de préciser le type de contenu envoyé au navigateur
22
Un programme CGI
Un programme CGI doit être mesure de
lire le flux de données d'entrée
traiter des chaînes de caractères
écrire sur le flux standard de sortie
Il doit être exécutable par le serveur web
Il est écrit en
Perl, C++, Python, Java , ou n’importe quel autre
langage
23
Interactions Client/Serveur
Web
Référence de l’exemple d’interaction client/serveur web
[[Link] 24
À vous !
Par quoi commence toujours une
adresse URL ?
Citer 3 serveurs web open source
avec leur fréquence d’utilisation sur
les serveurs sur World Wide Web.
HTTP est un protocole sans état,
citer un autre protocole sans état,
et un protocole avec état.
Quel est la différence entre les deux
réponses 401 et 403. 25