cosa succede quando digiti un URL nel browser

Qualcuno può dirmi cosa succede dietro le quinte dal momento in cui digito un URL nel browser al momento in cui riesco a vedere la pagina sul browser? Un resoconto dettagliato del processo sarebbe di grande aiuto.

Attenzione: si tratta di uno schizzo estremamente approssimativo e semplificato , che presuppone la richiesta HTTP più semplice ansible (nessun HTTPS, nessun HTTP2, nessun extra), il DNS più semplice ansible, nessun proxy, IPv4 a stack singolo, solo una richiesta HTTP, un semplice server HTTP su l’altra estremità e nessun problema in alcun passaggio. Questo è, per la maggior parte degli intenti e degli scopi contemporanei, uno scenario irrealistico; tutti questi sono molto più complessi nell’uso effettivo e lo stack tecnologico è diventato un ordine di grandezza più complicato da quando è stato scritto. Con questo in mente, la seguente timeline è ancora valida:

  1. il browser controlla la cache; se l’object richiesto è nella cache ed è fresco, vai alla # 9
  2. il browser richiede al sistema operativo l’indirizzo IP del server
  3. Il sistema operativo effettua una ricerca DNS e risponde all’indirizzo IP del browser
  4. il browser apre una connessione TCP al server (questo passaggio è molto più complesso con HTTPS)
  5. il browser invia la richiesta HTTP tramite la connessione TCP
  6. il browser riceve la risposta HTTP e può chiudere la connessione TCP o riutilizzarla per un’altra richiesta
  7. browser controlla se la risposta è un reindirizzamento o una risposta condizionale (codici di stato dei risultati 3xx), richiesta di authorization (401), errore (4xx e 5xx), ecc .; questi sono gestiti in modo diverso dalle normali risposte (2xx)
  8. se memorizzabile nella cache, la risposta viene archiviata nella cache
  9. il browser decodifica la risposta (ad esempio se è gzip)
  10. il browser determina cosa fare con la risposta (ad es. è una pagina HTML, è un’immagine, è una clip audio?)
  11. il browser restituisce la risposta o offre una finestra di dialogo di download per tipi non riconosciuti

Ancora una volta, la discussione di ognuno di questi punti ha riempito innumerevoli pagine; prendi questo solo come riassunto, abbreviato per motivi di chiarezza. Inoltre, ci sono molte altre cose che accadono in parallelo a questo (elaborazione dell’indirizzo digitato, prefetch speculativo, aggiunta di pagine alla cronologia del browser, visualizzazione dei progressi all’utente, notifica di estensioni e plug-in, rendering della pagina durante il download, pipelining, tracciamento della connessione per keep-alive, gestione dei cookie, controllo di contenuti malevoli, ecc.) e l’intera operazione ottiene un ordine di grandezza più complesso con HTTPS (certificati e cifre e pinning, oh mio!).

Prima il computer cerca l’host di destinazione. Se esiste nella cache DNS locale, utilizza tali informazioni. In caso contrario, l’interrogazione DNS viene eseguita fino a quando non viene trovato l’indirizzo IP.

Quindi, il browser apre una connessione TCP all’host di destinazione e invia la richiesta in base a HTTP 1.1 (o potrebbe utilizzare HTTP 1.0, ma i normali browser non lo fanno più).

Il server cerca la risorsa richiesta (se esiste) e risponde usando il protocollo HTTP, invia i dati al client (= il tuo browser)

Il browser utilizza quindi il parser HTML per ricreare la struttura del documento che viene successivamente visualizzata sullo schermo. Se trova riferimenti a risorse esterne, come immagini, file css, file javascript, questi vengono consegnati allo stesso modo del documento HTML stesso.

Cerca le specifiche di HTTP. O per iniziare, prova http://www.jmarshall.com/easy/http/