Anda di halaman 1dari 6

Hypertext Transfer Protocol

L'HyperText Transfer Protocol, plus connu sous


l'abrviation HTTP littralement protocole de
transfert hypertexte est un protocole de communication client-serveur dvelopp pour le World Wide
Web. HTTPS (avec S pour secured, soit scuris ) est
la variante du HTTP scurise par l'usage des protocoles
SSL ou TLS.

part.
En fvrier 2014, la spcication de HTTP 1.1 a t republie. Elle a t clate en plusieurs RFC et corrige pour
toutes ses imprcisions, RFC 7230 RFC 7237.

2 Implmentation

HTTP est un protocole de la couche application. Il peut


fonctionner sur n'importe quelle connexion able, dans
les faits on utilise le protocole TCP comme couche de 2.1
transport. Un serveur HTTP utilise alors par dfaut le port
80 (443 pour HTTPS).

Mthodes

Les clients HTTP les plus connus sont les navigateurs


Web permettant un utilisateur d'accder un serveur
contenant les donnes. Il existe aussi des systmes pour
rcuprer automatiquement le contenu d'un site tel que
les aspirateurs de site Web ou les robots d'indexation.
Ces clients se connectent des serveurs HTTP tels
qu'Apache HTTP Server ou Internet Information Services.
Capture d'cran d'une requte GET et de sa rponse.

Historique

Dans le protocole HTTP, une mthode est une Commande spciant un type de requte, c'est--dire qu'elle
demande au serveur d'eectuer une action. En gnral
l'action concerne une ressource identie par l'URL qui
suit le nom de la mthode.

Article dtaill : World Wide Web#Histoire.


HTTP a t invent par Tim Berners-Lee avec les
adresses Web et le langage HTML pour crer le World
Wide Web. cette poque, le File Transfer Protocol
(FTP) tait dj disponible pour transfrer des chiers,
mais il ne supportait pas la notion de format de donnes telle qu'introduite par Multipurpose Internet Mail Extensions (MIME). La premire version de HTTP tait
trs lmentaire, mais prvoyait dj le support d'en-ttes
MIME pour dcrire les donnes transmises. Cette premire version reste encore partiellement utilisable de nos
jours, connue sous le nom de HTTP/0.9.

Dans l'illustration ci-contre, une requte GET est envoye


pour rcuprer la page d'accueil du site web www.perdu.
com :
GET / HTTP/1.1 Host : www.perdu.com
Il existe de nombreuses mthodes, les plus courantes tant
GET, HEAD et POST :

GET C'est la mthode la plus courante pour demander


une ressource. Une requte GET est sans eet sur la
ressource, il doit tre possible de rpter la requte
En mai 1996, HTTP/1.0 voit le jour et est dcrit dans
sans eet.
la RFC 1945. Cette version supporte les serveurs HTTP
virtuels, la gestion de cache et l'identication.
HEAD Cette mthode ne demande que des informations
sur la ressource, sans demander la ressource elleEn janvier 1997, HTTP/1.1 devient nalement standard
mme.
de l'IETF. Il est dcrit dans la RFC 2068 de l'IETF, puis
dans la RFC 2616 en juin 1999. Cette version ajoute le POST Cette mthode est utilise pour transmettre des
support du transfert en pipeline (ou pipelinage) et la ndonnes en vue d'un traitement une ressource (le
gociation de type de contenu (format de donnes, langue).
plus souvent depuis un formulaire HTML). L'URI
En mars 2012, les travaux propos de HTTP/2.0 dmarrent l'IETF adoptant SPDY comme matriel de d-

fourni est l'URI d'une ressource laquelle sappliqueront les donnes envoyes. Le rsultat peut tre la
1

2 IMPLMENTATION

cration de nouvelles ressources ou la modication 2.4 Liste de serveurs HTTP


