Sie sind auf Seite 1von 17

Protocole HTTP

Faculté des sciences juridiques, économiques et


Sociales

Niveau d’étude : 1ére année du master,

Semestre 7

Option : management de projets

Exposé :

Protocole HTTP

Introduction
Réseaux informatiques
Protocole HTTP

HyperText Transfert Protocol, voici la signification de l’acronyme qui fait le bonheur


des internautes au quotidien. Traduction primaire: protocole de transfert de document
hypertexte. Les documents hypertexte sont simplement les documents html des premières
heures, en effet la première version du protocole était exclusivement réservée aux pages
web. La large acceptation de ce protocole, sa simplicité de mise en œuvre, la configuration
des routeurs dans les entreprises ont ensuite permis le développement de ce protocole dans
de nombreuses autres applications.

HTTP est un protocole qui a été travaillé par de nombreuses personnes à partir de la fin des
années 80. En sont sorties des recommandations sous forme de RFC dont la plus importante
est la RFC2616, elle définit le HTTP1.1 actuel.
Beaucoup d'autres RFCs entrent en jeu cependant dans le fonctionnement de HTTP, comme
la 2617 qui décrit les processus d'authentification, ou encore la 2109 qui décrit les
mécanismes de persistance. Chaque serveur ou client Web est tenu de l'implémenter au plus
juste, et comme la recommandation laisse quelque fois des "blancs", il existe des disparités
entre les logiciels l'utilisant (clients et serveurs).
Par disparité, on pourra citer le non respect des recommandations (carrément, mais ça
devient de plus en plus rare), un respect partiel, ou encore un fonctionnement propre
non décrit dans les recommandations. Les serveurs sont plutôt "bons", c'est à dire qu'ils
implémentent tous un protocole http acceptable et compatible à peu près partout, pour
peu qu'ils ne datent pas d'il y a 10 ans. Heureusement, les vieux serveurs sont rares de nos
jours sur Internet.
Coté navigateurs, il faut qu’ils soient récents. Les navigateurs modernes sont corrects,
les vieux ont des problèmes avec http de différents ordres : cache mal géré, compression
de données mal ou pas supportée, en-tête ignorés...
Quoiqu'il en soit, cela représente une très maigre partie des clients HTTP d'aujourd'hui, il
faudra par contre prêter attention aux clients logés dans des appareils portatifs (téléphones
portables, ...) car il est possible qu'ils ne respectent pas totalement HTTP non plus, soit du
fait de leur relative jeunesse, soit par décision des constructeurs. Quoiqu'il en soit il n'y a
pas d'inquiétude particulière à avoir, il est dans l'intérêt de tout le monde de respecter les
recommandations de HTTP, et HTTP fonctionne bien de nos jours sur le Web, la preuve ? Et
bien c'est le Web tout simplement !

2
Réseaux informatiques
Protocole HTTP

 La RFC2616 décrit le fonctionnement global de HTTP, certains points particuliers sont
décrits plus précisément dans d'autres RFCs.
 RFC2617, par exemple, explique comment fonctionnent les processus d'authentification
de HTTP
La gestion de la persistance, elle, est détaillée dans la  RFC 2109.

I. Protocole http
A. Définition :

3
Réseaux informatiques
Protocole HTTP

Le HyperText Transfer Protocol, plus connu sous l'abréviation HTTP, littéralement le


