o que acontece quando você digita um URL no navegador [fechado]

293

Alguém pode me dizer o que acontece nos bastidores, desde o momento em que digito um URL no navegador até o momento em que vejo a página no navegador? Uma descrição detalhada do processo seria de grande ajuda.

Aadith Ramia
fonte
2
Embora isso possa estar relacionado à programação (eventualmente) - o nível de detalhe ao qual isso pode ser respondido preencheria (e já) volumes. Por favor, refaça como uma consulta de programação.
precisa saber é o seguinte
28
Obtenha o livro DNS e Bind de O'Reilly . São apenas 624 páginas.
Wim Hollebrandse
7
edusagar.com/articles/view/70/… esta é a melhor resposta possível!
Shivendra
1
Para o bem da posteridade, aqui está uma versão detalhada de como a Internet funciona - goo.gl/eEHmpZ .
Ashwin Krishnamurthy
4
Agora existe um esforço colaborativo para responder a isso o mais detalhadamente possível: github.com/alex/what-happens-when/blob/master/README.rst
Piskvor saiu do prédio em

Respostas:

587

Atenção: este é um esboço extremamente grosseiro e simplificado , assumindo a solicitação HTTP mais simples possível (sem HTTPS, sem HTTP2, sem extras), DNS mais simples possível, sem proxies, IPv4 de pilha única, uma solicitação HTTP apenas, uma solicitação HTTP apenas, um servidor HTTP simples no a outra extremidade e sem problemas em nenhuma etapa. Este é, para a maioria das intenções e propósitos contemporâneos, um cenário irreal; tudo isso é muito mais complexo no uso real, e a pilha de tecnologias se tornou uma ordem de magnitude mais complicada desde que isso foi escrito. Com isso em mente, a seguinte linha do tempo ainda é um pouco válida:

  1. navegador verifica cache; se o objeto solicitado estiver no cache e for atualizado, pule para # 9
  2. navegador pede ao sistema operacional o endereço IP do servidor
  3. O SO faz uma pesquisa de DNS e responde o endereço IP ao navegador
  4. navegador abre uma conexão TCP com o servidor (esta etapa é muito mais complexa com HTTPS)
  5. navegador envia a solicitação HTTP através da conexão TCP
  6. O navegador recebe resposta HTTP e pode fechar a conexão TCP ou reutilizá-la para outra solicitação
  7. o navegador verifica se a resposta é um redirecionamento ou uma resposta condicional (códigos de status do resultado 3xx), solicitação de autorização (401), erro (4xx e 5xx), etc .; estes são tratados de maneira diferente das respostas normais (2xx)
  8. se armazenável em cache, a resposta é armazenada no cache
  9. o navegador decodifica a resposta (por exemplo, se for compactada com gzip)
  10. O navegador determina o que fazer com a resposta (por exemplo, é uma página HTML, é uma imagem, é um clipe de som?)
  11. navegador renderiza resposta ou oferece uma caixa de diálogo de download para tipos não reconhecidos

Novamente, a discussão de cada um desses pontos encheu inúmeras páginas; tome isso apenas como um resumo, abreviado por uma questão de clareza. Além disso, há muitas outras coisas acontecendo paralelamente a isso (processamento de endereço digitado, pré-busca especulativa, adição de página ao histórico do navegador, exibição de progresso ao usuário, notificação de plugins e extensões, renderização da página durante o download, o pipeline, o rastreamento de conexão para keep-alive, gerenciamento de cookies, verificação de conteúdo malicioso etc.) - e toda a operação torna-se uma ordem de magnitude mais complexa com HTTPS (certificados e cifras e fixação, oh meu!).

Piskvor
fonte
O que acontecerá no caso de solicitações de https na etapa 4, você pode explicar um pouco mais?
Mohammad Raheem
2
Isso está muito além do escopo desta resposta. Mas verifique a página do GH vinculada acima, que fornece uma breve visão geral: github.com/alex/what-happens-when/blob/master/…
Piskvor saiu do prédio
41

Primeiro, o computador procura o host de destino. Se existir no cache DNS local, ele usará essas informações. Caso contrário, a consulta DNS será realizada até que o endereço IP seja encontrado.

Em seguida, seu navegador abre uma conexão TCP com o host de destino e envia a solicitação de acordo com o HTTP 1.1 (ou pode usar o HTTP 1.0, mas os navegadores normais não fazem mais isso).

O servidor procura o recurso necessário (se existir) e responde usando o protocolo HTTP, envia os dados para o cliente (= seu navegador)

O navegador usa o analisador de HTML para recriar a estrutura do documento que é apresentada posteriormente na tela. Se encontrar referências a recursos externos, como imagens, arquivos css e arquivos javascript, eles serão entregues da mesma maneira que o próprio documento HTML.

ingênuos
fonte