Académique Documents
Professionnel Documents
Culture Documents
http://www.ingenieurs.fr
Attention
1
Protocole HTTP
Semestre 7
Protocole HTTP
Option : management de projets
Exposé :
2
Introduction
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
3
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 !
4
I. Protocole http
A. Définition :
Le HyperText Transfer Protocol, plus connu sous l'abréviation HTTP, littéralement le
« protocole de transfert hypertexte », est un protocole de communicationclient-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.
5
http/1.0
http/0.9 http/1.1
1. Version http/0.9 :
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 :
6
Le successeur de http/0.9 c’est la version http/1.0normalisé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 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 :
7
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.
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.
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'undocument. Deux requêtes GET portant sur le même document
devraient retourner des réponsessémantiquement identiques (certains en-têtes pouvant
8
influer sur le comportement du serveur, les réponsespeuvent ne pas être totalement
identiques).
Aucune donnée à traiter ne peut être envoyée au serveur par cette méthode. Il est par
contre possibled'ajouter les paramètres d'URL (aussi nommés paramètres GET). Le corps de
la requête doit être vide, et ledocument spécifié dans la requête (la Page) est celui qui doit
être retourné.
HEADHTTP/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 laré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. Cesrequêtes sont censées mettre en jeu des mécanismes propres au serveur et
provoquant des communicationsavec d'autres modules, voire d'autres serveurs, pour
effectuer le traitement des dites données. De ce fait, ilest tout à fait probable que deux
requêtes POST identiques reçoivent des réponses différentes ou mêmesémantiquement
opposées.
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 laréponse.
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 :
9
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).
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 :
Nous allons ici présenter certains en-têtes utilisés dans les requêtes HTTP. Elles ne sont
pas forcémentspé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,
10
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 :
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.
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 :
Exemple :
Accept : text/html
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) :
12
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.
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.
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.
13
101 Switchingprotocol : Ce code statu permet de changer le protocole ou la version du
protocole utilisé lors de la communication. Lenouveau protocole à utiliser est spécifié par
l'en-tête Upgrade.
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 ducache. Seule une partie du document demandé est
renvoyée.
300 Multiple Choice :Ce code est utilisé quand on peut trouver plusieurs versions de la
ressource (différence de format ou delangue par exemple).
301 MovedPermanently :Quand une ressource est déplacée définitivement, c'est ce code
qui permet d'indiquer le déplacementnotamment aux moteurs de recherche. La requête
ayant généré l'erreur doit alors être renvoyée pourcorrespondre avec la nouvelle ressource.
307 TemporaryRedirect : Ce code permet d'indiquer une redirection temporaire.
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 leserveur.
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.
Exemple :
HTTP/1.0 200 OK
15
C. Le corps de la réponse :
Il contient le document demandé.
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
16
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
17
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
18
é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 ».
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.
19
Document mis à disposition par :
http://www.ingenieurs.fr
Attention
20