« protocole de transfert hypertexte », est un protocole de communication client-serveur
développé pour le World Wide Web.
Autrement dit, Lorsqu'un visiteur consulte un site web, ce protocole transfert les documents
entre le serveur http et le navigateur web (en d'autres termes, il envoie les pages web vers
l'ordinateur).
Le protocole HTTP peut fonctionner sur n'importe quelle connexion fiable, dans les faits on
utilise le protocole TCP comme couche de transport. Un serveur HTTP utilise alors par défaut
le port 80.

Dans le schéma suivant, les flèches représentent les requêtes HTTP :

B. Les versions http :


Il en existe trois versions :

http/1.0

http/0.9 http/1.1

1. Version http/0.9 :

4
Réseaux informatiques
Protocole HTTP

http/0.9 est la première version du protocole http apparue en 1990. Cette version été
écrite pour répondre aux exigences fixées par Tim Berners-Lee quant au transport et à
l'acheminement des pages HTML au CERN « Conseil Européen pour la Recherche
Nucléaire ». Il créait donc des requêtes extrêmement simples, à savoir uniquement
l'obtention d'un document (méthode GET), On ne peut a priori rien faire d'autre que
demander des documents, il est impossible d'envoyer des informations "personnelles" aux
serveurs.
http/0.9 a toutefois certains avantages indéniables : il est indépendant de la couche
transport, et permet en fait de transporter toute sorte de documents. http/0.9 est tout ce
qu'il y a de plus simple.
http/0.9 évidemment présente certaines limitations qui seront comblées en grande partie
avec la version http/1.0, puis http/1.1.
Le premier inconvénient est que la connexion entre le client et le serveur est fermé par le
serveur dès qu'il a répondu à une requête, et par conséquent, le client doit ouvrir une
connexion pour chaque document à récupérer, en plus de l’attente. En plus, http/0.9 ne sait
pas non plus gérer les caches. Les transports de documents ne sont donc pas optimisés.

L'envoi d'informations concernant l'utilisateur ne se fait que par la méthode GET, ce qui
limite la capacité d'envoi des informations.

2. Version http/1.0 :

Le successeur de http/0.9 c’est la version http/1.0 normalisée en 1996. La première


amélioration est pour le confort de navigation : http/1.0 sait gérer les caches. Ensuite, on
peut envoyer des informations au serveur (grâce à une nouvelle méthode : la méthode
POST). http/1.0 sait ensuite reconnaître quand une requête n'a pas abouti (le fameux "404
not Found"). Enfin, http/1.0 permet aux utilisateurs de s'authentifier, par exemple, pour
accéder à une partie cachée d’un site.

3. Version http/1.1

Il n'y a pas de franche différence entre http/1.1 et http/1.0. Le http/1.1 normalisé en


1999, est plutôt une sorte d'ultime amélioration de http/1.0 : une quasi parfaite utilisation et
gestion des ressources avec un mécanisme de cache particulièrement amélioré. La
préoccupation principale ne se trouve plus dans la façon d'acheminer la ressource, elle se
situe plutôt désormais dans la rationalisation du système dans son ensemble, autrement dit:
le dialogue entre le client et le serveur doit être aussi clair et précis que possible, et ne doit
circuler sur le réseau que le strict nécessaire. Dans ce sens, la connexion entre le client et le
serveur reste désormais ouverte après la première requête, pour laisser le temps au client
de récupérer d'autres fichiers (notamment les images contenues dans une page web). Le
protocole essaie aussi d'introduire une "personnalisation" des requêtes avec la négociation

5
Réseaux informatiques
Protocole HTTP

de contenu, l'idée étant de fournir le document répondant au mieux aux besoins de


l'utilisateur.

Il faut noter que lorsque l'on se connecte à un serveur, on doit a priori lui dire dans quelle
version de HTTP on veut lui parler. Par défaut, si on ne dit rien, on utilise HTTP/0.9.

4. Version https :

https signifie « Hypertexte Transfer Protocole Secure » en anglais et se traduit par «


protocole de transfert hypertexte sécurisé » en français.
https correspond à une version sécurisée du http. Il est généralement utilisé pour les
transactions financières en ligne comme par exemple les réservations en ligne, les banques
en ligne... avec paiement par carte.
Des contraintes de sécurités vont apparaître, notamment le cryptage des données. De plus,
l'internaute devra généralement s'identifier. Il est par conséquent presque impossible de
récupérer des informations confidentielles.
Le https vient en réponse aux différents problèmes de confidentialité que connaît le
protocole http.

II. Les requêtes http :


Dès que le client est connecté au serveur, il envoie sa requête. C'est en ce sens que
l'échange est initié par le client.

En effet, une requête c’est ce qu’on demande au serveur.

A. Définition :
Comme nous l'avons dit précédemment, en HTTP une requête ce n'est pas composé de
la simple url que vous souhaitez joindre. En effet il faut fournir au serveur HTTP d'autres
paramètres afin que ce dernier puisse répondre à votre sollicitation .à votre sollicitation

Une requête HTTP est donc un ensemble de lignes envoyé au serveur par le navigateur.

6
Réseaux informatiques
Protocole HTTP

Nous allons voir les spécificités des requêtes http :

1. Une ligne de requête :


C’est une ligne précisant le type de document demandé, la méthode qui doit être
appliquée, et la version du protocole utilisée. La ligne comprend trois éléments devant être
séparés par un espace :

a. La méthode :

En HTTP, les méthodes sont en fait des sortes de commandes. Elles vous permettront de
spécifier au serveur le type d'action que vous souhaitez que réalise votre requête. Voici les
différentes méthodes possibles, avec la version de HTTP dans laquelle elles sont apparues:

 GET  HTTP/0.9 :
Cette méthode est la plus courante, il s'agit normalement d'une simple requête de
téléchargement d'un document. Deux requêtes GET portant sur le même document
devraient retourner des réponses sémantiquement identiques (certains en-têtes pouvant
influer sur le comportement du serveur, les réponses peuvent ne pas être totalement
identiques).
Aucune donnée à traiter ne peut être envoyée au serveur par cette méthode. Il est par
contre possible d'ajouter les paramètres d'URL (aussi nommés paramètres GET). Le corps de
la requête doit être vide, et le document spécifié dans la requête (la Page) est celui qui doit
être retourné.

 HEAD HTTP/1.0 :
Cette méthode est similaire et presque équivalente à la méthode GET. C'est en fait la
réponse finale d’un serveur qui est tronquée.
La réponse à une requête HEAD est la réponse à la requête GET qui lui est similaire, sauf que
le corps de la réponse HTTP n'est pas transmis. Cela permet souvent d'économiser beaucoup
de bande passante.

 POST  HTTP/1.0 :
La Méthode POST est la méthode de base pour demander un traitement d'informations
au serveur. Ces requêtes sont censées mettre en jeu des mécanismes propres au serveur et
provoquant des communications avec d'autres modules, voire d'autres serveurs, pour
effectuer le traitement des dites données. De ce fait, il est tout à fait probable que deux
requêtes POST identiques reçoivent des réponses différentes ou même sémantiquement
opposées.

7
Réseaux informatiques
Protocole HTTP

Les données à traiter sont spécifiées dans le corps de la requête.


Le document désigné par la requête via la page est la ressource qui doit traiter les données
et générer la réponse.

 PUT et DELETE  HTTP/1.1 :


Ces méthodes sont censées permettre l'upload (le chargement sur le serveur) ou la
suppression d'un document sans passer par un serveur FTP ou autre. Bien évidemment, cela
peut provoquer des remplacements de fichiers, et donc de très grosses failles de sécurités
sur un serveur. De ce fait, la plupart des serveurs Web requièrent une configuration spéciale
indiquant une ressource ou un document chargé de traiter ces requêtes.
Le document désigné par la requête est celui qui doit être remplacé (ou créé), et le contenu
du document est dans le corps de la requête.

 OPTIONS et TRACE  HTTP/1.1 :


Ces méthodes permettent au client de demander certaines informations sur le serveur.
Tous les serveurs ne les implémentent pas forcément.

 CONNECT  HTTP/1.1 :
Cette méthode est censée être utilisée pour demander une utilisation du serveur en tant
que proxy.
Tous les serveurs ne les implémentent pas forcément.

b.L'URL :

Signifie « Uniform Ressource Locator » en anglais et se traduit par « repère uniforme de


ressource » en français.
L'url est également appelée adresse web et permet de mémoriser plus facilement une
adresse IP. Cette chaîne de caractères désigne l'endroit où sont stockées les informations
sur Internet.
Chaque document html d'un site web comporte sa propre adresse URL. Par conséquent,
c'est par cette adresse qu'un site va pouvoir être accessible .
L'url est saisie dans le navigateur pour accéder à une page web. Elles peuvent être insérées
dans une page web sous forme de liens hypertextes qui apparaissent de couleur bleue dans
la page.
Une url est composée du protocole (http) et du nom de domaine (google.fr par exemple).

c. La version du protocole utilisé par le client  :

Lorsque l'on se connecte à un serveur, on doit a priori lui dire dans quelle version de
HTTP on veut lui parler : HTTP/0.9, HTTP/1.0 ou HTTP/1.1.

Exemple :

Une ligne de requête a la forme suivante : METHODE URL VERSION<crlf>¹

GET http://www.commentcamarche.net HTTP/1.0

8
Réseaux informatiques
Protocole HTTP

2. L’entête d’une requête :


Il s'agit d'un ensemble de lignes facultatives permettant de donner des informations
supplémentaires sur la requête et/ou le client (Navigateur, système d'exploitation, ...).
Chacune de ces lignes est composée d'un nom qualifiant le type d'en-tête (champs d’entête),
suivi de deux points (:) et de la valeur de l'en-tête.

a. Les types d’entêtes d’une requête :

Nous allons ici présenter certains en-têtes utilisés dans les requêtes HTTP. Elles ne sont
pas forcément spécifiques aux requêtes, mais ont une signification particulière dans le cadre
d'une requête.

 Host :

Cet en-tête est la seule obligatoire pour les requêtes HTTP/1.1, c'est elle qui permet
d'héberger plusieurs sites Web sur un même serveur. Sa valeur est le domaine du site Web.
Elle est généralement spécifiée juste après la Ligne d'Introduction.

 Accept :

Il est important car vous pouvez indiquer la liste des formats de données que vous souhaitez
recevoir. Les codes suivant sont particulièrement intéressants : image/gif, image/jpeg,
image/png. En l’absence de ce champ, le serveur n’enverra pas de fichier d’image, ils sont
donc indispensables pour écrire un outil d’aspiration d’images sur le web.

 User-Agent :

Cet en-tête permet d'indiquer la signature du programme effectuant la requête. C'est


une chaîne de caractères qui permet d'identifier le programme. En général, il s'agit du nom
complet du programme et de sa version.

 If-Modified-Since :

Pour l’écriture d’un outil de synchronisation entre un site web et une autre source de
données, utilisez le champ If-Modified-Since, suivi de la dernière date de synchronisation, il
indique au serveur de n’envoyer le contenu de la ressource que si il a changé depuis cette
date.

 Content-type et Content-length :

Ces deux en-têtes ne peuvent être spécifiées que dans le cadre d'une requête POST ou
PUT. Elles indiquent respectivement le type MIME et la taille en octets du corps de la
requête. Si elles ne sont pas spécifiées, c'est le serveur qui est seul responsable de leur
éventuelle valeur par défaut.

 Cookie :

Cet en-tête permet au client de fournir un cookie au serveur. Sa valeur est simplement le
nom et la valeur du cookie, séparés par un égal.

9
Réseaux informatiques
Protocole HTTP

 D'autres en-têtes :

De nombreux autres entêtes ont été prévus dans le protocole HTTP. Ils peuvent être
résumés dans le tableau suivant :

Nom du champ Description

Date Date de début de transfert des données


Forwarded Utilisé par les machines intermédiaires entre le browser et le
serveur
From Permet de spécifier l'adresse e-mail du client
Link Relation entre deux URL
Orig-URL URL d'origine de la requête
Refrer URL du lien à partir duquel la requête a été effectuée
Accept-charset Jeu de caractères attendu par le navigateur
Accept-Encoding Codage de données accepté par le navigateur
Accept-Language Langage attendu par le navigateur (anglais par défaut)
Content-Encoding Type de codage du corps de la requête
Content-Language Type de corps de la requête
Authorization Identification du navigateur auprès du serveur

Exemple :

L’entête d’une requête a donc la forme : EN-TETE : Valeur<crlf>


...
EN-TETE : Valeur<crlf>

Accept : text/html

If-Modified-Since : Saturday, 15-January-2000 14:37:11 GMT

User-Agent : Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)

3. Le corps de la requête:
C’est un ensemble de lignes optionnelles devant être séparées des lignes précédentes
par une ligne vide et permettant par exemple un envoi de données par une commande POST
lors de l'envoi de données au serveur par un formulaire.
Le corps de la requête doit être vide pour les requêtes GET, HEAD, DELETE, CONNECT, TRACE
et OPTIONS (dans le dernier cas, il est laissé éventuellement rempli pour de futures versions
du protocole HTTP).

Une requête HTTP a donc la syntaxe suivante (<crlf> signifie retour chariot ou saut de ligne) :

METHODE URL VERSION<crlf>


EN-TETE : Valeur<crlf>
.

10
Réseaux informatiques
Protocole HTTP

.
.
EN-TETE : Valeur<crlf>
Ligne vide<crlf>
CORPS DE LA REQUETE

Voici donc un exemple de requête HTTP :

GET http://www.commentcamarche.net HTTP/1.0


Accept : text/html
If-Modified-Since : Saturday, 15-January-2000 14:37:11 GMT
User-Agent : Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)

