Qu'est-ce que HTTP (Hypertext Transfer Protocol) ?

Protocole de la couche application qui sert à échanger du HTML, des images et des données entre un navigateur web et un serveur web, entre autres. Le client envoie une requête composée d'une méthode, d'une URL, d'en-têtes et d'un corps, et le serveur renvoie une réponse composée d'un code d'état, d'en-têtes et d'un corps. Le protocole est sans état : un état comme la connexion d'un utilisateur est conservé au moyen de cookies, entre autres. HTTP/1.1 utilise un format texte et des connexions persistantes, HTTP/2 multiplexe plusieurs flux sur une seule connexion TCP, et HTTP/3 utilise QUIC sur UDP. HTTP protégé par TLS s'appelle HTTPS.

Nom japonais: HTTP

« HTTP (Hypertext Transfer Protocol) » apparaît dans 14 questions d'entraînement réparties sur 2 thèmes, dont Bases des technologies web, Bases des réseaux informatiques.

Domaine: Bases des technologies web

Forme des requêtes et des réponses

Une requête se compose, dans cet ordre, d'une ligne de requête comme « GET /index.html HTTP/1.1 », d'en-têtes comme Host ou Accept, d'une ligne vide et du corps. Une réponse se compose d'une ligne d'état comme « HTTP/1.1 200 OK », d'en-têtes comme Content-Type ou Cache-Control, et du corps. Les en-têtes ont la forme « Nom: valeur » et indiquent le type du corps, le traitement par les caches, les informations d'authentification, la méthode de compression, etc.

Différences entre les versions

En HTTP/1.1, la connexion persistante, qui réutilise une même connexion TCP, est la norme, mais sur une connexion les réponses sont reçues une par une dans l'ordre. HTTP/2 découpe les messages en trames binaires, multiplexe plusieurs requêtes et réponses sur une seule connexion et compresse aussi les en-têtes. HTTP/3 utilise comme transport QUIC sur UDP : il réduit le problème des pertes de paquets qui bloquent des flux sans rapport et diminue aussi le nombre d'allers-retours nécessaires à l'établissement de la connexion.

Absence d'état et gestion de l'état

HTTP est un protocole sans état, qui traite chaque requête indépendamment. Le serveur n'ayant pas à se souvenir des requêtes précédentes, il est facile de répartir la charge entre de nombreux serveurs. Un état comme la connexion d'un utilisateur est conservé du côté de l'application, en échangeant au moyen d'un cookie un identifiant de session émis par le serveur, ou en envoyant une valeur signée dans l'en-tête Authorization.

S'entraîner : questions sur HTTP (Hypertext Transfer Protocol)

Parmi les propositions suivantes, laquelle est protégée par HTTPS (HTTP protégé par TLS) ?

  1. ALe fait que l'exploitant du site web auquel on se connecte soit une personne ou une organisation digne de confiance et sans intention malveillante
  2. BLe fait que la communication elle-même, ainsi que l'adresse IP du serveur auquel on se connecte, ne soient pas visibles en chemin
  3. CLe fait que le contenu ne puisse être ni lu ni modifié en transit, et que le serveur auquel on se connecte soit le détenteur légitime du nom de domaine figurant dans son certificat
Afficher la réponse et l'explication

Réponse : C. Le fait que le contenu ne puisse être ni lu ni modifié en transit, et que le serveur auquel on se connecte soit le détenteur légitime du nom de domaine figurant dans son certificat

TLS fournit trois choses : le chiffrement de la communication (confidentialité), la détection des falsifications (intégrité) et l'authentification du serveur. Le serveur présente un certificat ; le navigateur le vérifie en remontant les signatures jusqu'à une autorité de certification (CA) en laquelle il a confiance, et contrôle qu'il correspond au nom de domaine de l'URL. Cela prouve seulement que l'on communique avec le détenteur de ce nom de domaine ; cela ne dit rien de l'honnêteté de l'exploitant du site. Même un site frauduleux peut obtenir un certificat pour son propre nom de domaine. De plus, l'en-tête IP n'est pas chiffré : avec quelle adresse IP on communique, quand et en quelle quantité reste visible en chemin.

Quelle combinaison donne correctement les éléments de la première ligne (la ligne de requête) d'une requête HTTP/1.1 ?

  1. ALa méthode, la cible de la requête (un chemin, etc.) et la version de HTTP
  2. BLa version de HTTP, le code d'état et une courte expression qui en indique la raison
  3. CL'adresse IP source, le numéro de port de destination et la méthode
Afficher la réponse et l'explication

Réponse : A. La méthode, la cible de la requête (un chemin, etc.) et la version de HTTP

