HTTP / 3 se sont avérés être basé sur UDP, HTTP protocole au cours des années ont connu quoi?

Entendre HTTP / 3 nouvelles de protocole basé sur UDP, beaucoup de gens peuvent me l'ont dit la même choqué.

Nous commençons à apprendre les protocoles de réseau seront certainement exposés à HTTP, et il a été un manuel ou un enseignant est « UDP n'est pas fiable, de sorte que le protocole HTTP basé sur TCP », bien que penser de temps en temps « UDP et TCP sont le protocole de niveau relativement bas, TCP est défini par la couche supérieure du protocole HTTP, mais il faut aussi passer par une série de conception et d'emballage, et que ce que UDP ne peut pas l'essayer? « » est le coût? coût HTTP sur la conception TCP n'est pas faible ah, tels que poignée de main à trois voies, quatre onduler, fenêtres coulissantes et donc l'idée d'algorithmes sophistiqués, sont également dans la conception finalisée et après de nombreuses tentatives. « bref ...... mais seulement TCP, UDP basé sur HTTP n'est pas la pensée ou fixe dans mon esprit et travaillé à plusieurs reprises des questions de programmation et de demande-réponse.

Donc pas HTTP / 3 plus basé sur TCP au lieu d'utiliser l'UDP, les nouvelles étaient tout à fait surprenante.

Voir ici certaines personnes peuvent être surpris par un autre point: Quoi? ! protocoles HTTP sont développés à la version 3 ?

En fait, le courant devient progressivement le courant dominant du protocole HTTP est HTTP / 2, par rapport à HTTP / 1, considérablement amélioré la performance, le site ne doit passer à une nouvelle version du protocole avant de réduire un grand nombre de besoins de travail à faire pour optimiser les performances, bien sûr, compatible les problèmes et la façon dont la dégradation est gracieuse problème plus difficile, qui devrait également être une raison importante du pays ne sont pas encore largement utilisé HTTP / 2.

Alors que HTTP / 2 apporte de nombreux avantages, mais cela ne signifie pas qu'il est déjà parfait, HTTP / 3 est de résoudre certains des problèmes HTTP / 2 EXISTE poussé dehors.

L'article suivant commencera par le protocole HTTP de base / 1, ont été ciblés de la première génération d'introduire la troisième génération, en essayant de mettre ce processus de développement technologique protocole HTTP façon brièvement populaire part aux lecteurs, et que nous comprenons pourquoi, après tant d'années de développement, le protocole HTTP finalement avéré être utilisations dangereuses UDP.

A, le protocole HTTP

HTTP est un acronyme pour le protocole de transfert (Hypertext Hypertext Transfer Protocol), qui est le plus largement utilisé sur Internet un protocole réseau, tous les documents de WWW doit être conforme à cette norme.

Avec la naissance des réseaux informatiques et navigateurs, HTTP 1.0 / 1.1 ont suivi, il est construit au-dessus du protocole TCP, la couche d'application dans les réseaux informatiques, donc goulots d'étranglement du protocole HTTP et les techniques d'optimisation sont basées sur les caractéristiques du protocole TCP lui-même Tels que TCP Handshake 3 voies pour établir une connexion et quatre ondulant déconnecté, et mettre tous les temps de retard d'établissement de connexion RTT.

HTTP 1.01.1 La principale différence est que la longueur du support de connexion, le multiplexage, la compression de données et la réduction de la bande passante, par rapport à la HTTP / 2, qui est généralement désigné ici HTTP / 1.

Deux défauts, HTTP / 1

HTTP / 1 augmentation rapide de l'ère du Web, mais avec l'introduction du prix quotidien, mais aussi ses défauts exposés.

