Artigo original: What happens when you click on a URL in your browser

Neste artigo, quero que meus leitores tenham uma ideia sobre um conceito básico do mundo da web. Anteriormente, escrevi artigos sobre coisas que importam no mercado de hoje, como a jornada do Angular, o básico sobre React, entre outros (textos em inglês). Hoje, porém, quero que meus leitores vejam o que ocorre quando eles clicam para acessar um URL.

O tópico é autoexplicativo – o que acontece quando clicamos em algum URL? – vamos começar!

Antes de discutir o que acontece quando clicamos em algum URL, devemos, de fato, saber o que é um URL e o que significam as diferentes partes do URL, certo? Vamos, então, entender mais sobre os URLs.

URL – Localizador de recursos uniforme

Se olharmos para o que significa a abreviação, temos outra questão autoexplicativa: é algo que tem o local do recurso que queremos acessar. É o endereço do local em que queremos ir para interagir com informações ou encontrá-las.

Vamos olhar para o seu dia a dia. Se você quiser visitar a casa do seu amigo para algum trabalho ou para obter informações, você precisa do endereço dele. A mesma coisa acontece aqui nesse grande mundo da web: temos que dar ao navegador um endereço do site que queremos acessar. O site é como a casa e o URL é o endereço.

Anatomia de um URL

Sabemos o que é o URL, mas ainda não sabemos sobre as partes de um URL. Vamos lá!

Veja este exemplo:

https://www.exemplo.com/pagina1

Aqui, a primeira parte é 'https'. Ela, basicamente, diz ao navegador qual protocolo ele deve usar. Pode ser http, https, ftp, entre outros. Um protocolo é um conjunto de regras que o navegador usa para comunicação pela rede. 'https' é basicamente uma versão segura, ou seja, as informações são trocadas de maneira segura.

A segunda parte, www.exemplo.com, é um nome de domínio. Você pode relacioná-la com a casa do seu amigo. É o endereço de um site. Nós o usamos para chegar ao servidor (computador treinado) que é responsável por fornecer as informações para esse site. Espere! Eu não mencionei um segundo atrás que URL é o endereço? Agora, eu também menciono que nome de domínio é o endereço. Você pode ter ficado confuso. Tente não ficar!

Diferença entre URL e nome de domínio

A principal diferença entre os dois é que o URL é um endereço completo. O URL informa sobre o método através do qual as informações devem ser trocadas, o caminho depois de chegar a esse site. Considere que o nome de domínio faz parte de um URL.

Vamos pegar nosso exemplo anterior para entender melhor. Você pode dizer que o endereço residencial do seu amigo é um nome de domínio, enquanto o URL não só diz o endereço da casa do amigo (nome de domínio), mas também como você vai se comunicar, como falar em uma sala em separado (segura) ou na frente de todos (onde as informações podem vazar). Ele também diz o caminho, ou seja, qual parte da casa você visitará depois de entrar na casa. Portanto, o nome de domínio faz parte do URL. Um nome de domínio com mais informações é um URL.

Espero que agora esteja claro para você o que é o URL. Vamos para a próxima parte.

Nome de domínio

Na parte anterior, expliquei sobre nomes de domínio, mas não em profundidade. Eu quero que você saiba um pouco mais sobre isso. Como eu disse, o nome de domínio é o endereço do site. Ele dá uma identidade única ao seu site em um mundo tão grande como o da web. Dois nomes de domínio não podem iguais, PORÉM – Sim! Existe um 'porém' – esta não é a única definição de um nome de domínio. Há outra coisa por trás disso. Vamos ver o que é essa coisa.

Como sabemos, quando chegamos a qualquer URL ou nome de domínio, esse site é aberto com seu conteúdo. Um servidor (um computador treinado) o serve. Também sabemos que cada computador tem um endereço IP que é usado para comunicação através da internet. É um endereço como o autoexplicativo 'endereço IP'. Quando chegamos a qualquer URL, estamos realmente chegando ao endereço IP do computador que é responsável por servir o conteúdo do site (hospedagem).

No entanto, agora, você pode pensar: que diabos... tudo é um endereço? Por que esse nome de domínio existe se o endereço IP está lá? Por que não podemos usar o endereço IP para obter o conteúdo do site?

Sim! Você pode usar endereços IP para obter o conteúdo do site, mas será que você seria capaz de lembrar o endereço IP associado a cada site? Obviamente que não! É difícil lembrar o endereço IP de cada site. É por isso que os nomes de domínio surgiram.

Você pode comparar isso à sua lista de contatos. Você não consegue se lembrar do número de cada pessoa, mas pode se lembrar do nome dela. O mesmo conceito se aplica aqui. Você não pode se lembrar desses endereços IP assustadores, mas pode facilmente se lembrar de nomes de domínio.

