Webhosting

HTTP/2 en HTTP/3

Definitie

HTTP/2 en HTTP/3 zijn de recente versies van het protocol van het web. HTTP/2 laat veel verzoeken tegelijk over één TCP-verbinding lopen, als binaire frames met gecomprimeerde headers; HTTP/3 houdt dat principe aan maar steunt op QUIC, bovenop UDP, zodat een verloren pakket alleen nog zijn eigen stream vertraagt.

HTTP/2 en HTTP/3, Webhosting

Een WordPress-pagina is zelden één bestand: eerst de HTML, daarna tientallen stylesheets, scripts, afbeeldingen en lettertypen. Bij HTTP/1.1 verwerkt elke verbinding maar één verzoek tegelijk, waardoor de browser meerdere verbindingen moet openen en in de rij moet staan. HTTP/2 en daarna HTTP/3 zijn ontworpen om die vele kleine uitwisselingen efficiënter te vervoeren, zonder iets te veranderen aan de betekenis van de verzoeken: methoden, statuscodes en headers blijven hetzelfde.

HTTP/2: multiplexing

HTTP/2, nu beschreven in RFC 9113 (die RFC 7540 vervangt), knipt berichten op in binaire frames. Elke uitwisseling wordt een stream, en veel streams lopen tegelijk over één verbinding: een trage stream houdt de andere niet meer op. De headers, die van verzoek tot verzoek sterk op elkaar lijken, worden gecomprimeerd met HPACK.

De RFC erkent één beperking: de head-of-line blocking van TCP is niet opgelost. Gaat er een pakket verloren, dan houdt TCP alles wat erna komt vast tot het opnieuw is verzonden, en wachten alle streams. Voor HTTP/2 over TLS eist de standaard TLS 1.2 of nieuwer, en de documentatie van Apache wijst erop dat de meeste browsers alleen HTTP/2 spreken met https-adressen.

Vergelijking in drie kolommen. HTTP/1.1: tekstberichten, één verzoek tegelijk per verbinding, meerdere TCP-verbindingen open, headers bij elk verzoek herhaald. HTTP/2: binaire frames, gemultiplexte streams over één TCP-verbinding, gecomprimeerde headers met HPACK, maar een verloren TCP-pakket blokkeert alle streams. HTTP/3: dezelfde multiplexing over QUIC en UDP, TLS 1.3 ingebouwd in QUIC, gecomprimeerde headers met QPACK, en een verloren pakket vertraagt alleen zijn eigen stream.
HTTP/2 bundelt de verzoeken op één verbinding; HTTP/3 wisselt van transport om de blokkade door TCP weg te nemen.

HTTP/3: een ander transport

HTTP/3 (RFC 9114) gebruikt hetzelfde model, maar over QUIC (RFC 9000), een beveiligd transportprotocol dat in UDP-datagrammen reist. QUIC regelt de streams zelf: ze zijn onafhankelijk, en een verlies vertraagt alleen de betrokken stream. De TLS 1.3-versleuteling maakt deel uit van de handshake, wat het aantal heen-en-terugreizen tot de eerste byte verkleint, en een verbinding kan een netwerkwissel overleven, bijvoorbeeld van wifi naar 4G. De headercompressie gaat over op QPACK.

De browser ontdekt HTTP/3 via de header Alt-Svc, die bij een eerste verbinding via HTTP/2 of HTTP/1.1 wordt meegestuurd: die meldt dat dezelfde site ook via h3 antwoordt, op een UDP-poort. Blokkeert een firewall UDP, dan blijft de browser gewoon bij HTTP/2.

Video: “HTTP/1 to HTTP/2 to HTTP/3” (ByteByteGo, in het Engels)

Voor WordPress

  • Controleer welke versie wordt gebruikt in het tabblad Netwerk van de ontwikkelaarstools van de browser (kolom Protocol: h2 of h3).
  • Het eenvoudigst is vaak een CDN, dat HTTP/3 met de bezoekers spreekt, welke server je ook hebt. LiteSpeed biedt het ook; voor Nginx bestaat de HTTP/3-module sinds versie 1.25.0, en de documentatie noemt die nog steeds experimenteel.
  • Op Apache loopt HTTP/2 via mod_http2 en de directive Protocols h2 http/1.1; de documentatie raadt de MPM-module event aan, omdat bij prefork een verbinding maar één verzoek tegelijk verwerkt.
  • Open UDP-poort 443 in de firewall van de server als je HTTP/3 zelf inschakelt.

Het effect op de prestaties hangt af van de site, het netwerk en het aantal bestanden; de prestatiesignalen waar Google naar kijkt, komen aan bod in ons artikel HTTPS, HSTS en beveiligingsheaders.

Verder lezen

  • Artikel HTTPS, HSTS en beveiligingsheaders: waar Google echt rekening mee houdt

Bronnen

  1. RFC 9113: HTTP/2 (externe link, opent in een nieuw tabblad)
  2. RFC 9114: HTTP/3 (externe link, opent in een nieuw tabblad)
  3. RFC 9000: QUIC, A UDP-Based Multiplexed and Secure Transport (externe link, opent in een nieuw tabblad)
  4. Apache HTTP Server: HTTP/2 guide (externe link, opent in een nieuw tabblad)

Alle definities

WordPress-beveiliging, zonder ruis

Eén e-mail wanneer het ertoe doet: nieuw waargenomen aanvallen, updates van de plugin en praktische gidsen. Geen spam, afmelden met één klik.

Begin gratis, stap over op Pro wanneer je eraan toe bent

De gratis versie verbergt WordPress al en verplaatst de inlogpagina. Pro voegt aliassen, tweestapsverificatie en bewaking toe.