Hypertext Transfer Protocol / 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.



Catégories :

HTTP - Standard du Web - Format ouvert

Recherche sur Google Images :


Source image : www3.sympatico.ca
Cette image est un résultat de recherche de Google Image. Elle est peut-être réduite par rapport à l'originale et/ou protégée par des droits d'auteur.

Définitions :

  • est un protocole de transfert des documents sur le Web. Une fois connecté on peut demander soit une page précise en fournissant une URL, soit... (source : aidenet)

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. HTTPS (avec S pour secured, soit «sécurisé») est la variante du HTTP sécurisée par l'usage des protocoles SSL ou TLS.

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 dans ce cas par défaut le port 80 (443 pour HTTPS).

Les clients HTTP les plus connus sont les navigateurs web permettant à un utilisateur d'accéder à un serveur contenant les données. Il existe aussi des dispositifs pour récupérer automatiquement le contenu d'un site tel que les aspirateurs de site ou les robots d'indexation.

Ces clients se connectent à des serveurs HTTP tels qu'Apache HTTP Server, Internet Information Services ou le serveur web Zeus.

Historique

Icône de détail Article détaillé : World Wide Web#Historique.

HTTP a été découvert par Tim Berners-Lee avec les adresses web et le langage HTML pour créer le World Wide Web. À cette époque, le File Transfer Protocol (FTP) était déjà disponible pour transférer des fichiers, mais il ne supportait pas la notion de format de données telle qu'introduite par Multipurpose Internet Mail Extensions (MIME). La première version de HTTP était particulièrement élémentaire, mais prévoyait déjà le support d'en-têtes MIME pour décrire les données transmises. Cette première version reste toujours partiellement utilisable en 2007, connue sous le nom de HTTP/0.9.

En mai 1996, HTTP/1.0 devient finalement standard de l'IETF et est décrit dans la RFC 1945. Cette version supporte les serveurs HTTP virtuels, la gestion de cache et l'identification.

En janvier 1997, HTTP/1.1 est décrit dans la RFC 2068 de l'IETF, puis dans la RFC 2616 en juin 1999. Cette version ajoute le support du transfert en pipeline et la négociation de type de contenu (format de données, langue).

Du client au serveur

La liaison entre le client et le serveur n'est pas forcément directe, il peut exister des machines intermédiaires servant de relais :

Méthodes

Dans le protocole HTTP, une méthode est une Commande spécifiant un type de requête, c'est-à-dire qu'elle demande au serveur d'effectuer une action. En général l'action concerne une ressource identifiée par l'URL qui suit le nom de la méthode.

GET
C'est la méthode la plus courante pour demander une ressource. Une requête GET est sans effet sur la ressource, il doit être envisageable de répéter la requête sans effet.
HEAD
Cette méthode ne demande que des informations sur la ressource, sans demander la ressource elle-même.
POST
Cette méthode doit être utilisée pour ajouter une nouvelle ressource (un message sur un forum ou un article dans un site). L'URI apportée est l'URI d'une ressource liée à la nouvelle ressource (comme l'URI du forum ou site) et non l'URI de la ressource nouvellement crée.
OPTIONS
Cette méthode permet d'obtenir les options de communication d'une ressource ou du serveur en général.
CONNECT
Cette méthode permet d'utiliser un proxy comme un tunnel de communication.
TRACE
Cette méthode demande au serveur de retourner ce qu'il a reçu, dans l'objectif de tester et effectuer un diagnostic sur la connexion.
PUT
Cette méthode sert à remplacer ou d'ajouter une ressource sur le serveur. L'URI apporté est celui de la ressource en question.
DELETE
Cette méthode sert à supprimer une ressource du serveur.

Ces 2 dernières méthodes nécessitent généralement un accès privilégié.

Certains serveurs autorisent d'autres méthodes de gestion des ressources du serveur (par exemple WebDAV).

Identification

HTTP permet l'identification du visiteur par transmission d'un nom et d'un mot de passe. Il existe 2 modes d'identification : Basic et Digest (RFC 2617). Le premier mode transmet le mot de passe en clair, et ne doit par conséquent être utilisé qu'avec le protocole HTTPS. Le deuxième mode permet une identification sans transmettre le mot de passe en clair. L'identification est cependant fréquemment effectuée par une couche applicative supérieure à HTTP.

HTTP 0.9