Essa enorme quantidade de dados é mantida em um banco de dados onde o nome de domínio com seu endereço IP é armazenado. Um sistema que armazena nomes de domínio com seu endereço IP correspondente é conhecido como DNS (Domain name system ou, em português, sistema de nomes de domínio). Acredito que você já deva ter ouvido falar sobre isso.

Já discutimos bastante o básico. Agora, aprofunde-se no processo do que acontece quando chegamos a qualquer URL.

Procura no DNS para encontrar endereços IP

Após chegar ao URL, a primeira coisa que precisa acontecer é resolver o endereço IP associado ao nome de domínio. O DNS ajuda a resolver isso. O DNS é como uma lista telefônica e nos ajuda a fornecer o endereço IP que está associado ao nome de domínio, assim como nossa lista telefônica fornece um número de telefone que está associado ao nome da pessoa.

dns

Essa é a visão geral, mas há quatro camadas pelas quais essa consulta de nome de domínio passa. Vamos entender os passos:

1. Depois de clicar no URL, o cache do navegador é verificado, pois o navegador mantém seus registros DNS por algum tempo para os sites que você visitou anteriormente. Portanto, em primeiro lugar, a consulta DNS é executada aqui para encontrar o endereço IP associado ao nome de domínio.

2. O segundo lugar onde a consulta DNS é executada é no cache do sistema operacional, seguido pelo cache do roteador.

3. Se, nas etapas acima, uma consulta DNS não for resolvida, então é preciso a ajuda do servidor para resolver. O servidor de resolução nada mais é do que seu ISP (provedor de serviços de Internet). A consulta é enviada para o ISP onde a consulta DNS é executada no cache do ISP.

4. Se, na terceira etapa, nenhum resultado for encontrado, então são solicitados envios para o servidor superior ou raiz da hierarquia DNS. Lá nunca acontece de ele dizer que não há resultados encontrados. Na verdade, ele diz de onde essa informação pode ser obtida. Se você estiver pesquisando o endereço IP do domínio de nível superior (.com, .net, .gov, .org). Ele diz ao servidor resolvedor para pesquisar o servidor TLD (domínio de nível superior).

5. Agora, o servidor de resolução pede ao servidor TLD para fornecer o endereço IP do nosso nome de domínio. O TLD armazena informações de endereço do nome de domínio. Ele diz ao servidor de resolução para pedi-lo ao servidor de nomes autoritativos.

6. O servidor de nomes autoritativos é responsável por saber tudo sobre o nome de domínio. Finalmente, o resolvedor (ISP) obtém o endereço IP associado ao nome de domínio e o envia de volta ao navegador.

Depois de obter um endereço IP, o resolvedor o armazena em seu cache para que, da próxima vez, se a mesma consulta vier, ele não precise ir a todas essas etapas novamente. Agora, ele poderá fornecer o endereço IP a partir de seu cache.

Isso é tudo sobre as etapas que são seguidas para resolver o endereço IP que está associado ao nome de domínio. Dê uma olhada abaixo para entender melhor:

dns_resolve

A conexão TCP inicia com o servidor pelo navegador

Uma vez que o endereço IP do computador (onde as informações do seu site estão) é encontrado, ele inicia a conexão com ele. Para se comunicar pela rede, o protocolo de internet é seguido. TCP/IP é o protocolo mais comum. Uma conexão é construída entre os dois usando um processo chamado 'TCP 3-way handshake' (em português, aperto de mão em três vias). Vamos entender o processo resumidamente:

1. Um computador client envia uma mensagem SYN para saber se o segundo computador está aberto a uma nova conexão ou não.

2. Em seguida, o outro computador, se estiver aberto a uma nova conexão, envia mensagem de confirmação, também com mensagem SYN.

3. Depois disso, o primeiro computador recebe sua mensagem e confirma enviando uma mensagem ACK.

Para entender melhor, veja o diagrama abaixo.

process

A comunicação inicia (processo de solicitação e resposta)

Finalmente, a conexão é construída entre o client e o servidor. Agora, os dois podem se comunicar e compartilhar informações. Após a conexão bem-sucedida, o navegador (client) envia uma solicitação para um servidor dizendo que quer receber esse conteúdo. O servidor sabe tudo em termos de qual resposta ele deve enviar para cada solicitação. Assim, o servidor responde. Essa resposta contém todas as informações que você solicitou, como a página da web, o código de status, o controle de cache e assim por diante. O navegador, então, renderiza o conteúdo que foi solicitado.

É isso! Todo o processo acima acontece quando clicamos em qualquer URL. Esse processo demorado, porém, leva menos que segundos para ser concluído. Essa é a resposta para a pergunta "o que acontece quando acessamos qualquer URL em um navegador?"

Agradecemos a leitura!