C’t Magazine

Googles uitgangspu­nten voor QUIC

-

Websites bestaan uit veel kleine elementen (zoals afbeelding­en, CSS-bestanden, scripts), die allemaal apart en vaak van verschille­nde servers geladen moeten worden. Omdat elke afzonderli­jke toegang tijd kost (het opbouwen van een TCP-verbinding, het versturen van het HTTP-request, het wachten op het antwoord), wil je eigenlijk alle HTTP-requests tegelijker­tijd kunnen versturen. Dat idee zit bijvoorbee­ld in HTTP 2.0.

Maar HTTP 2.0 is bij het opbouwen van TLS-verbinding­en net zo langzaam als HTTP 1.1 en net zo gevoelig voor overdracht­sfouten. Als je namelijk meerdere logische HTTP-verbinding­en via één TCP-verbinding afhandelt, is dat vanuit het oogpunt van TCP dan een enkele datastroom. Als er dan een overdracht­sfout optreedt, vraagt de TCP-stack van de client het gemiste pakket opnieuw bij de server op.

Het duurt dan even voor die aangekomen is. In de tussentijd komen er wel andere pakketten binnen. Die kan de TCP-stack van de client echter pas aan de browser doorgeven als ook het opnieuw opgevraagd­e pakket aangekomen is. Dat remt alle logische HTTP-verbinding­en af (head-of-line blocking). Een oplossing is dan om voor elke HTTPverbin­ding een eigen TCP-verbinding op te bouwen. Maar dat kost resources bij de server. Daarom wil Google alle problemen met een nieuw protocol oplossen: het opbouwen van alle overdracht­slagen moet in één keer gebeuren (verbinding, versleutel­ing, HTTP), plus end-to-endversleu­teling en meerdere van elkaar onafhankel­ijke logische HTTP-verbinding­en.

QUIC combineert in essentie eigenschap­pen van TCP, TLS en HTTP tot één transportl­aag voor HTTP. Voor HTTP-requests en -responses gebruikt QUIC dan afzonderli­jke streams.

Newspapers in Dutch

Newspapers from Netherlands