Au début du World Wide Web, il était prévu d'ajouter au protocole HTTP des capacités de négociation de contenu, en s'inspirant surtout de MIME. En attendant, le protocole HTTP 0.9 était extrêmement simple.

  1. connexion du client HTTP
  2. envoi d'une requête de méthode GET
  3. réponse du serveur HTTP
  4. le serveur ferme la connexion pour signaler la fin de la réponse.

Requête :

GET /page.html

La méthode GET est l'unique envisageable. Le serveur reconnaît qu'il a affaire à une requête HTTP 0.9 au fait que la version n'est pas précisée suite à l'URI.

Réponse :

<HTML>
<HEAD>
<TITLE>Example</TITLE>
</HEAD>
<BODY>
<P>Ceci est une page d'exemple.</P>
</BODY>
</HTML>

Pour répondre à une requête HTTP 0.9, le serveur envoie directement le contenu de la réponse, sans méta-données. Il ne doit jamais se comporter ainsi pour les requêtes HTTP de version supérieure.

Inutile de chercher les versions inférieures à 0.9 du protocole HTTP : elles n'existent pas, car HTTP 0.9 n'avait originellement pas de numéro de version. Il a fallu lui en attribuer un lorsque HTTP 1.0 est arrivé.

HTTP 1.0

Le protocole HTTP 1.0, décrit dans le RFC 1945, prévoit l'utilisation d'en-têtes inspirés de MIME. La gestion de la connexion reste semblable à HTTP 0.9 : le client établit la connexion, envoie une requête, le serveur répond et ferme immédiatement la connexion.

Une requête HTTP présente le format suivant :

     Ligne de commande (Commande, URL, Version de protocole)
     En-tête de requête
     [Ligne vide]
     Corps de requête

Les réponses HTTP présentent le format suivant :

     Ligne de statut (Version, Code-réponse, Texte-réponse)
     En-tête de réponse
     [Ligne vide]
     Corps de réponse

Requête :

GET /page.html HTTP/1.0
Host: example.com
Referer: http://example.com/
User-Agent: CERN-LineMode/2.15 libwww/2.17b3

La version du protocole HTTP est précisée suite à l'URI. La requête doit être terminée par un double retour à la ligne (CRLFCRLF). HTTP 1.0 supporte aussi les méthodes HEAD et POST. On constate l'usage d'en-têtes inspirés de MIME pour transférer les méta-données :

Host
Permet de préciser le site web concerné par la requête, ce qui est indispensable pour un serveur hébergeant plusieurs sites à la même adresse IP (name based virtual host, hôte virtuel basé sur le nom). C'est l'unique en-tête réellement important.
Referer
Indique l'URI du document qui a donné un lien sur la ressource demandée. Cet en-tête permet aux webmasters d'observer d'où viennent les visiteurs.
User-Agent
Indique le logiciel utilisé pour se connecter. Il s'agit généralement d'un navigateur web ou d'un robot d'indexation.

Réponse :

HTTP/1.0 200 OK
Date: Fri, 31 Dec 1999 23:59:59 GMT
Server: Apache/0.8.4
Content-Type: text/html
Content-Length: 59
Expires: Sat, 01 Jan 2000 00:59:59 GMT
Last-modified: Fri, 09 Aug 1996 14:21:40 GMT

<TITLE>Exemple</TITLE>
<P>Ceci est une page d'exemple.</P>

La première ligne donne le code de statut HTTP (200 alors).

Date
Moment auquel le message est généré.
Server
Indique quel modèle de serveur HTTP répond à la requête.
Content-Length
Indique la taille en octets de la ressource.
Content-Type
Indique le type MIME de la ressource.
Expires
Indique le moment après lequel la ressource devrait être reconnue obsolète ; permet aux navigateurs web de déterminer jusqu'à lorsque garder la ressource en mémoire cache.
Last-Modified
Indique la date de dernière modification de la ressource demandée.

HTTP 1.1

Le protocole HTTP 1.1 est décrit par le RFC 2616 qui rend le RFC 2068 obsolète. La différence avec HTTP 1.0 est une meilleure gestion du cache. L'en-tête Host devient obligatoire dans les requêtes.

Les soucis majeurs des deux premières versions du protocole HTTP sont d'une part le nombre important de connexions lors du chargement d'une page complexe (contenant énormément d'images ou d'animations) et d'autre part le temps d'ouverture d'une connexion entre client et serveur (l'établissement d'une connexion TCP prend un temps triple de la latence entre client et serveur). Des expérimentations de connexions persistantes ont cependant été effectuées avec HTTP 1.0 (surtout par l'emploi de l'en-tête Connection : Keep-Alive), mais cela n'a été définitivement mis au point qu'avec HTTP 1.1.

