Hypertext Transfer Protocol
Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

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 (L’usage est l'action de se servir de quelque chose.) 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 (Le transport est le fait de porter quelque chose, ou quelqu'un, d'un lieu à un autre, le plus souvent en utilisant des véhicules et des voies de communications (la route, le canal...). Un serveur HTTP utilise alors par défaut le port 80 (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...) (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 (Dans les technologies de l'information (TI), une donnée est une description élémentaire, souvent codée, d'une chose, d'une transaction d'affaire, d'un événement, etc.). Il existe aussi des systèmes 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 (Internet est le réseau informatique mondial qui rend accessibles au public des services variés comme le courrier électronique, la messagerie instantanée et le World Wide Web, en utilisant le protocole de communication IP...) Information Services ou le serveur web Zeus (Le serveur Web Zeus est un serveur pour les plateformes UNIX (incluant Linux).).

Historique

HTTP a été inventé par Tim Berners-Lee (Tim Berners-Lee - citoyen britannique né à Londres le 8 juin 1955 et dont le nom complet est Sir Timothy John Berners-Lee - est le principal inventeur du World Wide Web. Il préside aujourd'hui le...) avec les adresses web et le langage HTML pour créer le World Wide Web (Le World Wide Web, littéralement la « toile (d’araignée) mondiale », communément appelé le Web, le web parfois la Toile ou le WWW, est un système...). À 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 (Le format des données est la manière utilisée en informatique pour représenter des données sous forme de nombres binaires. C'est une convention (éventuellement normalisée) utilisée pour représenter des données, soit des...) telle qu'introduite par Multipurpose Internet Mail Extensions (Multipurpose Internet Mail Extensions (MIME) est un standard internet qui étend le format de données des courriels pour supporter des textes en différents codage de caractères autres que l'ASCII, des contenus non...) (MIME). La première version de HTTP était très basique, mais prévoyait déjà le support d'en-têtes MIME pour décrire les données transmises. Cette première version reste encore 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 (La négociation est la recherche d'un accord, centrée sur des intérêts matériels ou des enjeux quantifiables entre deux ou plusieurs interlocuteurs (on ne négocie pas...) de type de contenu (format de données, langue).

