Résumé : HTTP1 et HTTP2

1. Introduction

La principale différence entre HTTP/2 et HTTP/1 est qu'il utilise la technologie de multiplexage, ce qui lui confère des performances plus élevées et une latence plus faible. Voici quelques différences clés entre HTTP/1 et HTTP/2 :

  1. Multiplexage : HTTP/2 utilise la technologie de multiplexage pour transmettre simultanément plusieurs requêtes et réponses via une seule connexion, évitant ainsi le problème de blocage de tête de ligne dans HTTP/1.

  2. Tramage binaire : HTTP/2 utilise un format binaire pour le cadrage lors de la transmission de données, plutôt qu'un format texte comme HTTP/1. Cette méthode peut réduire la taille de la transmission de données et peut compresser efficacement les données, améliorant ainsi l'efficacité de la transmission de données.

  3. Compression d'en-tête : HTTP/2 utilise l'algorithme HPACK pour la compression d'en-tête, ce qui réduit la taille de l'en-tête transmis et améliore les performances.

  4. Poussée du serveur : HTTP/2 introduit un mécanisme de poussée du serveur, c'est-à-dire que lorsqu'un client demande des données, le serveur peut pousser activement les données pertinentes vers le client, améliorant ainsi les performances et la vitesse.

  5. Sécurité : HTTP/2 a des exigences plus élevées en matière de sécurité et nécessite l'utilisation du protocole de cryptage TLS pour la transmission, garantissant ainsi la sécurité de la transmission des données.

En bref, HTTP/2 adopte un certain nombre d'améliorations techniques, il est donc meilleur que HTTP/1 en termes de performances, d'efficacité, de sécurité, etc., et est un protocole plus avancé.

2. Scénarios d'application

Les protocoles HTTP/1 et HTTP/2 peuvent être utilisés dans les navigateurs et les API principales, mais HTTP/2 est plus adapté aux applications Web modernes.

En termes de navigateurs, la plupart des navigateurs modernes prennent en charge le protocole HTTP/2, tels que Chrome, Firefox, Safari, etc. Cela signifie que si vous naviguez sur le Web avec l'un de ces navigateurs, vous utilisez probablement le protocole HTTP/2.

En termes d'API back-end, l'utilisation de HTTP/2 nécessite généralement une configuration et une prise en charge correspondantes pour le serveur, il est donc nécessaire de vérifier la prise en charge du serveur. De nombreux serveurs Web prennent déjà en charge HTTP/2, comme Apache, Nginx, etc., mais les méthodes de configuration spécifiques peuvent être différentes.

Pour déterminer si la demande actuelle utilise HTTP/1 ou HTTP/2, vous pouvez l'afficher via les outils de développement du navigateur. Dans le panneau Réseau de votre navigateur, si la requête utilise HTTP/2, elle doit afficher "HTTP/2" dans la colonne Protocole. En outre, vous pouvez également afficher les informations de version du protocole dans l'en-tête de la requête. HTTP/1 utilise "HTTP/1.x", tandis que HTTP/2 utilise "HTTP/2".

3. Prise en charge par Tomcat du protocole HTTP/2

Tomcat prend en charge le protocole HTTP/1.1 par défaut. À partir de Tomcat 9.0, Tomcat prend également en charge le protocole HTTP/2, mais il doit être configuré en conséquence dans le fichier de configuration Tomcat.

Si vous souhaitez utiliser le protocole HTTP/2 dans Tomcat, vous pouvez le configurer comme suit :

  1. Assurez-vous que la version de Tomcat est 9.0 ou supérieure.

  2. Dans le fichier de configuration Tomcat server.xml, recherchez l'élément de configuration Connector et ajoutez la configuration suivante :

    <Connector protocol="org.apache.coyote.http11.Http11NioProtocol"
               port="8443" maxThreads="200"
               scheme="https" secure="true"
               sslProtocol="TLS"
               sslEnabledProtocols="TLSv1.2,TLSv1.3"
               ...
               >
       <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
    </Connector>

    Parmi eux, l'attribut className de l'élément de configuration UpgradeProtocol est défini sur org.apache.coyote.http2.Http2Protocol, indiquant que le protocole HTTP/2 est activé.

  3. Configurez un certificat SSL, car le protocole HTTP/2 doit utiliser une transmission cryptée SSL. Vous pouvez utiliser le certificat par défaut de Tomcat ou émettre un certificat vous-même.

  4. Redémarrez Tomcat pour que la configuration prenne effet.

Après cette configuration, Tomcat peut prendre en charge les protocoles HTTP/1.1 et HTTP/2 en même temps. Le client peut choisir le protocole à utiliser en définissant l'en-tête de requête correspondant.

4. Comment le navigateur s'adapte-t-il au protocole du service backend ?

Supposons que le service backend utilise HTTP1 et que le navigateur utilise HTTP2

Lorsque le navigateur communique avec les services principaux, ils doivent négocier et choisir un protocole à utiliser. Généralement, ce processus est initié par le navigateur.

Si le service backend utilise le protocole HTTP/1 et que le navigateur utilise le protocole HTTP/2, le processus de communication peut se présenter dans les deux situations suivantes :

  1. Le navigateur envoie une requête de protocole HTTP/1 au service backend

    Si le navigateur détecte que le service backend ne prend pas en charge le protocole HTTP/2, il passera automatiquement à l'utilisation du protocole HTTP/1. Ce processus de commutation est généralement effectué par la couche d'adaptation interne du navigateur. Cette couche d'adaptation effectuera une conversion de protocole et un traitement de compatibilité en fonction de l'implémentation HTTP/2 du navigateur et de l'implémentation HTTP/1 du service principal. Afin d'assurer la progression normale de la communication .

  2. Le navigateur envoie une requête à une passerelle HTTP/1 vers HTTP/2

    Si le service backend ne prend pas directement en charge le protocole HTTP/2, mais fournit un service de passerelle de HTTP/1 vers HTTP/2, le navigateur peut communiquer avec le service backend via cette passerelle. Après avoir reçu la requête HTTP/2 du navigateur, la passerelle la convertit en une requête de protocole HTTP/1 et l'envoie au service backend. Une fois que le service principal a traité la demande, la passerelle convertit le résultat de la réponse HTTP/1 en une réponse de protocole HTTP/2 et la renvoie au navigateur.

En bref, l'adaptation du protocole entre le navigateur et le service backend est généralement effectuée par la couche d'adaptation ou la passerelle à l'intérieur du navigateur.Ces composants mettront en œuvre la conversion de protocole et le traitement de compatibilité selon les protocoles des deux parties pour assurer une communication de progression normale.

おすすめ

転載: blog.csdn.net/w2009211777/article/details/129876265