Par défaut, HTTP 1.1 utilise des connexions persistantes, c'est à dire la connexion n'est pas immédiatement fermée après une requête, mais reste disponible pour une nouvelle requête. On nomme fréquemment cette fonctionnalité keep-alive. Il est aussi permis à un client HTTP d'envoyer plusieurs requêtes sur la même connexion sans attendre les réponses. On nomme cette fonctionnalité pipelining. La persistance des connexions permet d'accélérer le chargement de pages contenant plusieurs ressources, tout en diminuant la charge du réseau.

La gestion de la persistance d'une connexion est gérée par l'en-tête Connection.

HTTP 1.1 supporte la négociation de contenu. Un client HTTP 1.1 peut accompagner la requête pour une ressource d'en-têtes indiquant quels sont les langues et formats de données préférés. Il s'agit des en-têtes dont le nom débute par Accept-.

Les en-têtes supplémentaires supportés par HTTP 1.1 sont :

Connection
Cet en-tête peut être envoyé par le client ou le serveur et contient une liste de noms spécifiant les options à utiliser avec la connexion actuelle. Si une option possède des paramètres ceux-ci sont spécifiés par l'en-tête portant le même nom que l'option (Keep-Alive par exemple, pour spécifier le nombre maximum de requêtes par connexion). Le nom close est réservé pour spécifier que la connexion doit être fermée après traitement de la requête en cours.
Accept
Cet en-tête liste les types MIME de contenu acceptés par le client. Le caractère étoile * peut servir à spécifier l'ensemble des types / sous-types.
Accept-Charset
Spécifie les encodages de caractères acceptés.
Accept-Language
Spécifie les langages acceptés.

L'ordre plutôt de chaque option (type, encodage ou langage) est spécifié par le paramètre optionnel q contenant une valeur décimale entre 0 (intolérable) et 1 (acceptable) inclus (3 décimales maximum après la virgule), valant 1 par défaut.

Le support des connexions persistantes doit aussi fonctionner dans les cas où la taille de la ressource n'est pas connue d'avance (ressource générée dynamiquement par le serveur, flux externe au serveur, …).

Pour cela, l'encodage de transfert appelé chunked sert à transmettre la ressource par morceaux consécutifs en précédant chacun par une ligne de texte donnant la taille de ce dernier en hexadécimal. Le transfert se termine dans ce cas par un morceau de taille nulle, où des en-têtes finaux peuvent être envoyés.

Les en-têtes supplémentaires liés à cet encodage de transfert sont :

Transfer-Encoding
Spécifie l'encodage de transfert. L'unique valeur définie par la spécification RFC 2616 est chunked.
Trailer
Liste l'ensemble des en-têtes figurant après le dernier morceau transféré.
TE
Envoyé par le client pour spécifier les encodages de contenu supportés (Content-Encoding, ne pas confondre avec Transfer-Encoding car chunked est obligatoirement supporté par les clients et serveurs implémentant le standard HTTP/1.1), et spécifie si le client supporte l'en-tête Trailer en ajoutant trailers à la liste.

HTTPS

HTTPS (avec S pour secured, soit «sécurisé») est la simple combinaison de HTTP avec SSL ou TLS.

Il permet au visiteur de vérifier l'identité du site auquel il accède grâce à un certificat d'authentification. Il garantit la confidentialité et l'intégrité des données envoyées par l'utilisateur (surtout des informations entrées dans les formulaires) et reçues du serveur.

Il est généralement utilisé pour les transactions financières en ligne : commerce électronique, banque en ligne, courtage en ligne, etc. Il est aussi utilisé pour la consultation de données privées, comme les courriers électroniques par exemple.

Le port par défaut de HTTPS est 443.

Liste de serveurs HTTP

Liens externes


Recherche sur Amazone (livres) :



Ce texte est issu de l'encyclopédie Wikipedia. Vous pouvez consulter sa version originale dans cette encyclopédie à l'adresse http://fr.wikipedia.org/wiki/HTTP.
Voir la liste des contributeurs.
La version présentée ici à été extraite depuis cette source le 11/03/2009.
Ce texte est disponible sous les termes de la licence de documentation libre GNU (GFDL).
La liste des définitions proposées en tête de page est une sélection parmi les résultats obtenus à l'aide de la commande "define:" de Google.
Cette page fait partie du projet Wikibis.
Accueil Recherche Aller au contenuDébut page
ContactContact ImprimerImprimer liens d'évitement et raccourcis clavierAccessibilité
Aller au menu