Privé prefetch-proxy in Chrome voor netwerkbeheerders

Om de laadtijden van pagina's voor onze gebruikers te verbeteren, haalt Chrome soms links op de zoekresultatenpagina van Google en op andere deelnemende websites vooraf op voordat de gebruiker erop klikt. Deze functie wordt in dit artikel gedetailleerd beschreven vanuit technisch perspectief.

Deze functie is afhankelijk van een CONNECT proxy die het IP-adres van de gebruiker verbergt voor de website die vooraf moet worden opgehaald. Op zijn beurt verplaatst dit inherent het tot stand brengen van de verbinding buiten het zicht van de netwerkbeheerders.

Tegelijkertijd erkennen we dat netwerkbeheerders mogelijk inhoud moeten filteren. Daarom hebben we een mechanisme ontworpen waarmee netwerkbeheerders dit kunnen blijven doen als de gebruiker op een vooraf opgehaalde link klikt.

Inhoud filteren

Om de privacy van de gebruiker te beschermen, zal Chrome geen waarneembare DNS-lookups uitvoeren bij het vooraf ophalen van links. Als de gebruiker naar een vooraf opgehaalde link navigeert, worden de paginabronnen uit de lokale cache opgehaald zonder een waarneembare DNS-zoekopdracht uit te voeren. Eén neveneffect is dat het filteren van inhoud mogelijk niet werkt zoals bedoeld wanneer de gebruiker naar een vooraf opgehaalde link navigeert.

Om netwerkbeheerders in staat te stellen inhoud op deze vooraf opgehaalde navigaties te filteren, hebben we een signaleringsmechanisme ontworpen om Chrome te instrueren een DNS-lookup uit te voeren wanneer de gebruiker op een vooraf opgehaalde link klikt. Deze DNS-zoekopdracht zal op hetzelfde moment en op dezelfde manier plaatsvinden alsof de prefetch niet had plaatsgevonden, waardoor de beheerders dezelfde mogelijkheid hebben om inhoud te filteren. Chrome onderbreekt het laden van de vooraf opgehaalde bronnen uit de cache totdat deze tweede DNS-zoekopdracht slaagt. Als dit mislukt, gebruikt Chrome de vooraf opgehaalde bronnen niet, maar wordt de pagina op de gebruikelijke manier geladen. Houd er rekening mee dat dit een prestatieverlies met zich meebrengt voor de gebruiker, aangezien Chrome moet wachten tot de DNS-zoekopdracht is voltooid.

Details van het signaleringsmechanisme

Voor gebruikers die het vooraf laden van pagina's niet hebben uitgeschakeld, voert Chrome asynchroon een DNS-zoekopdracht uit voor dns-tunnel-check.googlezip.net wanneer Chrome start of wanneer er een wijziging in de netwerkinterface plaatsvindt.

Hier zijn de mogelijke resultaten voor de dns-tunnel-check.googlezip.net controle:

  • Als het antwoord NXDOMAIN of SERVFAIL is, of als een NOERROR antwoordcode wordt geretourneerd maar geen A of AAAA -records bevat, begrijpt Chrome dat de netwerkbeheerders inzicht nodig hebben in de navigatie naar vooraf opgehaalde pagina's (zie Preflight-modus ).
  • Als het antwoord een andere waarde is, gebruikt Chrome rechtstreeks de vooraf opgehaalde bronnen en voert het geen extra DNS-lookups uit wanneer de gebruiker naar de vooraf opgehaalde pagina navigeert.

De uitkomst van deze controle blijft behouden totdat Chrome opnieuw wordt opgestart of totdat de netwerkinterface verandert, waardoor een nieuwe DNS-zoekopdracht voor dns-tunnel-check.googlezip.net wordt geactiveerd, met een mogelijk ander resultaat.

Preflight-modus

In deze modus zal Chrome, voordat naar een pagina navigeert die vooraf is opgehaald via de private prefetch-proxy, een DNS-zoekopdracht uitvoeren voor het relevante domein en wachten tot het antwoord terugkomt:

  • Als het antwoord bestaat uit een niet-lege set IP-adressen, gaat Chrome verder met de navigatie, met behulp van de vooraf opgehaalde bronnen.
  • Als het antwoord REFUSED (voorkeur) of NXDOMAIN is, gaat Chrome niet verder met navigeren en wordt in plaats daarvan de relevante DNS-foutpagina weergegeven.