Wat is HTTP / 2 en wat heeft invloed op de toekomst van het internet?

Wat is HTTP / 2 en wat heeft invloed op de toekomst van het internet? / Technologie uitgelegd

U hebt nog niet van HTTP / 2 gehoord, maar het is de meest recente update voor HTTP. De nieuwe protocolstandaard introduceert enkele nieuwe concepten en maakt de communicatie tussen servers en applicaties sneller en efficiënter.

Wat is HTTP / 2?

HyperText Transfer Protocol Version 2, of HTTP / 2, is de eerste grote update naar HTTP in 15 jaar.

De vorige protocolstandaard, HTTP / 1.1, is sinds 1997 in gebruik en gebruikt een mix van onhandige oplossingen om de beperkingen van HTTP te verbeteren.

Het is gebaseerd op SPDY (“snel”), een open-source-experiment gestart door Google om enkele van de problemen en beperkingen van HTTP / 1.1 aan te pakken

De Internet Engineering Task Force (IETF) specificeert de veranderingen zoals deze in Hypertext Transfer Protocol versie 2, Draft 17:

“HTTP / 2 maakt een efficiënter gebruik van netwerkbronnen en een verminderde perceptie van latentie mogelijk door headerveldcompressie in te voeren en meerdere gelijktijdige uitwisselingen op dezelfde verbinding toe te staan ​​[...]

“Het biedt ook de mogelijkheid om prioriteiten te stellen voor verzoeken, om belangrijkere aanvragen sneller af te ronden en om de prestaties verder te verbeteren.”

“HTTP / 2 maakt ook een efficiëntere verwerking van berichten mogelijk door het gebruik van binaire bericht-framing.”

“Deze specificatie is een alternatief voor, maar is niet verouderd, de HTTP / 1.1-berichtsyntaxis. De bestaande semantiek van HTTP blijft ongewijzigd.”

HTTP / 2 is gebaseerd op SPDY

Tegen 2012 hebben de meeste moderne browsers en veel populaire sites (Google, Twitter, Facebook enz.) Al SPDY ondersteund. Naarmate de populariteit van SPDY toenam, begon de HTTP-werkgroep (HTTP-WG) te werken aan het bijwerken van de HTTP-standaard.

Vanaf dit punt werd SPDY de fundering en experimentele vertakking voor nieuwe functies in HTTP / 2. We hebben toen onderzocht hoe SPDY browsen kan verbeteren Wat is SPDY en hoe kan dit uw browse-ervaring maximaliseren? Wat is SPDY en hoe kan dit uw browse-ervaring maximaliseren? Lees verder . Sindsdien is de versie 2-norm opgesteld, goedgekeurd en gepubliceerd.

Veel van de functies van SPDY zijn opgenomen in van HTTP / 2 en Google stopte uiteindelijk begin dit jaar met ondersteuning van dit protocol.

De meeste browsers zijn uiteindelijk gestopt met het ondersteunen van SPDY en omdat er geen alternatieven zijn, wordt HTTP / 2 de de facto standaard.

Hoewel de HTTP / 2-protocolstandaard niet strikt achterwaarts compatibel is met HTTP / 1, kan compatibiliteit worden bereikt via vertaling. Alleen een HTTP / 1.1-client begrijpt een HTTP / 2-only-server niet en vice versa. Daarom is de nieuwe protocolversie HTTP / 2 en niet HTTP / 1.2.

Dat gezegd hebbende, is een belangrijk deel van het werk van HTTP-WG, ervoor te zorgen dat HTTP / 1 en HTTP / 2 zonder enig verlies van informatie heen en weer kunnen worden vertaald.

Alle nieuwe mechanismen of functies die worden geïntroduceerd, zijn ook versie-onafhankelijk en achterwaarts compatibel met het bestaande web.

HTTP / 2 is niet echt iets dat een gebruiker kan implementeren, maar er zijn dingen die we kunnen doen om onze browsersnelheid te beïnvloeden. Gelooft u één van deze gemeenschappelijke mythen om uw internetsnelheid te versnellen? 5 Mythen over het stimuleren van internetsnelheid en waarom ze niet werken 5 Mythen over het stimuleren van internetsnelheid en waarom ze niet werken Internetsnelheid is een kritische meting in de 21e eeuw. Er is echter veel verkeerde informatie online over hoe u uw verbinding sneller kunt maken. Hier zijn vijf mythen die je niet moet geloven. Lees verder

De voordelen en functies van HTTP / 2

