HTTP (Hypertext Transfer Protocol) est le protocole applicatif de la couche 7 du modèle OSI utilisé pour l’échange de données du World Wide Web.
En d’autre terme, c’est le protocole qui permet pour la diffusion de pages WEB et le fonctionnement des sites internet.
Enfin HTTP a connu des évolutions et versions au fil du temps qui apportent des améliorations et nouvelles fonctionnalités.
Cet article vous dit tout sur les versions du protocole HTTP et son fonctionnement.

Table des matières
Qu’est-ce que HTTP ?
C’est le protocole de la couche applicatif comme, par exemple FTP (File Transfert Protocol) ou DNS (Domain Name System).
HTTP lui permet le fonctionnement des sites internet ou sites WEB.
Son fonctionnement est relativement simple.
D’un côté, un serveur WEB écoute sur le port réseau 80 ou 443 pour la version chiffrée puis un client se connecte à ce dernier.
La communication se fait alors au travers du protocole HTTP pour échanger les données et faire en sorte que le serveur WEB délivre le contenu WEB au client.
Cet échange de données se fait à travers des méthodes HTTP.
Enfin vous l’aurez compris, c’est un protocole client/serveur.
HTTP est développé conjointement par Internet Engineering Task Force (IETF) et the World Wide Web Consortium (W3C).
Ainsi diverses versions sont apparues et la dernière est la version 3.
Les versions de HTTP
Voici les dates de publication des spécifications de HTTP :
Année | Version de HTTP |
---|---|
1991 | 0.9 |
1996 | 1.0 |
1997 | 1.1 |
2015 | 2.0 |
2018 | 3.0 |
HTTP/1.1
Dans HTTP/1.0, une nouvelle connexion TCP est créée pour chaque échange de demande et réponse entre les clients et les serveurs.
Ainsi toutes les demandes encourent une pénalité de latence car les prises de contact TCP et TLS sont terminées avant chaque demande.
La révision HTTP/1.1 de la spécification HTTP a tenté de résoudre ces problèmes quelques années plus tard en introduisant le concept de connexions «keep-alive».
Cela permet aux clients de réutiliser les connexions TCP, et donc d’amortir le coût de l’établissement de la connexion initiale et de ralentir commencez par plusieurs demandes.
Mais ce n’était pas une solution miracle: alors que plusieurs demandes pouvaient partager la même connexion, elles devaient toujours être sérialisées l’une après l’autre.
Ainsi un client et un serveur ne pouvaient exécuter qu’un seul échange de demande et réponse à un moment donné pour chaque connexion.
HTTP/2
HTTP/2 vise à corriger les limitations de la version 1.1 et ainsi améliorer les temps de réponse de chargement des pages.
C’était d’autant plus nécessaires que les sites WEB sont devenus plus lourd avec le CSS, images et JavaScript.
Cela notamment à travers le protocole SPDY.
SPDY était un protocole expérimental, développé chez Google et annoncé à la mi-2009, dont l’objectif principal était d’essayer de réduire la latence de charge des pages Web en abordant certaines des limitations de performances bien connues de HTTP / 1.1.
Les spécifications de la version 2 du protocole HTTP ont commencé en 2009 pour se terminer en 2015.
Voici les améliorations apportées :
- Compression des en-têtes HTTP
- HTTP / 2 Serveur Push : cela permet de charger des ressources de manière préventives
- pipeline des demandes et le multiplexage de plusieurs requêtes sur une seule connexion TCP. HTTP/2 permet d’envoyer plusieurs stream dans une même connexion TCP.
- correction du problème de blocage de tête de ligne dans HTTP 1.x
Ainsi, HTTP/2 réduit le nombre de connexion TCP à une seule ce qui réduit le temps de chargement d’une page internet.
Enfin HTTP/2 apporte aussi la sécurité à travers Transport Layer Security (TLS) ce qui permet la mise en ligne de site WEB dit sécurisés :
HTTP/3
HTTP/3 tente aussi d’améliorer la vitesse de chargement des pages WEB à travers le protocole QUIC.
Quic est un protocole de transport développé par Google.
Ce dernier nommé au départ HTTP-over-QUIC a ensuite donné naissance à HTTP/3.
Une des particularités est qu’il utilise le protocole de transport UDP.
Ce dernier étant plus rapide que TCP.
Ainsi, le mode de connexion est totalement revu.
En HTTP/2, trois connexion successivement s’effectue :
- La connexion TCP avec sa poignée de main. Plus de détails : L’établissement d’une connexion TCP/IP
- Puis la connexion TLS : Protocole TLS : fonctionnement et différences entre les versions
- Enfin le protocole application HTTP.
Avec HTTP/3 on obtient ceci :
- La connexion TCP et TLS sont remplacés par le protocole QUIC
- Puis on retrouve le protocole applicatif HTTP
On voit donc que le nombre d’aller/retour est réduit pour une connexion WEB plus rapide.
HTTPS VS HTTP
HTTPS est la version sécurisé du protocole.
Vous trouverez des informations sur son fonctionnement dans l’article : Les sites HTTPs : pourquoi sont-ils sécurisés ?
Si vous vous posez des questions entre HTTP et HTTPS, le tutoriel suivant vous dit tout.
Le fonctionnement du protocole HTTP
On a donc d’un côté le client WEB et de l’autre le serveur WEB.
Mais comme ces derniers communiquent ?
A travers le protocole standard de communication reste HTTP.
Les méthodes HTTP
Dans le protocole HTTP, la communication entre le client et le serveur se base sur un ensemble de méthode.
Lors d’une requête HTTP par le navigateur WEB, ce dernier indique la méthode à utiliser dans l’en-tête.
Il en existe beaucoup mais voici les trois principales :
- DELETE supprime la ressource spécifiée
- GET : on demande une ressource au serveur WEB. En général, il s’agit du contenu d’une page WEB
- HEAD : On demande QUE le contenu d’une en-tête HTTP
- PUT est utilisé pour envoyer des données à un serveur pour créer / mettre à jour une ressource
- OPTIONS décrit les options de communication pour la ressource cible
- POST : permet d’insérer ou mettre à jour une donnée
Exemple d’une requête HTTP :
Le site de Mozilla donne les définitions de tout les méthodes HTTP : Méthodes de requête HTTP
Le contenu d’une requête HTTP
Voici quelques informations concernant ce dernier.
Ce protocole régit les échanges entre le serveur WEB et le navigateur internet.
Voici le contenu d’une requête HTTP.
- A gauche, la couche a transport.
- A droite, le contenu d’une requête HTTP.
Celle-ci se divise en deux parties :
- L’en-tête HTTP ou HTTP Header avec des données sur la méthode, l’host et la longueur du contenu.
- Les données ou Data. En général, le contenu en langage de programmation de la page WEB (HTML, CSS, JavaScript, etc).
Ci-dessous un exemple de requête HTTP en retour par le serveur WEB.
Comprenez que ce protocole HTTP s’utilise dans les deux sens.
Lorsque le client demande une page et lorsque le serveur WEB lui donne en retour.
Ainsi le client envoie une requête HTTP et le serveur WEB en réponse.
Header et en-tête HTTP
Ci-dessous, les deux en-tête HTTP du côté client et du côté serveur.
Par exemple, on peut voir que le client WEB, indique la méthode ici GET ainsi que le user agent.
Voici un exemple d’en-tête HTTP de réponse du serveur WEB.
Comme vous pouvez le constater, on trouve beaucoup d’informations.
Ainsi le serveur WEB indique notamment :
- La version du protocole
- La date de la requête HTTP
- Le type de contenu, html, images, etc
- La taille de la requête HTTP
- Des informations sur le cache
Les données
Rien d’extraordinaire là dessus puisqu’il s’agit du code source de la page WEB.
C’est à dire le code que le serveur WEB envoie au client.
Lorsqu’il s’agit d’un navigateur WEB, ce dernier peut l’interpréter pour construire la page WEB à afficher à l’écran de l’utilisateur.
Le coude source mélange alors :
- du CSS (Cascading Style Sheets) : c’est un langage de présentation des pages WEB
- HTML (HyperText Markup Language) : c’est le langage de base pour créer une page WEB. Il fonctionne avec des balises et peut appeler des images, créer des liens hypertextes, etc. Plusieurs versions existent depuis sa création. Aujourd’hui nous sommes à la version 5
- XHTML (Extensible HyperText Markup Language) : Il se voulait le successeur de HTML basé sur le XML
- JavaScript et Node.js : Il s’agit d’un langage de script qui permet de créer des pages WEB interactives. A ne pas confondre avec Java
- D’autres langages
Ci-dessous, il s’agit du code source de la page mais il peut aussi s’agir d’un fichier image, binaire ou autre.
Les erreurs HTTP
Lorsque le serveur WEB ne peut délivrer le contenu d’une ressources, il renvoie une erreur.
Par exemple, la page demandée n’existe pas ou vous n’y êtes pas autorisé.
Les erreurs HTTP sont standardisées et sont numérotées.
Par exemple l’erreur 404 correspond à une ressources introuvables.
L’erreur 403 est un accès interdit, etc.
La page suivante donne la liste des erreurs HTTP :
Liens
- Le Web et internet : Qu’est-ce que c’est et les différents
- Comment fonctionnent les sites internet
- Qu’est-ce qu’un protocole informatique (avec des exemples)
- HTTP vs HTTPS : Les différences
- Erreur HTTP et problème de connexion à un site Web
- Les sites HTTPs : pourquoi sont-ils sécurisés ?
- Le protocole HTTP (Hypertext Transfer Protocol) : versions et fonctionnement
- Comment fonctionnent les sites internet
- Erreur et dysfonctionnement de connexion aux sites HTTPS
- Résoudre l’erreur 503 service unavailable lors du surf
- Résoudre l’erreur 503 sur YouTube
- Corriger l’erreur 429 : trop de requêtes
- Comment réparer l’erreur 400 (Bad Request error)
- Erreur 401 Unauthorized : les solutions
- Comprendre et contourner l’erreur 403 lors de l’accès à un site Web
- Comment réparer l’erreur 500 (Internal Server Error)
- Attention required Cloudflare
- Votre ordinateur ou votre réseau envoie des requêtes automatiques : 7 solutions