Du client (Le mot client a plusieurs acceptations :) au serveur

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

  • Un serveur mandataire (Un serveur mandataire ou proxy (de l'anglais) est un serveur informatique qui a pour fonction de relayer des requêtes entre un poste client et un serveur. Les serveurs mandataires sont...) (ou proxy) peut modifier les réponses et requêtes qu'il reçoit et peut gérer un cache des ressources demandées.
  • Une passerelle (ou gateway) est un intermédiaire modifiant le protocole utilisé.
  • Un tunnel (Un tunnel est une galerie souterraine livrant passage à une voie de communication (chemin de fer, canal, route, chemin piétonnier). Sont apparentés aux tunnels par leur mode de construction les grands ouvrages hydrauliques...) transmet les requêtes et les réponses sans aucune modification, ni mise en cache.

Méthodes

Dans le protocole HTTP, une méthode est une Commande (Commande : terme utilisé dans de nombreux domaines, généralement il désigne un ordre ou un souhait impératif.) spécifiant un type de requête (Le mot requête, synonyme de demande, est employé dans les domaines suivants :), 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 possible 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 (La théorie de l'information fut mise au point pour déterminer mathématiquement le taux d’information transmis dans la communication d’un message par un canal de...) sur un forum ou un article dans un site). L'URI fournie 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 (La communication concerne aussi bien l'homme (communication intra-psychique, interpersonnelle, groupale...) que l'animal (communication intra- ou inter- espèces) ou la machine (télécommunications, nouvelles...) 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 (TRACE est un télescope spatial de la NASA conçu pour étudier la connexion entre le champ magnétique à petite échelle du Soleil et la géométrie du plasma coronal, à travers des...)
Cette méthode demande au serveur de retourner ce qu'il a reçu, dans le but de tester et effectuer un diagnostic (Le diagnostic (du grec δι?γνωση, diágnosi, à partir de δια-, dia-, „par, à travers, séparation, distinction“...) sur la connexion.
PUT
Cette méthode permet de remplacer ou d'ajouter une ressource sur le serveur. L'URI fourni (Les Foúrnoi Korséon (Grec: Φούρνοι Κορσέων) appelés plus communément Fourni, sont...) est celui de la ressource en question.
DELETE
Cette méthode permet de 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 donc ê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 souvent 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 notamment 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 la seule possible. 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 :

 
  
  
 Example 
  
  
 

Ceci est une page d'exemple.

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 initialement pas de numéro de version. Il a fallu lui en attribuer un quand 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 identique à 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 (Le vide est ordinairement défini comme l'absence de matière dans une zone spatiale.)] 
 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 (Un site Web est un ensemble de pages Web hyperliées entre elles et mises en ligne à une adresse Web. On dit aussi site Internet par métonymie, le World Wide Web reposant sur Internet.) concerné par la requête, ce qui est nécessaire pour un serveur hébergeant plusieurs sites à la même adresse IP (Une adresse IP (avec IP pour Internet Protocol) est le numéro qui identifie chaque ordinateur connecté à Internet, ou plus généralement et précisément, l'interface...) (name based virtual host, hôte virtuel basé sur le nom). C'est le seul en-tête réellement important.
Referer
Indique l'URI du document (Dans son acception courante un document est généralement défini comme le support physique d'une information.) 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 (En informatique, un logiciel est un ensemble d'informations relatives à des traitements effectués automatiquement par un appareil informatique. Y sont inclus les...) utilisé pour se connecter. Il s'agit généralement d'un navigateur web (Un navigateur Web est un logiciel conçu pour consulter le World Wide Web. Techniquement, c'est au minimum un client HTTP.) ou d'un robot (Un robot est un dispositif mécatronique (alliant mécanique, électronique et informatique) accomplissant automatiquement soit des tâches qui sont généralement...) 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 
 Example 
 

Ceci est une page d'exemple.

La première ligne donne le code de statut HTTP (200 dans ce cas).

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 considérée obsolète ; permet aux navigateurs web de déterminer jusqu'à quand garder la ressource en mémoire (D'une manière générale, la mémoire est le stockage de l'information. C'est aussi le souvenir d'une information.) 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 (La notion de nombre en linguistique est traitée à l’article « Nombre grammatical ».) important de connexions lors du chargement (Le mot chargement peut désigner l'action de charger ou son résultat :) d'une page complexe (contenant beaucoup d'images ou d'animations) et d'autre part le temps (Le temps est un concept développé par l'être humain pour appréhender le changement dans le monde.) 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 (notamment par l'emploi de l'en-tête Connection: Keep-Alive), mais cela n'a été définitivement mis au point (Graphie) qu'avec HTTP 1.1.

Par défaut, HTTP 1.1 utilise des connexions persistantes, autrement dit la connexion n'est pas immédiatement fermée après une requête, mais reste disponible pour une nouvelle requête. On appelle souvent 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 appelle cette fonctionnalité pipelining. La persistance ( Persistance (statistiques) Persistance (informatique) en peinture : La Persistance de la mémoire (1931) en médecine : la...) des connexions permet d'accélérer le chargement de pages contenant plusieurs ressources, tout (Le tout compris comme ensemble de ce qui existe est souvent interprété comme le monde ou l'univers.) en diminuant la charge (La charge utile (payload en anglais ; la charge payante) représente ce qui est effectivement transporté par un moyen de transport donné, et qui donne lieu à un paiement ou un bénéfice non pécuniaire pour...) du réseau (Un réseau informatique est un ensemble d'équipements reliés entre eux pour échanger des informations. Par analogie avec un filet (un réseau est un « petit rets », c'est-à-dire un petit filet), on appelle nœud (node)...).

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 commence 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 nom 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 reservé 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 (Une étoile est un objet céleste émettant de la lumière de façon autonome, semblable à une énorme boule de plasma comme le Soleil, qui est l'étoile la plus proche de la Terre.) * peut servir à spécifier tous les types / sous-types.
Accept-Charset
Spécifie les encodages de caractères acceptés.
Accept-Language
Spécifie les langages acceptés.

L'ordre de préférence de chaque option (type, encodage ou langage) est spécifié par le paramètre (Un paramètre est au sens large un élément d'information à prendre en compte pour prendre une décision ou pour effectuer un calcul.) optionnel q contenant une valeur décimale entre 0 (inacceptable) et 1 (acceptable) inclus (3 décimales maximum après la virgule), valant 1 par défaut.

Le support des connexions persistantes doit également 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 (Le mot flux (du latin fluxus, écoulement) désigne en général un ensemble d'éléments (informations / données, énergie, matière, ...) évoluant dans un sens commun. Plus précisément le terme est employé dans les...) externe au serveur, ...).

Pour cela, l'encodage de transfert nommé chunked permet de transmettre la ressource par morceaux consécutifs en précédant chacun par une ligne de texte donnant la taille de celui-ci en hexadécimal. Le transfert se termine alors 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. La seule valeur définie par la spécification RFC 2616 est chunked.
Trailer
Liste tous les 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 (Une combinaison peut être :) 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 (notamment 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 (Le commerce électronique (e-commerce, en anglais) désigne l'échange de biens et de services entre deux entités sur les réseaux informatiques, notamment Internet. Il représente un marché de 10 milliards d’euros de Chiffre d'Affaire....), 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.

Page générée en 0.496 seconde(s) - site hébergé chez Amen
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
Ce site est édité par Techno-Science.net - A propos - Informations légales
Partenaire: HD-Numérique