de ressources existantes. cause de la mauvaise implmentation des mthodes HTTP (pour Ajax) par Article dtaill : Serveur HTTP.
certains navigateurs (et la norme HTML qui ne supporte que les mthodes GET et POST pour les for C : Apache, Zeus Web Server, nginx, lighttpd,
mulaires), cette mthode est souvent utilise en remCherokee, Hiawatha Webserver
placement de la requte PUT, qui devrait tre utilise pour la mise jour de ressources.
ASP/ASP.Net(C#, VB.net) : IIS
OPTIONS Cette mthode permet d'obtenir les options
Java : Tomcat, Jetty, GlassFish, JBoss, JOnAS,
de communication d'une ressource ou du serveur en
Vert.x
gnral.
Python : Zope
CONNECT Cette mthode permet d'utiliser un proxy
comme un tunnel de communication.

Pike : Caudium

TRACE Cette mthode demande au serveur de retourner ce qu'il a reu, dans le but de tester et eectuer
un diagnostic sur la connexion.

Ruby : WEBrick, Mongrel, Thin

PUT Cette mthode permet de remplacer ou d'ajouter


une ressource sur le serveur. L'URI fourni est celui
de la ressource en question.

Javascript : Node.js

PATCH Cette mthode permet, contrairement PUT,


de faire une modication partielle d'une ressource.

Erlang : Yaws
Autres : (en) Comparison of web servers

2.5 Versions

DELETE Cette mthode permet de supprimer une res- 2.5.1 HTTP 0.9
source du serveur.
Au dbut du World Wide Web, il tait prvu d'ajouter au
Ces 3 dernires mthodes ncessitent gnralement un protocole HTTP des capacits de ngociation de conteaccs privilgi.
nu, en sinspirant notamment de MIME. En attendant, le
Certains serveurs autorisent d'autres mthodes de gestion protocole HTTP 0.9 tait extrmement simple.
de leurs ressources (par exemple WebDAV).
1. connexion du client HTTP

2.2

Du client au serveur

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

2. envoi d'une requte de mthode GET


3. rponse du serveur HTTP
4. le serveur ferme la connexion pour signaler la n de
la rponse.

Un proxy (ou serveur mandataire) peut modier les Requte :


rponses et requtes qu'il reoit et peut grer un
GET /page.html
cache des ressources demandes.
La mthode GET est la seule possible. Le serveur recon Une passerelle (ou gateway) est un intermdiaire
nat qu'il a aaire une requte HTTP 0.9 au fait que la
modiant le protocole utilis.
version n'est pas prcise suite l'URI.
Un tunnel transmet les requtes et les rponses sans
Rponse :
aucune modication, ni mise en cache.
<HTML> <HEAD> <TITLE>Exemple</TITLE>
</HEAD> <BODY> <P>Ceci est une page
2.3 Identication
d'exemple.</P> </BODY> </HTML>
HTTP permet l'identication du visiteur par transmission d'un nom et d'un mot de passe. Il existe 2 modes
d'identication : 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 deuxime
mode permet une identication sans transmettre le mot
de passe en clair. L'identication est cependant souvent
eectue par une couche applicative suprieure HTTP.

Pour rpondre une requte HTTP 0.9, le serveur envoie


directement le contenu de la rponse, sans mta-donnes.
Il ne doit jamais se comporter ainsi pour les requtes
HTTP de version suprieure.
Inutile de chercher les versions infrieures 0.9 du protocole HTTP : elles n'existent pas, car HTTP 0.9 n'avait
initialement pas de numro de version. Il a fallu lui en
attribuer un quand HTTP 1.0 est arriv.

2.5
2.5.2

Versions

HTTP 1.0

Expires Indique le moment aprs lequel la ressource devrait tre considre obsolte ; permet aux navigaLe protocole HTTP 1.0, dcrit dans la RFC 1945, prteurs Web de dterminer jusqu' quand garder la resvoit l'utilisation d'en-ttes spcis dans la RFC 822. La
source en mmoire cache.
gestion de la connexion reste identique HTTP 0.9 : le
Last-Modied Indique la date de dernire modication
client tablit la connexion, envoie une requte, le serveur
de la ressource demande.
rpond et ferme immdiatement la connexion.
Une requte HTTP prsente le format suivant :

2.5.3 HTTP 1.1


Ligne de commande (Commande, URL, Version de protocole) En-tte de requte [Ligne vide] Corps de requte Le protocole HTTP 1.1 est dcrit par le RFC 2616 qui
rend le RFC 2068 obsolte. La dirence avec HTTP 1.0
Les rponses HTTP prsentent le format suivant :
est une meilleure gestion du cache. L'en-tte Host devient
Ligne de statut (Version, Code-rponse, Texte-rponse)
obligatoire dans les requtes.
En-tte de rponse [Ligne vide] Corps de rponse
Les soucis majeurs des deux premires versions du proRequte :
tocole HTTP sont d'une part le nombre important de
GET /page.html HTTP/1.0 Host : example.com connexions lors du chargement d'une page complexe
Referer : http://example.com/ User-Agent : CERN- (contenant beaucoup d'images ou d'animations) et d'autre
LineMode/2.15 libwww/2.17b3
part le temps d'ouverture d'une connexion entre client et
La version du protocole HTTP est prcise suite l'URI. serveur (l'tablissement d'une connexion TCP prend un
La requte doit tre termine par un double retour la temps triple de la latence entre client et serveur). Des exligne (CRLFCRLF). HTTP 1.0 supporte aussi les m- primentations de connexions persistantes ont cependant
thodes HEAD et POST. On constate l'usage d'en-ttes t eectues avec HTTP 1.0 (notamment par l'emploi
de l'en-tte Connection : Keep-Alive), mais cela n'a t
inspirs de MIME pour transfrer les mta-donnes :
dnitivement mis au point qu'avec HTTP 1.1.
Par dfaut, HTTP 1.1 utilise des connexions persistantes,
autrement dit la connexion n'est pas immdiatement ferme aprs une requte, mais reste disponible pour une
nouvelle requte. On appelle souvent cette fonctionnalit
keep-alive. Il est aussi permis un client HTTP d'envoyer
plusieurs requtes sur la mme connexion sans attendre
Referer Indique l'URI du document qui a donn un lien les rponses. On appelle cette fonctionnalit pipelining.
sur la ressource demande. Cet en-tte permet aux La persistance des connexions permet d'acclrer le charwebmasters d'observer d'o viennent les visiteurs.
gement de pages contenant plusieurs ressources, tout en
diminuant la charge du rseau.
User-Agent Indique le logiciel utilis pour se connecter.
Il sagit gnralement d'un navigateur Web ou d'un La gestion de la persistance d'une connexion est gre par
l'en-tte Connection.
robot d'indexation.
Host Permet de prciser le site web concern par la requte, ce qui est ncessaire pour un serveur hbergeant plusieurs sites la mme adresse IP (name
based virtual host, hte virtuel bas sur le nom).
C'est le seul en-tte rellement important.

HTTP 1.1 supporte la ngociation de contenu. Un client


HTTP 1.1 peut accompagner la requte pour une resHTTP/1.0 200 OK Date : Fri, 31 Dec 1999 23 :59 :59 source d'en-ttes indiquant quels sont les langues et
GMT Server : Apache/0.8.4 Content-Type : text/html formats de donnes prfrs. Il sagit des en-ttes dont
Content-Length : 59 Expires : Sat, 01 Jan 2000 00 :59 :59 le nom commence par Accept-.
GMT Last-modied : Fri, 09 Aug 1996 14 :21 :40 Les en-ttes supplmentaires supports par HTTP 1.1
GMT <TITLE>Exemple</TITLE> <P>Ceci est une sont :
page d'exemple.</P>
La premire ligne donne le code de statut HTTP (200 Connection Cet en-tte peut tre envoy par le client ou
le serveur et contient une liste de noms spciant les
dans ce cas).
options utiliser avec la connexion actuelle. Si une
option possde des paramtres ceux-ci sont spciDate Moment auquel le message est gnr.
s par l'en-tte portant le mme nom que l'option
(Keep-Alive par exemple, pour spcier le nombre
Server Indique quel modle de serveur HTTP rpond
maximum de requtes par connexion). Le nom close
la requte.
est rserv pour spcier que la connexion doit tre
Content-Type Indique le type MIME de la ressource.
ferme aprs traitement de la requte en cours.
Rponse :

Content-Length Indique la taille en octets de la res- Accept Cet en-tte liste les types MIME de contenu acsource.
cepts par le client. Le caractre toile * peut servir

2 IMPLMENTATION
spcier tous les types / sous-types.

Accept-Charset Spcie les encodages de caractres


accepts.
Accept-Language Spcie les langues acceptes.
L'ordre de prfrence de chaque option (type, encodage
ou langue) est spci par le paramtre optionnel q contenant une valeur dcimale entre 0 (inacceptable) et 1 (acceptable) inclus (3 dcimales maximum aprs la virgule),
valant 1 par dfaut.
Le support des connexions persistantes doit galement
fonctionner dans les cas o la taille de la ressource n'est
pas connue d'avance (ressource gnre dynamiquement
par le serveur, ux externe au serveur, ).
Article dtaill : Chunked transfer encoding.

