cosa succede quando si digita un URL nel browser [chiuso]


293

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


2
Sebbene ciò possa essere correlato alla programmazione (eventualmente) - il livello di dettaglio a cui si potrebbe rispondere (avrebbe) riempito volumi. Si prega di ripetere come una query di programmazione.
KevinDTimm,

28
Ottieni il libro DNS e Bind di O'Reilly . Sono solo 624 pagine.
Wim Hollebrandse,

7
edusagar.com/articles/view/70/… questa è la migliore risposta possibile!
Shivendra,

1
Per amor dei posteri, ecco una versione dettagliata di come funziona Internet - goo.gl/eEHmpZ .
Ashwin Krishnamurthy,

4
Ora c'è uno sforzo collaborativo per rispondere a questo nel modo più dettagliato possibile: github.com/alex/what-happens-when/blob/master/README.rst
Piskvor ha lasciato l'edificio il

Risposte:


587

Attenzione: questo è uno schizzo estremamente approssimativo e semplificato , che presuppone la richiesta HTTP più semplice possibile (no HTTPS, no HTTP2, nessun extra), DNS più semplice possibile, nessun proxy, IPv4 single-stack, una sola richiesta HTTP, un semplice server HTTP su l'altra estremità, e nessun problema in nessun passaggio. Questo è, per la maggior parte degli intenti e degli scopi contemporanei, uno scenario non realistico; 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 sequenza temporale è ancora in qualche modo valida:

  1. cache dei controlli del browser; se l'oggetto richiesto è nella cache ed è aggiornato, passa al n. 9
  2. il browser chiede al sistema operativo l'indirizzo IP del server
  3. Il sistema operativo effettua una ricerca DNS e risponde all'indirizzo IP al 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 connessione TCP
  6. il browser riceve la risposta HTTP e potrebbe chiudere la connessione TCP o riutilizzarla per un'altra richiesta
  7. il browser controlla se la risposta è un reindirizzamento o una risposta condizionale (codici di stato del risultato 3xx), richiesta di autorizzazione (401), errore (4xx e 5xx), ecc .; questi sono gestiti in modo diverso dalle risposte normali (2xx)
  8. se memorizzabile nella cache, la risposta viene archiviata nella cache
  9. il browser decodifica la risposta (ad es. se è decompresso)
  10. il browser determina cosa fare con la risposta (ad es. è una pagina HTML, è un'immagine, è una clip audio?)
  11. il browser esegue il rendering della risposta o offre una finestra di download per i tipi non riconosciuti

Ancora una volta, la discussione di ciascuno di questi punti ha riempito innumerevoli pagine; prendilo solo come una sintesi, abbreviato per motivi di chiarezza. Inoltre, ci sono molte altre cose che accadono in parallelo a questo (elaborazione dell'indirizzo digitato, prefetching speculativo, aggiunta di pagina alla cronologia del browser, visualizzazione dei progressi per l'utente, notifica di plugin ed estensioni, rendering della pagina durante il download, pipeline, tracciamento delle connessioni per keep-alive, gestione dei cookie, controllo di contenuti dannosi ecc.) - e l'intera operazione diventa un ordine di grandezza più complesso con HTTPS (certificati, cifre e pinning, oh mio!).


Cosa succederà in caso di richieste https al punto 4, puoi spiegarci un po 'di più?
Mohammad Raheem l'

2
Questo va ben oltre lo scopo di questa risposta. Ma controlla la pagina GH collegata sopra, offre una breve panoramica: github.com/alex/what-happens-when/blob/master/…
Piskvor ha lasciato l'edificio l'

41

Innanzitutto il computer cerca l'host di destinazione. Se esiste nella cache DNS locale, utilizza tali informazioni. In caso contrario, le query DNS vengono eseguite 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 browser normali non lo fanno più).

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

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


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.