HTTP / 2 wordt geleverd met enkele geweldige updates voor de HTTP-standaard. Enkele van de meest belangrijke zijn binaire framing, multiplexing, stream-prioriteitstelling, flow control en server-push.

Binaire framing

HTTP-berichten door mfuji09 hebben een licentie onder CC-BY-SA 2.5.

Na de update naar HTTP2 / wordt de HTTP-protocolcommunicatie opgesplitst in een uitwisseling van binair gecodeerde frames. Deze frames worden toegewezen aan berichten die bij een bepaalde stream horen. De streams worden vervolgens gemultiplexed (samen geweven in zekere zin) in een enkele TCP-verbinding.

De nieuwe binaire framelaag introduceert een nieuwe terminologie; Streams, berichten en frames.

  • Streams zijn bidirectionele stromen van bytes die een of meer berichten bevatten.
  • Elk van deze streams heeft een unieke ID en kan bidirectionele berichten bevatten met optionele prioriteitsinformatie.
  • Frames zijn de kleinste eenheid van communicatie in HTTP / 2 die specifieke gegevenssets bevat (HTTP-headers, payloads van berichten, enz.). De header identificeert minimaal de stream waartoe het frame behoort.
  • Berichten zijn een complete set frames die worden toegewezen aan een logisch verzoek of een antwoordbericht.
  • Elk bericht is een logisch HTTP-bericht, zoals een verzoek of antwoorden, samengesteld uit een of meer frames.

Hierdoor kunnen we een enkele TCP-verbinding gebruiken, voor wat in het verleden vereist meerdere.

multiplexing

HTTP / 1.1 zorgt ervoor dat er slechts één antwoord per verbinding per keer kan worden afgeleverd. En de browser opent extra TCP-verbindingen als de client meerdere parallelle verzoeken wil doen.

HTTP / 2 verwijdert deze beperking van HTTP / 1.1 en maakt volledige aanvragen en multiplexen van antwoorden mogelijk. Dit betekent dat de client en de server een HTTP-bericht kunnen opsplitsen in onafhankelijke frames, die vervolgens worden doorschoten en aan de andere kant weer worden samengevoegd..

Over het algemeen is dit de belangrijkste verbetering van HTTP / 2, omdat het de behoefte aan meerdere verbindingen gedeeltelijk zal elimineren. Dit zal op zijn beurt tal van prestatievoordelen introduceren voor alle webtechnologieën.

Het beperkte aantal verbindingen betekent minder TLS-handshakes (Transport Layer Security), beter hergebruik van sessies en een algemene vermindering van client- en serverresourcesvereisten. Dit maakt applicaties sneller, eenvoudiger en goedkoper in gebruik.

Websites met veel externe middelen (afbeeldingen of scripts) zullen de grootste prestatiewinst zien van HTTP / 2-multiplexing.

Stroomprioritering en afhankelijkheid

Verdere verbeteringen van de gemultiplexte stromen worden gemaakt met gewichts- en stroomafhankelijkheden. Met HTTP / 2 kunnen we elke stream een ​​gewicht (een waarde tussen 1 en 256) geven en deze expliciet afhankelijk maken van een andere stream.

Deze afhankelijkheid en gewichtscombinatie leidt tot het creëren van een prioriteitsstructuur, die de server vertelt hoe de cliënt de voorkeur zou geven aan het ontvangen van antwoorden.

De server gebruikt de informatie in de prioriteitenstructuur om de toewijzing van CPU, geheugen en andere bronnen te regelen, evenals de toewijzing van bandbreedte om te zorgen dat de client de optimale levering van hoge prioriteitsantwoorden ontvangt.

Flow Control

Problemen met flow control in HTTP / 2 zijn vergelijkbaar met HTTP / 1.1. Omdat HTTP / 2-streams binnen een enkele TCP-verbinding worden gemultiplext, is de manier waarop de stroomregeling in HTTP / 1.1 werkt niet langer efficiënt.

Kort gezegd, stroomregeling is nodig om te voorkomen dat stromen elkaar storen om een ​​blokkering te veroorzaken. Dit maakt multiplexen mogelijk. Met HTTP / 2 kunnen verschillende stroomregelalgoritmen worden gebruikt zonder dat protocolwijzigingen nodig zijn.

Er is geen algoritme voor stroomregeling opgegeven in HTTP / 2. In plaats daarvan is een set bouwstenen verstrekt om klanten en servers te helpen hun eigen stroomregeling toe te passen.

Je kunt de details van deze bouwstenen vinden in de “Flow Control” sectie van de HTTP / 2 internet-draft.