RFC 7232 Hypertext Transfer Protocol


(HTTP/1.1) : Conditional Requests (Standard
propos)
RFC 7233 Hypertext Transfer Protocol
(HTTP/1.1) : Range Requests (Standard propos)
RFC 7234 Hypertext Transfer Protocol
(HTTP/1.1) : Caching (Standard propos)
RFC 7235 Hypertext Transfer Protocol
(HTTP/1.1) : Authentication (Standard propos)
RFC 7236 Hypertext Transfer Protocol
(HTTP/1.1) : Authentication Scheme Registrations
(Information)

Pour cela, l'encodage de transfert nomm chunked per RFC 7237 Hypertext Transfer Protocol
met de transmettre la ressource par morceaux conscu(HTTP/1.1) : Method Registrations (informatifs en prcdant chacun par une ligne de texte donnant la
tion)
taille de celui-ci en hexadcimal. Le transfert se termine
alors par un morceau de taille nulle, o des en-ttes naux
peuvent tre envoys.
2.5.5 HTTP/2
Les en-ttes supplmentaires lis cet encodage de transUne nouvelle version d'HTTP, HTTP/2, a t dveloppe
fert sont :
au sein du groupe de travail Hypertext Transfer Protocol
Transfer-Encoding Spcie l'encodage de transfert. La Bis (httpbis) de l'Internet Engineering Task Force[1] , et
seule valeur dnie par la spcication RFC 2616 approuve comme RFC standard le 18 fvrier 2015[2] . Le
dveloppement d'HTTP/2 a dbut la suite de la craest chunked.
tion du protocole SPDY propos par Google an de r[3],[4]
. Le
Trailer Liste tous les en-ttes gurant aprs le dernier duire le temps de chargement des pages Web
groupe de travail httpbis stait initialement interdit de
morceau transfr.
proposer une nouvelle version d'HTTP, concentrant son
TE Envoy par le client pour spcier les encodages activit sur la clarication des spcications d'HTTP 1.1.
de contenu supports (Content-Encoding, ne pas Considrant l'arrive de SPDY et son adoption rapide
confondre avec Transfer-Encoding car chunked sur le Web, avec notamment des implmentations dans
est obligatoirement support par les clients et ser- deux des principaux navigateurs Web, Google Chrome et
veurs implmentant le standard HTTP/1.1), et sp- Mozilla Firefox, Mark Nottingham, chair d'httpbis,
cie si le client supporte l'en-tte Trailer en ajoutant a mis l'opinion qu'il tait temps d'envisager HTTP/2 et
trailers la liste.
propos d'amender la charte d'httpbis en ce sens, initiant
de fait le dveloppement du nouveau protocole[5] .
2.5.4