Soit la version 1.0 ou 1.1, HTTP / 1 sont des défauts majeurs dans les domaines suivants:

  • La connexion ne peut réutiliser : La connexion ne peut peut conduire à la réutilisation poignée de main à trois voies pour chaque demande et ont connu démarrage lent. influence de poignée de main à trois voies est évidente dans les scénarios de haute latence, le démarrage lent d'un grand nombre de petits fichiers demande plus grand impact (pas atteint la demande maximale de la fenêtre est terminée).
  • Transmission de données HTTP / 1.0, la nécessité de rétablir une connexion à chaque fois, ce qui augmente le retard.
  • HTTP / 1.1 est ajouté tandis que la partie de keep-alive du connecteur peut être réutilisé, mais le cas du fragment de domaine, sont encore nécessaires pour établir une pluralité de connexion, à forte intensité de ressources, pour amener la pression de performances du serveur.
  • Tête de ligne de blocage (HOLB, tête de blocage de la ligne) : Cela provoque ne peut pas être pleinement utilisé la bande passante, et la demande de santé ultérieure est bloquée. HOLB est une série de paquet (package) parce que le premier paquet est bloqué, lorsque la page est demandée nécessite beaucoup de ressources quand, résultat HOLB pour atteindre le nombre maximum de demandes, les ressources restantes ont besoin d'attendre pour lancer une demande après d'autres ressources pour compléter la demande .
  • HTTP 1.0: prochaine requête doit être envoyée suite à une demande de retour à la précédente, la paire requête-réponse se produit séquentiellement. De toute évidence, si une demande depuis longtemps ne revenait pas, alors la requête suivante est tout bloqué.
  • HTTP 1.1: essayez d'utiliser pipeling à l'adresse que le navigateur peut émettre un multiple d'une fois les demandes (avec un nom de domaine, un lien avec TCP). Mais pipeling sont priés de retourner dans l'ordre, la demande précédente, si beaucoup de temps (comme le traitement à grande image), alors même si le serveur derrière la demande a été traitée, la demande attendra jusqu'à ce qu'ils aient terminé le traitement du retour séquentiel précédent. Ainsi, pipeling qu'une solution partielle à HOLB.

 Comme indiqué plus haut, la demande du cercle rouge sur le lien en raison du nombre de limite de domaine a été dépassé, est suspendu à attendre pendant un certain temps.

  • frais généraux Grand protocole : HTTP / 1 pendant l'utilisation, le contenu transporté dans l'en-tête est trop important, augmente le coût du transport dans une certaine mesure, et chaque en-tête de requête change sensiblement inférieure, en particulier dans les mobiles augmente de trafic de terminaux d'utilisateur.
  • facteurs de sécurité : HTTP / 1 lors de la transmission des données, le contenu de toutes les transmissions sont un texte clair, le client et le serveur ne peut pas vérifier l'identité de l'autre, qui ne peut pas garantir la sécurité des données dans une certaine mesure.

Trois, le protocole SPDY

Parce que la question HTTP / 1, nous cartographierons l'introduction de Sprite, un petit dessin en ligne, en utilisant plusieurs noms de domaine et ainsi sur les moyens d'améliorer les performances. Cependant, ces optimisations contournent le protocole lui-même, jusqu'en 2009, Google a révélé un protocole SPDY auto-développé, il est principalement pour résoudre l'efficacité HTTP / 1.1 n'est pas élevé.

Jusque-là, il est considéré comme transformé officiellement le protocole HTTP lui-même. SPDY réduire les retards, la compression d'en-tête et d'autres améliorations, qui se sont révélées l'effet de ces optimisations, et finalement la naissance de HTTP / 2.

protocole SPDY sur le navigateur Chrome plus tard prouvé au travail, il était considéré comme la base de HTTP / 2, les principales caractéristiques sont parmi les HTTP / 2 à hériter, ici, nous devons dire quelque chose au sujet de cette partie.

Quatre, HTTP / 2

En 2015, il a hérité du protocole HTTP spdy / 2 libéré. HTTP / 2 alternent HTTP / 1, mais il n'a pas été réécrite, une partie du contenu retenu dans les protocoles de première génération, tels que les méthodes HTTP, de sorte que le code d'état HTTP / 1 sémantique.

