Het internet zal efficiënter worden dankzij de komst van HTTP / 2.  Maar wat is het en hoe verbetert het op HTTP?

Wat is HTTP / 2 en hoe beïnvloedt dit de toekomst van internet?

Advertentie Je hebt misschien nog nooit van HTTP / 2 gehoord, maar het is de meest recente update voor HTTP. De nieuwe protocolstandaard introduceert enkele nieuwe concepten en maakt communicatie tussen servers en applicaties sneller en efficiënter. Wat is HTTP / 2? HyperText Transfer Protocol versie 2 of HTTP / 2 is de eerste grote update van HTTP in 15 jaar.

Advertentie

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

Wat is HTTP / 2?

HyperText Transfer Protocol versie 2 of HTTP / 2 is de eerste grote update van HTTP in 15 jaar.

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

Het is gebaseerd op SPDY ("speedy"), 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 wijzigingen 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 te introduceren en meerdere gelijktijdige uitwisselingen op dezelfde verbinding toe te staan ​​[…]

"Het staat ook prioriteit toe aan aanvragen, waardoor belangrijkere aanvragen sneller kunnen worden voltooid, waardoor de prestaties verder worden verbeterd."

"HTTP / 2 maakt ook een efficiëntere verwerking van berichten mogelijk door het gebruik van binaire berichtenframing."

“Deze specificatie is een alternatief voor, maar niet verouderd, de syntaxis van het HTTP / 1.1-bericht. De bestaande semantiek van HTTP blijft ongewijzigd. "

HTTP / 2 is gebaseerd op SPDY

HTTP / 2 is gebaseerd op SPDY

Tegen 2012 ondersteunden de meeste moderne browsers en veel populaire sites (Google, Twitter, Facebook enz.) SPDY al. Terwijl de populariteit van SPDY toenam, begon de HTTP Working Group (HTTP-WG) te werken aan het updaten van de HTTP-standaard.

Vanaf dit punt werd SPDY de basis en experimentele tak voor nieuwe functies in HTTP / 2. Destijds hebben we onderzocht hoe SPDY het browsen kan verbeteren. Wat is SPDY en hoe kan het uw surfervaring maximaliseren? Wat is SPDY en hoe kan het uw surfervaring maximaliseren? Lees verder . Sindsdien is de versie 2-standaard opgesteld, goedgekeurd en gepubliceerd.

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

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

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

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

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 dat een van deze veel voorkomende mythen uw internetsnelheid versnelt? 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 maatstaf in de 21e eeuw. Er is echter online veel verkeerde informatie over hoe u uw verbinding sneller kunt maken. Hier zijn vijf mythen die je niet moet geloven. Lees verder

De voordelen en kenmerken van HTTP / 2

HTTP / 2 wordt geleverd met enkele geweldige updates van de HTTP-standaard. Enkele van de belangrijkste zijn binaire framing, multiplexing, streamprioriteit, flow control en server push.

Binaire Framing

HTTP-bericht in HTTP / 2 binaire framing-streams
HTTP-berichten van mfuji09 zijn gelicenseerd 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 gemultiplext (in zekere zin aan elkaar geweven) in een enkele TCP-verbinding.

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

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

Hierdoor kunnen we een enkele TCP-verbinding gebruiken, waarvoor in het verleden meerdere nodig waren.

multiplexing

Multiplexing voorbeeld

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

HTTP / 2 verwijdert deze beperking van HTTP / 1.1 en maakt volledige verzoeken en antwoordmultiplexing mogelijk. Dit betekent dat de client en server een HTTP-bericht kunnen opsplitsen in onafhankelijke frames, die vervolgens worden verweven en aan het andere uiteinde weer in elkaar worden gezet.

Over het algemeen is dit de belangrijkste verbetering van HTTP / 2, omdat het de noodzaak voor meerdere verbindingen gedeeltelijk elimineert. Dit zal op zijn beurt tal van prestatievoordelen met zich meebrengen voor alle webtechnologieën.

Het verminderde aantal verbindingen betekent minder TLS-handshakes (Transport Layer Security), beter hergebruik van sessies en een algehele vermindering van client- en serverresource-eisen. Dit maakt applicaties sneller, eenvoudiger en goedkoper te implementeren.

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

Prioritering van stroom en afhankelijkheid

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