HTTP 1.1 bis

RFC 2616 comprenait de nombreuses imprcisions. Le


groupe de travail HTTP a pris quelques annes an de
clarier la spcication sans en modier la smantique tel
que prconis dans la charte de fonctionnement du groupe
pour ce travail. En juin 2014, 8 nouveaux documents ont
t publis qui rendent obsoltes la RFC 2616 :
RFC 7230 Hypertext Transfer Protocol
(HTTP/1.1) : Message Syntax and Routing
(Standard propos)

SPDY constituait une option naturelle pour servir de base


HTTP/2. Deux autres propositions concurrentes ont
t ensuite transmises l'IETF : le protocole HTTP
Speed+Mobility par Microsoft[6] et une proposition de
mise jour d'HTTP ( Network-Friendly HTTP Upgrade )[7] . En juillet 2012, httpbis a publi un appel expression d'intrt ( Call for Expression of Interest ) an
de recueillir l'avis d'acteurs du Web sur les propositions[8] .
Parmi les rponses obtenues gure celle de Facebook
qui a signi sa prfrence pour SPDY[9] . En novembre
2012, l'IETF a publi le premier draft d'HTTP/2, qui est
une copie directe de SPDY[10] .

RFC 7231 Hypertext Transfer Protocol Aprs plus de 2 ans de discussions, la RFC est approuve
(HTTP/1.1) : Semantics and Content (Standard en fvrier 2015 par le groupe de pilotage de l'IETF, et est
propos)
publie en mai 2015.