III. les réponses http :


Maintenant que vous êtes au point sur les requêtes, voici ce que vous devez attendre
pour la réponse.
Une réponse HTTP est un ensemble de lignes envoyées au navigateur par le serveur
(exactement comme la requête). Elle comprend: une ligne statut, une liste de champs, le
corps de la réponse (généralement le contenu du fichier demandé). Les réponses sont bâties
sur un modèle similaire à celui des requêtes.

Voyons leurs spécificités.

A. Une ligne de statu :


C’est une ligne précisant la version du protocole utilisé et l'état du traitement de la
requête à l'aide d'un code et d'un texte explicatif. La ligne comprend trois éléments devant
être séparés par un espace :

1. La version du protocole utilisé :

La version est la même que pour la requête.

11
Réseaux informatiques
Protocole HTTP

2. Le code de statut :

Appelés aussi les codes retour. Ils sont importants car ils représentent le statut de la
transaction. Le code de réponse est constitué de trois chiffres, le premier indique la classe de
statut et les suivants la nature exacte de l'erreur. Les Codes Statu sont regroupés en familles,
qui sont au nombre de cinq pour les versions 1.0 et 1.1 de HTTP.

 Informations : les 1xx :


Ces codes sont là simplement pour permettre au serveur d'envoyer une notification.

