Le contenu de cet article concerne la compréhension simultanée de HTTP, HTTPS, SPDY et HTTP2. Il a une certaine valeur de référence et est nécessaire. j'espère que cela vous sera utile.
En tant que vétéran des protocoles de communication Internet, le protocole HTTP a connu aujourd'hui trois changements de version. La dernière version est HTTP2.0, que je pense que tout le monde connaît. . Aujourd'hui, je vais vous donner une bonne introduction au passé et au présent de HTTP.
HTTP/0.9
La première version de HTTP est née en 1991. Cette première version est extrêmement simple par rapport à aujourd'hui, sans en-tête HTTP, sans code d'état, et même version Il n'y avait pas de numéro, et plus tard son numéro de version a été fixé à 0,9 pour le distinguer des autres versions de HTTP. HTTP/0.9 ne prend en charge qu'une seule méthode : Get, et la requête ne comporte qu'une seule ligne.
GET /hello.html
La réponse est également très simple et ne contient que le document html lui-même.
<HTML> Hello world </HTML>
Lorsque la connexion TCP est établie, le serveur renvoie une chaîne au format HTML au client. Après l'envoi, fermez la connexion TCP. Puisqu'il n'y a pas de codes d'état ni de codes d'erreur, si une erreur se produit pendant le traitement du serveur, seul un fichier HTML spécial contenant des informations de description du problème sera renvoyé. Il s'agit de la première version de HTTP/0.9.
HTTP/1.0
En 1996, la version HTTP/1.0 a été publiée, ce qui a considérablement enrichi le contenu de transmission de HTTP. En plus du texte, vous pouvez également envoyer des images. , vidéos, etc. Cela a jeté les bases du développement d’Internet. Par rapport à HTTP/0.9, HTTP/1.0 présente principalement les fonctionnalités suivantes :
Les requêtes et réponses prennent en charge les en-têtes HTTP, des codes d'état sont ajoutés et le début de l'objet de réponse est une ligne d'état de réponse
Version du protocole Les informations doivent être envoyées avec la requête, prenant en charge les méthodes HEAD et POST
Prend en charge la transmission d'autres types de contenu en plus des fichiers HTML
Une requête HTTP/1.0 typique ressemble à ceci :
GET /hello.html HTTP/1.0 User-Agent:NCSA_Mosaic/2.0(Windows3.1) 200 OK Date: Tue, 15 Nov 1996 08:12:31 GMT Server: CERN/3.0 libwww/2.17 Content-Type: text/html <HTML> 一个包含图片的页面 <IMGSRC="/smile.gif"> </HTML>
HTTP/1.1
HTTP/1.1 est sorti quelques mois après HTTP/1.0. HTTP/1.1 est plutôt une amélioration par rapport à HTTP/1.0. Dans HTTP1.1, il présente principalement les améliorations suivantes :
Peut réutiliser les connexions
Ajouter un pipeline : le pipeline HTTP est une technologie qui soumet plusieurs requêtes HTTP par lots sans attendre une réponse du serveur pendant la transmission. Le mécanisme de pipeline doit être complété via une connexion persistante. La soumission groupée de requêtes HTTP par le navigateur peut réduire considérablement le temps de chargement des pages, en particulier lorsque le délai de transmission (décalage/latence) est élevé. Une chose à noter est que seules les requêtes idempotentes peuvent utiliser le pipeline, comme les méthodes GET et HEAD.
transmission par codage en morceaux : Cet encodage transmet l'entité en morceaux et indique la longueur bloc par bloc jusqu'à ce que la longueur soit de 0 blocs indiquant la fin de la transmission. Ceci est particulièrement utile lorsque la longueur de l'entité est inconnue ( telles que les données générées dynamiquement par la base de données)
Introduit davantage de mécanismes de contrôle de cache : tels que etag, cache-control
Introduit un mécanisme de négociation de contenu, y compris la langue, l'encodage, le type, etc., et permet au client et au serveur de se mettre d'accord sur le contenu échangé le plus approprié
Les messages de requête et les messages de réponse prennent en charge le champ d'en-tête Host : dans HTTP1.0, chaque serveur est considéré comme lié à une adresse IP unique , par conséquent, l'URL dans le message de demande ne transmet pas le nom d'hôte (hostname). Cependant, avec le développement de la technologie des hôtes virtuels, plusieurs hôtes virtuels (serveurs Web multi-résidents) peuvent exister sur un serveur physique et partager une adresse IP. Par conséquent, l’introduction de l’en-tête Host est nécessaire.
Nouvelles méthodes OPTIONS, PUT, DELETE, TRACE, CONNECT
Bien que HTTP/1.1 ait été optimisé sur de nombreux points, en tant que version de protocole la plus utilisée, il peut déjà satisfaire de nombreux réseaux. Cependant, à mesure que les pages web deviennent de plus en plus complexes, et évoluent même vers des applications indépendantes, HTTP/1.1 expose progressivement quelques problèmes :
Lors de la transmission de données, la connexion doit être rétablie à chaque fois, ce qui est le cas du terminal mobile. particulièrement hostile
Le contenu de la transmission est en texte brut, ce qui n'est pas assez sécurisé
Le contenu de l'en-tête est trop volumineux et l'en-tête ne change pas beaucoup à chaque requête, provoquant du gaspillage
keep-alive for service exerce une pression sur les performances du client
Afin de résoudre ces problèmes, HTTPS et SPDY ont vu le jour.
SPDY
En fait, SPDY n'est pas un nouveau protocole, mais une couche de session construite avant HTTP.
De 2010 à 2015, Google a démontré une manière alternative d'échanger des données entre le client et le serveur en implémentant un protocole expérimental SPDY. Il rassemble l'attention des développeurs côté navigateur et côté serveur, clarifie l'augmentation du volume de réponses et résout la complexité du transfert de données. L'objectif par défaut au démarrage du projet SPDY était :
Réduire le temps de chargement des pages (PLT) de 50%.
Pas besoin pour l'auteur du site de modifier quoi que ce soit.
Réduisez la complexité du déploiement sans modifier l’infrastructure réseau.
Travailler avec la communauté open source pour développer ce nouveau protocole.
Collectez des données de performances réelles pour vérifier si ce protocole expérimental fonctionne.
Pour atteindre l'objectif de réduire les temps de chargement des pages, SPDY introduit une nouvelle couche de données de cadrage binaire pour permettre des requêtes et des réponses multidirectionnelles, prioriser, minimiser et éliminer les retards réseau inutiles, dans le but de faire une utilisation plus efficace du TCP sous-jacent. relations.
HTTP/2.0
En 2015, HTTP/2.0 est sorti. Présentons d'abord les caractéristiques de HTTP/2.0 :
Utiliser une couche de cadrage binaire : ajoutez une couche de cadrage binaire entre la couche application et la couche de transport pour obtenir la méthode HTTP sans changer la sémantique de HTTP, le code d'état, Les champs d'URI et d'en-tête dépassent les limitations de performances de HTTP1.1, améliorent les performances de transmission et atteignent une faible latence et un débit élevé. Au niveau de la couche de tramage binaire, HTTP2.0 divisera toutes les informations transmises en messages et trames plus petits et les encodera au format binaire. Les informations d'en-tête de HTTP1.x seront encapsulées dans la trame d'en-têtes, et le corps de la demande sera encapsulé dans. la trame de données.
Binary Framing
Multiplexage : Pour HTTP/1.x, même si une longue connexion est activée, la requête est envoyée en série lorsque la bande passante est suffisante, le taux d'utilisation de la bande passante ne l'est pas. C'est suffisant. HTTP/2.0 adopte une méthode de multiplexage, qui peut envoyer plusieurs requêtes en parallèle pour améliorer le taux d'utilisation de la bande passante.
Multiplexage
Priorité du flux de données : étant donné que les requêtes peuvent être envoyées simultanément, si le navigateur attend que les fichiers CSS ou JS clés terminent le rendu de la page, le serveur Que dois-je faire si je je me concentre sur l'envoi de ressources d'images ? HTTP/2.0 peut définir une valeur de priorité pour les flux de données. Cette valeur de priorité détermine les différentes stratégies de priorité utilisées par le client et le serveur pour traiter différents flux.
Push côté serveur : dans HTTP/2.0, le serveur peut envoyer du contenu autre que la demande au client. Par exemple, lorsqu'une page est demandée, le serveur envoie le logo CSS associé à la page. et d'autres fichiers directement au client, au lieu d'attendre que la demande arrive avant de l'envoyer, car le serveur pense que le client utilisera ces éléments. Cela équivaut à rassembler toutes les ressources dans un seul document HTML.
Compression d'en-tête : utilisez la table d'en-tête pour suivre et stocker les paires clé-valeur précédemment envoyées. Pour le même contenu, il ne sera pas envoyé dans chaque requête et réponse.
Ce qui précède est une introduction complète à la compréhension simultanée de HTTP, HTTPS, SPDY et HTTP2. Si vous souhaitez en savoir plus sur le Tutoriel HTML5, veuillez faire attention au site Web PHP chinois.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!