4.2

Liens externes

Notes et rfrences

[1] (en) Hypertext Transfer Protocol Bis (httpbis) , sur datatracker.ietf.org (consult le 14 novembre 2013)
[2] (en) HTTP/2 Approved , sur www.ietf.org (consult le
19 fvrier 2015)
[3] (en) SPDY : An experimental protocol for a faster web
(consult le 14 novembre 2013)

5
(en) Extension LiveHTTPheaders pour Firefox
(en) RFC 2617, HTTP Authentication : Basic and
Digest Access Authentication, juin 1999
(en) Freeware Protocol Logger sur HttpTea
(en) View Online HTTP Request and Response
Header
Dossier thmatique sur le HTTPS sur cases.lu

[4] SPDY Protocol (Internet draft) , fvrier 2012


[5] (en) Mark Nottingham, Rechartering HTTPbis , sur
lists.w3.org, 24 janvier 2012 (consult le 14 novembre
2013)
[6] (en) HTTP Speed+Mobility (Internet draft) , 15 juin
2012
[7] (en) Proposal for a Network-Friendly HTTP Upgrade ,
29 mars 2012
[8] (en) Call for Expressions of Interest , sur ietf.org, 3
juillet 2012
[9] (en) HTTP2 Expression of Interest , 15 juillet 2012
[10] (en) Dio Synodinos, HTTP 2.0 First Draft Published ,
sur InfoQ, 30 novembre 2012

Voir aussi

4.1

Articles connexes

Format ouvert
Interoprabilit
Liste des codes HTTP
Navigateur Web
Pipelining HTTP
Protocole de communication
Serveur HTTP
World Wide Web
HTTPS

4.2

Liens externes

(en) Hypertext Transfer Protocol 1.0 sur le site du


W3C
(en) Hypertext Transfer Protocol 1.1 sur le site de
l'IETF
(en) Hypertext Transfer Protocol Overview sur le site
du W3C

Portail des rseaux informatiques

Portail de linformatique

Portail des tlcommunications

Portail dInternet

SOURCES, CONTRIBUTEURS ET LICENCES DU TEXTE ET DE LIMAGE

Sources, contributeurs et licences du texte et de limage

5.1

Texte