100 continue: Ce code statu est rarement utilisé et informe simplement que la partie de la
requête qui a déjà été reçue est valide. Il n'est pas envoyé par défaut, mais seulement dans
des cas précis.

101 Switching protocol  : Ce code statu permet de changer le protocole ou la version du


protocole utilisé lors de la communication. Le nouveau protocole à utiliser est spécifié par
l'en-tête Upgrade.

 Succès : les 2xx :


Ces codes indiquent que tout s'est bien déroulé et que la ressource demandée est renvoyée.

200 OK : Tout est bon, c'est la réponse la plus souvent employée.

201 Created  : Peut être utilisé par exemple dans le cadre d'un requête PUT pour indiquer
que le document a bien été uploadé.

204 No Content  : La requête s'est bien déroulée, mais le corps de la réponse est vide.

206 Partial Content  : Ce code est généralement utilisé dans le cadre d'une récupération de
téléchargement, ou de l'utilisation du cache. Seule une partie du document demandé est
renvoyée.

 Redirection : les 3xx :


Ces codes indiquent que la ressource demandée n'est plus à l'emplacement indiqué. Ils sont
très utilsés pour les redirections. L'en-tête, accompagnant la redirection et qui indique le
nouvel emplacement de la ressource, est alors l'en-tête Location.