HTTP / 2 basée SPDY3, se concentrer sur performance Le plus grand objectif est seulement une connexion entre l'utilisateur et le site.

spécification se compose de deux composants HTTP / 2:

  • Version Hypertext Transfer Protocol 2 - RFC7540
  • HPACK - En-tête Compression HTTP / 2 - RFC7541
  • Cinq, HTTP / 2 Caractéristiques

    transfert binaire

    HTTP / 2 format binaire des données de transmission, au lieu du format texte, protocole binaire HTTP / 1 est plus efficace de résoudre.

    Demande et la réponse paquet HTTP / 1, est la ligne de départ, et le corps de l'entité d'en-tête (en option), avec un retour à la ligne de texte entre les parties séparées. HTTP / 2, les données de requête et de réponse en plus petits cadres, et ils sont codés en binaire .

    Ensuite, nous présentons plusieurs concepts importants:

    • Flux (stream): Un courant est une connexion de canal virtuel, le message peut porter bidirectionnel; chaque flux possède un identificateur entier unique (1,2 ... N)
    • Message (message): Elle se réfère à un message HTTP logique, par exemple une demande de réponse, etc., d'un ou d'une pluralité de trames
    • Cadre (frame): HTTP / 2 l'unité minimale de la communication, chaque trame comprenant un en-tête de trame, ou du moins à identifier le débit de la trame courante appartient, la réalisation de certains types de données, telles que des en-têtes HTTP, charge, etc.

    Dans HTTP / 2, tout le trafic sur une seule connexion est faite au même nom de domaine, le flux de données bidirectionnel connexion peut porter un nombre quelconque. Chaque flux de données sont transmises sous forme de message, et le message à son tour par un ou plusieurs cadres. Peuvent être envoyés de commande entre une pluralité de trames, en fonction de l'identifiant de flux de l'en-tête de trame peut être ré-assemblé.

    multiplexeur

    L'introduction de multiplexage dans HTTP / 2. Multiplexant une bonne solution pour limiter le nombre de demandes de la question du navigateur sous le même nom de domaine, mais aussi plus facile à mettre en uvre la transmission à grande vitesse, après tout, pour ouvrir un besoin de connexion TCP pour augmenter lentement la vitesse de transmission.

    Nous pouvons à ce lien (http2.akamai.com/demo) sensation intuitive HTTP / 2 à la fin comment beaucoup plus rapide que HTTP / 1.

    Après le HTTP / 2, avec la définition binaire, HTTP / 2 connexion TCP est parallèle ne dépend plus de réaliser un HTTP / 2 ,, multi-courant dans l'image mentionné plus haut:

    • Toutes les communications sur une seule connexion est terminée dans le même domaine
    • Seule connexion de données bidirectionnelle peut porter un nombre quelconque de flux
    • Un flux de données transmis sous forme de message, et le message à son tour par une ou plusieurs trames à envoyer de commande entre une pluralité de trames, peuvent être réassemblés en tant que trame selon l'identificateur de flux dans la partie d'en-tête

    Cette fonctionnalité, la performance a été grandement améliorée:

    • Avec des domaines occupent seulement une connexion TCP, en utilisant une pluralité de requêtes de connexion de transmission parallèles et réponses, en raison de l'élimination de plusieurs connexions TCP et le retard provoqué par la consommation de mémoire
    • En variante envoyer plusieurs requêtes en parallèle simultanément et demande
    • Une pluralité de parallèles alternativement transmis en réponse, l'interférence entre la réponse
    • Dans HTTP / 2, chaque demande peut prendre la priorité à une valeur 31 bits, plus la valeur plus la priorité 0 est la plus haute priorité. Avec cette valeur de priorité, le client et le serveur peut prendre dans le traitement des différents courants de différentes stratégies pour la meilleure façon d'envoyer un flux, et un cadre de message.

    Comme indiqué plus haut, les techniques multiplexage peuvent être seulement une demande de connexion TCP pour transférer toutes les données.

    En-tête de compression

    Dans HTTP / 1, nous utilisons la forme d'en-tête de transmission de texte, dans le cas de la mise en-tête cookie, il peut être nécessaire de répéter tous les quelques centaines à plusieurs milliers d'octets transmis.

    Afin de réduire cette consommation de ressources et d'améliorer les performances, HTTP / 2 stratégie de compression adoptée pour ces en-têtes:

    • HTTP / 2 en utilisant la « table d'en-tête » dans le client et le serveur pour suivre et enregistrer la clé transmise précédemment - des paires de valeurs pour les mêmes données, ne sont plus envoyées par chaque demande et réponse
    • La table de tête est toujours présente dans la durée de la connexion HTTP / 2 conjointement progressivement mis à jour par le client et le serveur
    • Chaque nouvelle clé d'en-tête - la valeur du courant est soit ajouté à la fin de la table, ou les valeurs avant table de substitution

    Par exemple, deux chiffres sur demande avec un champ d'en-tête envoyé tout, seulement besoin d'envoyer une seconde donnée de différence de demande, ce qui réduit les données redondantes, ce qui réduit les frais généraux de:

    Server Push

    Serveur Poussez De cette façon, le serveur peut pousser le contenu des besoins du client à l'avance passé poussée, aussi connu comme « push cache ».

    Imaginez la situation suivante: Certaines ressources client seront demandés, vous pouvez prendre la technologie push de serveur, avance au Client Appuyez sur les ressources nécessaires afin qu'il puisse relativement peu moins de temps de retard. Bien sûr, dans le cas de la compatibilité du navigateur, vous pouvez également utiliser le prefetch.

    Par exemple, le serveur peut prendre l'initiative de pousser JS et les fichiers CSS au client sans que le client envoie ensuite ces demandes lors de l'analyse HTML.

    Le serveur peut prendre l'initiative de pousser le client a le droit de choisir de recevoir. Si le côté service appuyez sur la ressource a été navigateur mis en cache, le navigateur peut être rejeté en envoyant cadre RST_STREAM. poussée active également conforme à la règle d'origine, autrement dit, le serveur ne peut pas simplement pousser une ressource tiers au client, mais doit être confirmée par les deux parties pour le travail.

    Six, HTTP / 3

    Alors que HTTP / 2 pour résoudre beaucoup de problèmes avant que l'ancienne version, mais il y a encore un énorme problème, principalement causé par le support sous-jacent du protocole TCP.

    HTTP / 2 mentionné ci-dessus en utilisant le multiplexage, le même domaine général seulement besoin d'utiliser une connexion TCP. Mais cette connexion est apparu dans le cas de perte de paquets, elle se traduira par des situations de performance HTTP / 2 est en fait pas aussi bon que HTTP / 1 vers le haut.

    Parce que dans le cas d'une perte, doit commencer à attendre, et il ramène toutes les données ont été bloquées toute la retransmission TCP. mais HTTP / 1.1, il peut ouvrir plusieurs connexions TCP, cette situation n'affectera l'une des contre-connexion, la connexion TCP peut également être encore transfert de données normale .

    Donc, quelqu'un pourrait envisager d'aller modifier le protocole TCP, cela est en fait, déjà mission impossible Parce que TCP existait beaucoup trop longtemps, a été inondé dans une variété de dispositifs, et cet accord est mis en uvre par le système d'exploitation, la mise à jour est pas la réalité.

    Pour cette raison, Google a mis en place sur leur propre poêle un protocole QUIC est basé sur le protocole UDP et est utilisé dans le HTTP / 3 sur Avant HTTP / 3 appelé HTTP-over-QUIC, du nom que nous pouvons trouver, HTTP / 3 plus grande transformation est l'utilisation de QUIC.

    QUIC Bien que basé sur UDP, mais il a ajouté beaucoup de fonctionnalités dans la base d'origine, alors nous mettons en évidence plusieurs fonctions de QUIC.

    fonction QUIC

    • 0RTT

    En utilisant une technologie similaire à TCP rapide Open, contexte de cache de la session en cours, la prochaine fois que la session de récupération, juste avant le service que vous souhaitez mettre en cache la validation par côté peut être transmis. construire 0RTT peut même dire que par rapport à QUIC HTTP / 2 maximum de performance avantage . Alors, quelle est 0RTT même construit?

    Et il y a deux significations:

    1, vous pouvez établir une connexion de couche de transport 0RTT.

    2, la couche de chiffrement 0RTT connexion cryptée peut être établie.

    En raison de considérations de sécurité ici, nous avons ajouté TLS « protocole HTTP de sécurité » pour comparer HTTPS. La figure de la gauche est d'un processus même de construction complètement poignée de main HTTPS qui nécessite trois RTT, même si la session est multiplexée nécessite également au moins deux RTT.

    Le QUIC il? Il est construit sur la base de l'UDP, tout en réalisant la poignée de main de sécurité 0RTT, donc dans la plupart des cas, seulement 0 RTT sera en mesure d'obtenir une transmission de données, avant d'atteindre le chiffrement, en fonction du taux de succès relatif et 0RTT seule session TLS est que d'enregistrer beaucoup plus élevé.

    • multiplexeur

    Natif QUIC obtenir la fonction de multiplexage, un seul flux de données et peuvent être transmises sans affecter assurer la livraison ordonnée des autres flux de données, telles techniques mentionnées précédemment pour résoudre les problèmes de multiplexage TCP.

    Comme HTTP / 2, la même connexion peut créer plusieurs flux de QUIC pour transmettre une pluralité cependant, est QUIC basés UDP, parce qu'il n'y a pas de dépendance entre une pluralité de flux de connexion, des demandes HTTP, de sorte qu'il n'y a HTTP / 2 le problème. Par exemple, le stream2 figure ci-dessous a perdu un paquet UDP, sans affecter suivi Stream3 et Stream4, tête TCP de blocage de ligne n'existe pas. Bien que stream2 de la nécessité paquet de re-pass, mais stream3, package stream4 peut être envoyé sans attendre l'utilisateur.

    En plus des performances QUIC dans le terminal mobile sera mieux que TCP. Parce que TCP est basé sur IP et le port pour identifier la connexion, de cette façon de changer l'environnement de réseau client mobile est très fragile. Le QUIC à titre d'ID pour identifier une connexion, peu importe comment vous changer l'environnement réseau, tant que le même ID, vous pouvez rapidement Rebrancher.

    • Le chiffrement des messages et l'authentification

    têtes de protocole TCP sans chiffrement et l'authentification, dans le processus de transmission est vulnérable aux manipulations du dispositif de réseau intermédiaire, l'injection et l'écoute clandestine, telles que la modification numéro de séquence et la fenêtre coulissante. Ces comportements pourraient être optimisés pour la performance, il peut y avoir des attaques actives.

    En revanche, QUIC le paquet peut être dit être armé jusqu'aux dents. En plus des messages individuels tels que PUBLIC_RESET et CHLO, tous les en-têtes de paquets sont certifiés, le corps du message est crypté.

    Tant qu'il est fait pour tout changement un message QUIC, le récepteur peut détecter, réduire efficacement les risques de sécurité.

    Comme indiqué plus haut, la partie rouge du flux en-tête de paquet de trames, une authentification, une partie verte est contenu du message, tout crypté.

    • Mécanisme de correction d'erreur directe

    protocole QUIC a des propriétés très particulières, appelées correction d'erreur directe (Forward Error Correction, FEC), en plus du contenu de chaque donnée elle-même par paquets, comprenant en outre une partie de données d'autres paquets, de sorte qu'une petite quantité de perte de paquets il peut être réémis sans d'autres paquets de données redondants assemblés directement.

    Forward Error limite de correction à la charge de chaque paquet de données peut être transmis, mais la perte de paquets est réduite car le nombre de retransmissions de données. Cela permettra d'atteindre de meilleurs résultats, car la retransmission de données consommera plus de temps, y compris la perte de paquets de confirmation, la retransmission de la demande et attente de nouveaux paquets et d'autres étapes.

    Si vous dites que cette fois, je veux envoyer trois paquets, l'accord sera calculé les valeurs XOR de ces trois paquets et émettre un paquet de contrôle unique, qui est émis un total de quatre paquets, qui apparaît quand un paquet non-contrôle de perte de paquets lorsqu'un cas, le contenu peut être calculé par les données paquets perdus trois autres paquets. Bien sûr, cette technique ne peut être utilisée en cas de perte d'un paquet, si vous perdez, vous ne pouvez pas utiliser plusieurs paquets apparaissent mécanisme de correction et ne peut utiliser que la retransmission .

    résumé sept

    • connexion HTTP / 1 ne peut pas être réutilisé, tête de blocage de la ligne, de multiples défauts généraux de protocole de sécurité du Japon et d'autres facteurs
    • HTTP / 2 par multiplexage, et les techniques binaires de compression d'en-tête de flux, améliore considérablement les performances, mais encore des problèmes
    • HTTP / 3 abandonner le protocole TCP, une nouvelle perspective redessinée HTTP. Son support sous-jacent est un protocole basé sur UDP QUIC, UDP a des avantages uniques, mais il a également pris l'essence de TCP, à savoir pour obtenir un rapide et fiable protocole

    De HTTP / 1 à HTTP / 3, le protocole HTTP par l'évolution constante, de plus en plus élevée des performances, dans le processus, même du protocole sous-jacent TCP au lieu de, avant d'être identifiés comme impropres à UDP, qui continuent d'explorer des idées de conception de l'apprentissage vaut la peine . Bien que cet article est une brève introduction, mais cela a été brièvement évolution récapituler l'espoir que les lecteurs peuvent gagner quelque chose.

    Les auteurs introduisent

    Des vagues dans la navigation de plaisance, mise au point sur l'extrémité avant du champ. Nombre Personal Public: artisans frontaux, les ingénieurs de la classe moyenne est déterminée à pousser pour une absorption rapide des articles de haute qualité.

    Auteur de l'article soumission d'article, bienvenue à présenter. Les exigences de présentation voir:

    "Link"

    Plus excellent article s'il vous plaît Poke

    "Link"

    Un défi ouvert à l'autorité des Nations Unies? experts de l'ONU ont arrêté à l'aéroport, ce parc de campagne grotesque
    Précédent
    Ford à tirer parti de l'innovation technologique et la vitesse de la Chine, pour provoquer une révolution dans la technologie intelligente
    Prochain
    voiture de nuages Matin | Geely a annoncé le prix de vente de la coopération géométrique Mercedes-Benz A avec BMW Réparateur petite hausse des prix Tesla sera reporté
    Yen Hua catwalks pour cette disgrâce, 10 secondes a provoqué une tollé!
    Une faute professionnelle médicale! La gaze de la femme reste après le corps de la mort, les résultats de l'enquête
    Après le vice-président de la Commission a été « pilonnage », la « victoire sûre pour accompagner » la vente ne peut se faire?
    Tout d'abord Snapdragon 845 téléphone comment les performances du Samsung Galaxy S9 + lisse poulet King
    Wang Jianlin année dernière: les billets de location de vente à la pratique, ma génération Comment peut-il être des agents immobiliers
    12e sommet annuel de l'ouverture China Investment Partners bientôt limitée
    cadres Jingdong ont répondu « 2,7 milliards de yuans acquisition de Beijing Jade Palace »: Il y a un bureau de recrutement pratique
    Il est le plus grand pays enclavé du monde, la marine a mis en place pour la protection de l'huile, en plus du tout porte-avions
    Plus d'une centaine secondes pour résoudre notre problème de la fusion nucléaire, centrale nucléaire sera plus économe en énergie, mais aussi pour les militaires
    Cao Renseignez- | préparer leur propre look de remplissage de saucisses! Cette valeur micro-canal de 10 livres d'argent de porc!
    les petits pains de vente est devenu une voiture française profondeur Shu