Hypertext Transfer Protocol Source : https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol?oldid=119752524 Contributeurs : Hashar, Ryo, Snark Boojum, ArnoLagrange, Looxix, OlivierWeb, Popolon, Orthogae, Traroth, Oz, Alno, HasharBot, R, Zubro, L'Anome,
Aldoo, Titus72, Tieno, Hedi.zaher, Alkarex, Thelvin, Scullder, Marc Mongenet, MedBot, KarlDubost, Nnemo, Oblic, Francois Trazzi,
Phe-bot, Eberkut, Chrysander, Bibi Saint-Pol, Theocrite, Ollamh, Fylip22, AntoineI, Yorick, Notash, ClementSeveillac, Grimko, Witoki,
Ellywa, Yurik, Sherbrooke, El, DocteurCosmos, Apitux, Elg, Artichaut, ZeMeilleur, Like tears in rain, Neo971, Romanc19s, Dereckson, Arnaud.Serander, Gzen92, Uld, Record, Neustradamus, RobotQuistnix, FlaBot, Tavernier, Nicolas Lardot, CoolCubix, Ash Crow,
YurikBot, Eskimbot, Negon, Medium69, Lt-wiki-bot~frwiki, Guillom, Creak, Myst, Sitelec, Micamou, Akiry, Dmocrite, Bech, Gonioul,
Xofc, Esprit Fugace, Maxxtwayne, SashatoBot, Mwarf, Jbar, MetalGearLiquid, M LA, Poss Jean-Louis, PieRRoBoT, Stephane.lecorne,
Escalabot, Lancelotdm, Lorambo, Lechewal, Thijs !bot, Elemiah, Kyle the bot, Laurent Nguyen, JAnDbot, Corrosion, DavidL, Baltos,
Rmi Houdaille, Mishkoba, Nono64, DSCH, Sebleouf, Alchemica, BetBot~frwiki, Zouavman Le Zouave, Erabot, Salebot, Stef48, DodekBot~frwiki, Isaac Sanolnacov, DorganBot, Idioma-bot, TXiKiBoT, VolkovBot, Dalb, AmaraBot, Sulletf~frwiki, Chicobot, -Nmd, FrancoisT, ArnaudM, SieBot, Louperibot, Rsalen, Chacal65, OKBot, STBot~frwiki, LordAnubisBOT, ChDuos, Bubs,
robot, DumZiBoT, Davitof, GLec, DragonBot, Wcorrector, Arthur.dupont, Nutsy, Gaaab, HerculeBot, WikiCleanerBot, SilvonenBot, Luckas-bot,
Zandr4, Jotterbot, GrouchoBot, ZOTHOP, Pic-Sou, ArthurBot, Cantons-de-l'Est, D4m1en, Olivier d'ALLIVY KELLY, Xqbot, Obersachsebot, RibotBOT, Rubinbot, MastiBot, Axelm, Buisson, Visite fortuitement prolonge, Ripchip Bot, O-Mann, Harlock31, EmausBot,
Kilith, HRoestBot, Zizomis, Hlm Z., WikitanvirBot, Lemouelsss, Jules78120, Surdox, Lovasoa, 0x010C, MerlIwBot, Sodatux, GamerActu, OrlodrimBot, Tianjiao, CasualNib, Makecat-bot, OrikriBot, LectriceDuSoir, Mo5ul, Ngnth, Addbot, NexusNet, Rmein, Oblus,
Jeser~frwiki, NaggoBot et Anonyme : 132

5.2

Images

Fichier:Applications-internet.svg Source : https://upload.wikimedia.org/wikipedia/commons/7/70/Applications-internet.svg Licence :


Public domain Contributeurs : The Tango ! Desktop Project Artiste dorigine : The people from the Tango ! project
Fichier:Crystal_Clear_app_linneighborhood.png Source : https://upload.wikimedia.org/wikipedia/commons/d/d0/Crystal_Clear_
app_linneighborhood.png Licence : LGPL Contributeurs : All Crystal icons were posted by the author as LGPL on kde-look Artiste dorigine :
Everaldo Coelho and YellowIcon
Fichier:Crystal_mycomputer.png Source : https://upload.wikimedia.org/wikipedia/commons/e/e3/Crystal_mycomputer.png Licence :
LGPL Contributeurs : All Crystal icons were posted by the author as LGPL on kde-look Artiste dorigine : Everaldo Coelho (YellowIcon) ;
Fichier:Gtk-dialog-info.svg Source : https://upload.wikimedia.org/wikipedia/commons/b/b4/Gtk-dialog-info.svg Licence : LGPL
Contributeurs : http://ftp.gnome.org/pub/GNOME/sources/gnome-themes-extras/0.9/gnome-themes-extras-0.9.0.tar.gz Artiste dorigine :
David Vignoni
Fichier:Requte_HTTP.png Source : https://upload.wikimedia.org/wikipedia/commons/c/cd/Requ%C3%AAte_HTTP.png Licence :
Public domain Contributeurs : Travail personnel Artiste dorigine : Sbastien Santoro aka Dereckson
Fichier:Server-based-network.svg Source : https://upload.wikimedia.org/wikipedia/commons/f/fb/Server-based-network.svg Licence :
LGPL Contributeurs : derived from the Image:Computer n screen.svg which is under the GNU LGPL Artiste dorigine : User:Mauro Bieg

5.3

Licence du contenu

Creative Commons Attribution-Share Alike 3.0

Anda mungkin juga menyukai