300 Multiple Choice  : Ce code est utilisé quand on peut trouver plusieurs versions de la
ressource (différence de format ou de langue par exemple).
301 Moved Permanently  : Quand une ressource est déplacée définitivement, c'est ce code
qui permet d'indiquer le déplacement notamment aux moteurs de recherche. La requête
ayant généré l'erreur doit alors être renvoyée pour correspondre avec la nouvelle ressource.
307 Temporary Redirect : Ce code permet d'indiquer une redirection temporaire.

 Requête Invalide : les 4xx


Ces codes indiquent une erreur de la part du client, ressource invalide, authentification
invalide, etc. La requête doit alors être modifiée et éventuellement retransmise pour
pouvoir être traitée.

12
Réseaux informatiques
Protocole HTTP

400 Bad Request  : Erreur générique.


401 Unauthorized ou Authorization required   : Le client n'est pas censé avoir accès à la
requête au vu de son niveau actuel d'identification. Il doit s'identifier de manière correcte.
S'il ne peut remplir les conditions d'identification, alors les requêtes suivantes aboutiront à
une erreur 403.
403 Forbidden  : La ressource est interdite au client.
404 Not Found  : La fameuse erreur 404, elle indique que la ressource demandée n'a pu être
trouvée.
405 Method Not Allowed  : Le client n'est pas censé pouvoir envoyer ce type de requête,
une authentification est certainement nécessaire.

 Erreur Serveur : les 5xx


