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:
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/