A resolução de nomes vem antes ou depois de escolher o protocolo?

Não ficou claro no livro como acontece. Pelo que percebi a resolução de nomes vem antes, no entanto no livro está depois. Como o navegar recebe cabeçalhos via HTTP, para verificar o HSTS, sem saber o IP?

Æ!!

E ae Pedro! Vamos lá! :slight_smile:

Essa é meio complicada de responder sem olhar o código dos navegadores, e no código do chromium eu não achei esse passo a passo da ordem das coisas porque são muitos processos trabalhando assíncronamente. Como o protocolo e o domínio não tem relação direta para o processo, eles podem até acontecer em threads (ou processos) separados.

O domínio é totalmente separado do protocolo. Independente de ser http, https, ftp ou outro, o domínio vai ser resolvido da mesma forma. Não consigo te dizer exatamente a ordem que o navegador faz isso, até porque pode variar entre navegadores, mas isso não vai influenciar o resultado final.

Sobre o HSTS, o navegador mantem uma lista de sites que pediram para ser acessados via https por padrão. Existe uma lista que já está embutida no código fonte do chromium (até fiz um tweet sobre isso esses dias https://twitter.com/PotHix/status/819676467462369282) e fora ela, os sites podem mandar o cabeçalho na primeira requisição. Ou seja, se você está acessando pela primeira vez, ele vai olhar essa lista e ver se está lá, senão ele usa http mesmo (caso você não tenha especificado https). A partir da segunda requisição, caso o servidor tenha mandado o cabeçalho de HSTS, o site já vai estar na lista.

Sei que não respondi sua duvida exatamente, mas espero que tenha ajudado a entender o processo.

Há braços


PotHix

E ae PotHix! Valeu pela resposta, cara!

Minha dúvida era exatamente o que você respondeu. Mas assim, no caso de o navegador não saber se é pra usar HTTPS, ele irá fazer uma primeira requisição HTTP. OK! E nessa requisição ele não precisaria saber o IP? Ou seja, ele primeiro teria fazer a resolução de nomes e descobrir o IP do domínio antes de fazer a primeira requisição?

Ou não tem relação entre os dois processos?

Valeu!

Æ!!

Ah, isso tem relação sim. O que não tem é a definição do protocolo. Ele pode escolher usar http ou https sem precisar resolver o domínio. Já para fazer a requisição ele precisa obrigatoriamente resolver o dominio antes. :slight_smile:

Há braços


PotHix

2 curtidas