Une requête HTTP se compose, dans cet ordre, de la ligne de requête, des en-têtes (un « Nom: valeur » par ligne), d'une ligne vide et du corps. Par exemple, « GET /docs/index.html HTTP/1.1 » est une ligne qui demande /docs/index.html avec la méthode GET. En HTTP/1.1, l'en-tête Host doit aussi être envoyé, pour que le serveur sache à quel site s'adresse la requête même lorsque plusieurs sites sont hébergés sur la même adresse IP. La première ligne d'une réponse est la ligne d'état, qui indique la version, le code d'état et la phrase de raison, comme dans « HTTP/1.1 200 OK ».

Questions fréquentes

Quelle est la différence entre HTTP et HTTPS ?

HTTPS chiffre les échanges HTTP avec TLS et y ajoute la détection des falsifications et l'authentification du serveur. La forme des requêtes et des réponses est la même qu'en HTTP, et les numéros de port par défaut sont 80 pour HTTP et 443 pour HTTPS. Pour protéger les mots de passe et les cookies, les sites web utilisent généralement HTTPS.

Quand utiliser GET et quand utiliser POST ?

GET est une méthode de lecture de ressources, considérée comme « sûre » parce qu'elle ne modifie pas l'état du serveur ; les navigateurs et les caches peuvent la renvoyer plusieurs fois ou en conserver le résultat. POST s'utilise lorsqu'on demande un traitement au serveur ou qu'on enregistre des données, comme une commande ou une publication. Les paramètres d'une requête GET figurent dans l'URL et restent dans les journaux d'accès et l'historique de navigation : on n'y met donc pas d'informations secrètes comme un mot de passe.

« HTTP (Hypertext Transfer Protocol) » dans les explications

Questions mentionnant « HTTP (Hypertext Transfer Protocol) » (14)

  1. Parmi les propositions suivantes, laquelle est protégée par HTTPS (HTTP protégé par TLS) ?
  2. Quelle combinaison donne correctement les éléments de la première ligne (la ligne de requête) d'une requête HTTP/1.1 ?
  3. En HTTP, quelle association entre un code d'état et sa signification est correcte ?
  4. Quelle description de HTTP/2 et HTTP/3 est correcte ?
  5. HTTP est un protocole sans état. Quelle description de ce que cela signifie et de la façon habituelle dont un site web garde un utilisateur connecté est correcte ?
  6. Le serveur d'un commerçant veut savoir immédiatement qu'un paiement est terminé sur un service de paiement en ligne. Quelle description de la méthode dans laquelle le service de paiement envoie une notification par une requête HTTP POST à une URL enregistrée à l'avance par le commerçant (webhook) est correcte ?
  7. On envoie 1,5 MB de données texte, compressées par gzip au tiers de leur taille. La bande passante est de 10 Mbit/s et le RTT de 100 ms ; avant de commencer à envoyer les données, la connexion TCP, la poignée de main TLS et la requête HTTP prennent ensemble 3 allers-retours. On prend 1 MB = 10^6 octets et l'on néglige le temps de compression et de décompression, les en-têtes et les attentes dues au contrôle de congestion de TCP. Quelle valeur est la plus proche du temps nécessaire pour finir de recevoir les données ?
  8. Dans le modèle TCP/IP à 4 couches, à quelle couche appartiennent TCP et UDP ?
  9. Quelle description d'UDP est correcte ?
  10. Un client établit une nouvelle connexion HTTPS (TLS 1.3 sur TCP) vers un serveur web dont le temps aller-retour (RTT) est de 100 ms. Quelle durée est la plus proche du temps nécessaire jusqu'au début de la réception de la réponse à la première requête ? La résolution DNS est déjà faite, et l'on néglige le temps de traitement du serveur et le temps de transfert des données.
  11. Quelle combinaison associe correctement des protocoles aux numéros de port standard utilisés par leurs serveurs ?
  12. On récupère, l'un après l'autre, un fichier HTML et les quatre images qu'il référence sur un serveur web dont le RTT est de 40 ms. On suppose que l'établissement d'une connexion TCP prend un aller-retour et que chaque requête et sa réponse prennent un aller-retour, et l'on néglige le temps de transfert des données, le temps de traitement du serveur, TLS et la fermeture des connexions. Quelle est la différence de durée totale entre l'ouverture d'une nouvelle connexion TCP pour chaque objet et la réutilisation d'une seule connexion TCP (connexion persistante) ?
  13. Une application de messagerie instantanée doit transmettre immédiatement les nouveaux messages du serveur au navigateur. Quelle description de WebSocket est correcte ?
  14. Un système web est organisé en trois couches : serveur web, serveur d'application et serveur de base de données. Quel traitement relève principalement du serveur d'application ?

Termes associés

TLS (Transport Layer Security) DNS (Domain Name System) Numéro de port Code d'état HTTP Cookie (cookie HTTP) Modèle OSI (modèle de référence OSI) Three-way handshake (établissement en trois temps) WebSocket API REST Boucle d'événements (event loop)

Retour au glossaire