Deze combinatie van afhankelijkheid en gewicht leidt tot het maken van een boom met prioriteiten, die de server vertelt hoe de klant de voorkeur geeft aan antwoorden.

De server gebruikt de informatie in de prioriteitenboom om de toewijzing van CPU, geheugen en andere bronnen te beheren, evenals de toewijzing van bandbreedte om ervoor te zorgen dat de client de optimale levering van antwoorden met hoge prioriteit ontvangt.

Debietregeling

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

Kortom, stroomregeling is nodig om te voorkomen dat stromen met elkaar interfereren om een ​​blokkade te veroorzaken. Dit maakt multiplexen mogelijk. HTTP / 2 maakt het mogelijk om verschillende flow-control-algoritmen te gebruiken, zonder dat protocolwijzigingen nodig zijn.

Er is geen algoritme voor flow control gespecificeerd in HTTP / 2. In plaats daarvan is een set bouwstenen verstrekt om klanten en servers te helpen bij het toepassen van hun eigen flow control.

U kunt de bijzonderheden van deze bouwstenen vinden in het gedeelte "Flow Control" van de HTTP / 2 internet-draft.

Server Push

Normaal gesproken vraagt ​​uw browser een HTML-document van een server en ontvangt deze bij het eerste bezoek aan een pagina. De server moet vervolgens wachten tot de browser het HTML-document heeft ontleed en een verzoek voor de ingesloten elementen (CSS, JavaScript, afbeeldingen, enz.) Heeft verzonden.

In HTTP / 1.1 kan de server deze activa niet verzenden totdat de browser erom vraagt, en elk activum vereist een afzonderlijk verzoek (dwz meerdere handshakes en verbindingen).

Serverpush vermindert de latentie doordat de server deze bronnen zonder prompt kan verzenden, omdat hij al weet dat de client ze nodig heeft. Dus in het bovenstaande voorbeeld zal de server CSS, JavaScript pushen (een veelgebruikte 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 waar Javascript om draait. Lees meer op webpagina's) en afbeeldingen naar de browser om de pagina sneller weer te geven.

Kortom, server push maakt het mogelijk dat een server meerdere antwoorden verzendt voor een enkele clientaanvraag.

Hoewel dit handmatig is, is dit het effect dat we momenteel krijgen door CSS of JS in onze HTML-documenten op te nemen - we duwen de geïnlineerde bron naar de client zonder te wachten tot de client erom vraagt.

Dit is een grote stap verwijderd van de huidige HTTP-standaard van een strikte één-op-één aanvraag-antwoord workflow.

De beperkingen van HTTP / 2

Afbeelding van browsers die HTTP / 2 ondersteunen

SPDY had een iets strenger beveiligingsbeleid en vereiste SSL-codering voor alle verbindingen. HTTPS / 2 vereist geen codering, maar veel services zullen HTTP / 2 niet gebruiken zonder SSL.

Alle belangrijke browsers ondersteunen HTTP / 2, maar geen van hen ondersteunt het zonder codering. De CanIUs-website biedt 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 zullen de laadsnelheid van de pagina vertragen.

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

Is HTTP / 2 het volgende grote ding?

Vergelijking van HTTP / 1.1 en HTTP / 2 laadtijd

HTTP / 2 werd midden 2015 als standaard voorgesteld en de meeste browsers hebben er tegen het einde van dat jaar ondersteuning voor toegevoegd. HTTP / 2 heeft al invloed op de manier waarop internet werkt en hoe applicaties en servers met elkaar communiceren.

Er zijn geen vereisten om het gebruik van HTTP / 2 te forceren, maar tot nu toe heeft het alleen voordelen en geen nadelen. Het is ook een vrij kleine verandering vanuit 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 door CDN van Cloudflare te gebruiken.

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 Working Group officieel QUIC gevraagd om de nieuwe wereldwijde standaard te worden en de naam HTTP / 3 te wijzigen.

Als u nieuwsgierig bent, heeft Akamai.com een ​​snelle tool om te controleren of uw browser HTTP / 2 ondersteunt. Als dit niet het geval is, kunt u overwegen uw browser te schakelen 5 Google Chrome-alternatieven 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 het heeft nog steeds problemen. Kunnen deze alternatieve browsers een betere keuze zijn? Lees verder .

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