Server Push

Normaal gesproken vraagt ​​en ontvangt uw browser een HTML-document van een server wanneer hij voor het eerst een pagina bezoekt. De server moet dan wachten tot de browser het HTML-document heeft geparseerd en een aanvraag voor de ingesloten items (CSS, JavaScript, afbeeldingen, etc.) heeft verzonden.

In HTTP / 1.1 kan de server deze items niet verzenden totdat de browser ze heeft aangevraagd, en elke asset vereist een afzonderlijk verzoek (d.w.z. meerdere handshakes en verbindingen).

Serverpush vermindert de latentie doordat de server deze bronnen zonder prompt kan verzenden, omdat deze al weet dat de client deze nodig heeft. Dus in het bovenstaande voorbeeld pusht de server CSS, JavaScript (een veelvoorkomende scripttaal Wat is JavaScript en hoe werkt het? Wat is JavaScript en hoe werkt het? Wat is Javascript? Het is een programmeertaal die wordt gebruikt om webpagina's te verbeteren. Het omvat het dynamisch bijwerken van webpagina's, gebruikersinterfaces en meer. Laten we eens kijken naar waar het bij Javascript om gaat. Lees meer in webpagina's) en afbeeldingen naar de browser om de pagina sneller weer te geven.

Kort gezegd, serverpush staat een server toe om meerdere antwoorden te verzenden voor een enkel clientverzoek.

Hoewel dit handmatig is, is dit het effect dat we momenteel krijgen door CSS of JS in onze HTML-documenten te plaatsen - we pushen de inline-resource naar de klant zonder te wachten totdat de klant om de resource vraagt.

Dit is een grote stap verwijderd van de huidige HTTP-standaard voor strikte één-op-één workflow voor verzoeken en antwoorden.

De beperkingen van HTTP / 2

SPDY had een iets strenger beleid inzake beveiliging en vereiste SSL-codering voor alle verbindingen. HTTPS / 2 vereist geen codering, maar veel services bieden geen HTTP / 2 zonder SSL.

Alle belangrijke browsers ondersteunen HTTP / 2, maar geen enkele ondersteunt het zonder versleuteling. De CanIUs-website heeft een geweldig overzicht van de huidige browserondersteuning voor HTTP / 2, zoals hierboven te zien is.

De achterwaartse compatibiliteit en vertalingen tussen HTTP / 1.1 en HTTP / 2 vertragen de laadsnelheid van de pagina.

Er is geen echte reden waarom codering nu geen standaard of verplichte instelling zou moeten zijn. Als u al een SSL-certificaat op uw site hebt, kunt u de beveiliging van uw HTTPS-website verbeteren door HSTS in te schakelen.

Is HTTP / 2 het volgende grote ding?

HTTP / 2 werd medio 2015 als standaard voorgesteld en de meeste browsers voegden er aan het eind van dat jaar ondersteuning aan toe. HTTP / 2 heeft al invloed op de manier waarop internet werkt en hoe applicaties en servers met elkaar praten.

Er zijn geen vereisten om het gebruik van HTTP / 2 af te dwingen, maar tot nu toe dient het alleen maar voor voordelen en geen nadelen. Het is ook een vrij kleine verandering ten opzichte van een gebruikersperspectief, een die mensen niet echt zullen opmerken.

Volgens W3Tech ondersteunt 31,7% van de top 10 miljoen websites momenteel HTTP / 2. De snelste manier voor de meesten van u om HTTP / 2 op uw website in te schakelen, is het gebruik van Cloudflare's CDN.

De volgende voorgestelde standaard (HTTP / 3) is al in de maak en is gebaseerd op QUIC, een ander experimenteel project van Google. In oktober van dit jaar hebben IETF's HTTP-WG en de QUIC-werkgroep officieel QUIC verzocht om de nieuwe wereldwijde standaard te worden en om het HTTP / 3 te hernoemen.

Als je nieuwsgierig bent, heeft Akamai.com een ​​snel hulpprogramma om te controleren of je browser HTTP / 2 ondersteunt. Is dit niet het geval, overweeg dan om uw browser om te schakelen 5 Alternatieven voor Google Chrome voor een betere browser op desktop of mobiel 5 Google Chrome-alternatieven voor een betere browser op desktop of mobiel Chrome is de populairste browser ter wereld. Maar er zijn nog steeds problemen. Kunnen deze alternatieve browsers een betere keuze zijn? Lees verder .

Ontdek meer over: Computernetwerken, HTTP / 2, SPDY.