Sobes.tech
Middle

Quelle est la différence entre HTTP/1 et HTTP/2 ?

sobes.tech IA

Réponse de l'IA

Principales différences:

  • Multiplexage. HTTP/2 permet d'envoyer et de recevoir plusieurs requêtes et réponses via une seule connexion TCP simultanément. HTTP/1.1 nécessitait une connexion séparée pour chaque requête/réponse (sauf dans le cas où le mécanisme de pipelining était utilisé, avec des limitations).
  • Compression des en-têtes. HTTP/2 utilise la compression des en-têtes avec l'algorithme HPACK pour réduire leur taille et la quantité de données transmises. En HTTP/1.1, les en-têtes sont envoyés en texte clair.
  • Priorisation des flux. En HTTP/2, le client peut indiquer des priorités pour différents flux (requêtes/réponses), permettant au serveur d'optimiser l'ordre de livraison des données. HTTP/1.1 ne possède pas ce mécanisme.
  • Push du serveur. HTTP/2 permet au serveur d'envoyer des ressources au client avant que celui-ci ne les demande, en se basant sur la nécessité supposée pour l'affichage de la page. En HTTP/1.1, le client doit demander explicitement chaque ressource.
  • Format des trames. HTTP/2 transmet les données en format binaire (trames), ce qui facilite l'analyse et augmente l'efficacité par rapport au format texte de HTTP/1.1.

Comparaison en tableau:

Caractéristique HTTP/1.1 HTTP/2
Connexion Une connexion par requête (sans pipelining) Une seule connexion pour plusieurs flux
Multiplexage Non (ou limité par pipelining) Oui
Compression des en-têtes Non HPACK (compression binaire)
Priorisation des flux Non Oui
Push du serveur Non Oui
Format des données Texte Binaire (trames)
Blocage Head-of-Line Présent Partiellement résolu par multiplexage

Exemple de requête en HTTP/1.1:

// GET /index.html HTTP/1.1
// Host: example.com
// User-Agent: curl/7.68.0
// Accept: */*

Exemple de représentation partielle des données en HTTP/2 (l'échange de trames est plus complexe et n'est pas aussi facilement illustré):

// En HTTP/2, l'interaction se fait au niveau des trames (HEADERS, DATA, etc.),
// qui sont binaires et cachées à l'utilisateur au niveau de l'application.
// Il est difficile de les représenter en texte simple à des fins d'illustration.
// Les en-têtes sont compressés et transmis dans la trame HEADERS.
// Le corps de la réponse est transmis dans les trames DATA.