Ces codes sont utilisés en cas d'erreur de la part du serveur, en cas de surcharge, d'erreur de
configuration, etc.
Le plus simple est d'attendre un peu et de retenter plus tard : si l'erreur persiste, contactez
l'administrateur du serveur.

500 Internal Server Error  : Erreur Interne au serveur, il n'est pas en état de répondre
actuellement.
501 Not Implemented  : Certaines fonctionnalités requises par les en-têtes ou la méthode
employées ne sont pas supportées par le serveur.
503 Service Unavaible  : Utilisé par exemple quand le serveur est surchargé.
505 HTTP Version Not Supported  : Le serveur ne supporte pas la version du protocole HTTP
qui a été utilisée.

 D'autres codes status


Tous les codes n'ont bien entendu pas été listés ici, certains ont même été invalidés lors du
passage de HTTP/1.0 à HTTP/1.1 (306 par exemple), ou bien sont réservés pour des versions
ultérieures du protocole (402 par exemple).

3. La signification du code : (voire la partie précédente)

Exemple :

La ligne de statu a la forme qui suit : VERSION-HTTP CODE EXPLICATION<crlf>

HTTP/1.0 200 OK

B. Les champs d'en-tête de la réponse :

Il s'agit d'un ensemble de lignes facultatives permettant de donner des informations


supplémentaires sur la réponse et/ou le serveur. Chacune de ces lignes est composée d'un
nom qualifiant le type d'en-tête, suivi de deux points (:) et de la valeur de l'en-tête.

13
Réseaux informatiques
Protocole HTTP

C. Le corps de la réponse :
Il contient le document demandé.

Une réponse HTTP a donc la syntaxe suivante :

VERSION-HTTP CODE EXPLICATION<crlf>


EN-TETE : Valeur<crlf>
.
.
.
EN-TETE : Valeur<crlf>
Ligne vide<crlf>
CORPS DE LA REPONSE

Voici donc un exemple de réponse HTTP :

HTTP/1.0 200 OK
Date : Sat, 15 Jan 2000 14:37:12 GMT Server : Microsoft-IIS/2.0
Content-Type : text/HTML
Content-Length : 1245
Last-Modified : Fri, 14 Jan 2000 08:25:13 GMT

14
Réseaux informatiques
Protocole HTTP

IV. Illustrations :
Modèle client-serveur :

Client et serveur désignent non pas 2 personnes mais en réalité deux logiciels
différents communiquant au moyen d'un système de règles ou protocole à travers un réseau
(local ou étendu). ce protocole du WEB s'appelle HTTP =HyperText Transport Protocol

15
Réseaux informatiques
Protocole HTTP

C est un schéma assez basique qui illustre tout simplement la relation clt-serveur

Passons maintenant à la deuxième vitesse avec un schéma un petit peu plus détaillée :

Conclusion

En guise de conclusion, nous pouvons dire que Le protocole HTTP (HyperText Transfer
Protocol) est le protocole le plus utilisé sur Internet depuis 1990. La version 0.9 était
uniquement destinée à transférer des données sur Internet (en particulier des pages Web
écrites en HTML. La version 1.0 du protocole (la plus utilisée) permet désormais de
transférer des messages avec des en-têtes décrivant le contenu du message en utilisant un
codage de type MIME.
En revanche ; il parait judicieux de signaler que les limites révélées lors de l’utilisation de ces
versions nous poussent au recours au Https «  Hypertexte Transfer Protocole Secure ».

16
Réseaux informatiques
Protocole HTTP

Correspondant à une version sécurisée du http, le Https est généralement utilisé pour les
transactions financières en ligne comme par exemple les réservations en ligne, les banques
en ligne... avec paiement par carte.
Des contraintes de sécurités vont apparaître, notamment le cryptage des données. De plus,
l'internaute devra généralement s'identifier. Il est par conséquent presque impossible de
récupérer des informations confidentielles.
Le https vient en réponse aux différents problèmes de confidentialité que connaît le
protocole http.

17

Das könnte Ihnen auch gefallen