DNS Domain Name System (Sistema de Nomes de Domínio)

Protocolo utilizado para buscar endereços IPs vinculados com um URL solicitado através de um navegador ou aplicativo de email.

Categoria de Tecnologia

Postado em 26 abril 2022

Atualizado em 19 julho 2023

Palavras-chave: network,internet,dns,domain,name,system,ip,address,endereço

Visualizações: 3923

A interface do usuário é projetada para facilitar a experiência dos usuários. Ainda quando computadores não tinham uma interface de usuário, só era possível manusear o computador através de um terminal. Felizmente, hoje é possível enviar instruções para o computador através de periféricos como o mouse. Sem dúvidas, o mouse foi um dispositivo essencial para que um número bem maior de pessoas pudessem ter acesso as ferramentas eficientes que o computador proporciona.

Outro exemplo de interface amigável é a numeração exibida na tela do computador. Apesar do computador só entender a numeração binária, esses dados são traduzidos para a numeração decimal, na qual o humano está acostumado.

Nos navegadores também estão presentes ferramentas que auxiliam os humanos e agilizam processos. O protocolo DNS é um grande exemplo de ferramenta auxiliar usada para tornar a interface do usuário mais amigável.

O que é o protocolo DNS?

DNS é a abreviação de “Domain Network System”, cujo expressão em português é “Sistema de nomes de domínio”.

O protocolo DNS é um sistema composto por uma hierarquia de servidores que encontram o endereço IP de um URL. O URL é uma cadeia de caracteres (string) vinculado com um serviço disponível na internet, como o site de busca do google ou um site de banco online. Quando esse URL é acessado através da barra de endereço do navegador, ele retorna um endereço IP contendo o serviço que foi acessado. Esse serviço é hospedado em um ou mais servidores na internet, podendo ter um ou mais endereços IPs.

Pelo fato do endereço IP não ser um parâmetro amigável ao usuário, foi-se introduzido o DNS que vincula um URL com um endereço IP e permite o acesso usando um URL que é mais amigável ao usuário. O papel do DNS é idêntica à uma lista telefônica, onde o nome de uma pessoa está vinculado com um número de telefone.

Além de sites, o DNS também resolve endereços IPs de emails.

O parâmetro (URL) passar por um processo hierárquico até ser retornado como um endereço IP. Em outras palavras, essa informação pode passar por alguns servidores, dependendo da existência do endereço IP solicitado. O navegador precisa obter o endereço IP primeiro e em seguida o acesso ao serviço vinculado com o URL se torna possível.

1. Solicita IP
2. Retorna IP
3. Solicita acesso
4. Aceita acesso
Navegador
DNS
Servidor Web
  1. Para o navegador poder acessar o site, primeiro ele precisa do endereço IP.
  2. O servidor DNS retorna o endereço IP solicitado.
  3. O navegador irá solicitar acesso ao endereço IP retornado.
  4. A comunicação entre os dispositivos é estabelecida, permitindo a troca de dados.

Como funciona o protocolo DNS?

Ao digitar um URL como “dicionariotec.com” no endereço do navegador, estamos fazendo uma solicitação para obter um endereço IP. Uma vez que o navegador obtém a resposta do servidor DNS contendo o endereço IP, ele armazena essa informação temporariamente em um servidor local. O servidor local pode ser o próprio computador local ou roteador doméstico. O tempo de armazenamento dessa informação obtida através do servidor DNS irá depender do TTL (Time to live), cujo valor é obtido junto com o endereço IP. A unidade do TTL é definida em segundos e possui um tamanho de 32 bits segundo o RFC 1035. Uma vez que esse valor passa da sua data de validade, uma nova solicitação deve ser feita ao servidor DNS para obter informações de acesso e repetir esse ciclo novamente.

servidor dns

O URL passa por 10 etapas até ter seu endereço IP retornado.
Usando “dicionariotec.com” como exemplo, a descrição de cada etapa é a seguinte:

  1. Digitamos www.dicionariotec.com na barra de endereço no nosso navegador. Esse endereço será enviado para um servidor chamado “DNS Resolver”
  2. O “DNS Resolver” irá perguntar para o outro servidor “DNS root”, onde procurar o URL
  3. O “DNS root” irá informar sobre onde procurar o site que queremos acessar
  4. O servidor “TLD” possui informações de sites que compartilham a mesma extensão de domínio. No nosso caso essa extensão de domínio é “.com”
  5. O servidor “TLD” irá nos informar onde podemos encontrar o endereço IP que estamos procurando
  6. Perguntamos mais uma vez informações do site que queremos acessar
  7. Obtemos o endereço IP que queremos acessar
  8. O navegador irá receber esse endereço IP
  9. O navegador irá tentar acessar o endereço IP retornado
  10. O site pode ser acessado e visualizado

As etapas acima são realizadas quando o endereço IP não está armazenado no cache do navegador, computador ou roteador. Quando as informações do URL estão armazenadas no cache e estão dentro da data de validade (TTL) as etapas acima não são executadas.

Como funciona a hierarquia DNS?

Nas etapas acima três servidores importantes foram acessados para a obtenção do endereço IP:

  1. DNS Root
  2. TLD
  3. Servidor autoritativo

hierarquia dns

Para encontrar o endereço IP final, o resolvedor DNS deve enviar uma solicitação para cada um dos servidores acima na respectiva ordem.

DNS Root (Servidor raíz)

Primeiro passo necessário para a obtenção do endereço IP de destino. Essa camada retorna um valor contendo o domínio de todo que o resolvedor DNS deve procurar em seguida.

TLD (Top Level Domain)

Retorna o servidor autoritativo do URL buscado no navegador.

Servidor autoritativo

Servidor que possui o endereço IP vinculado com o URL solicitado. Esse valor é obtido e enviado para o resolvedor DNS que envia para o navegador. Usando o endereço IP, finalmente o servidor contendo o serviço procurado pode ser acessado.

Como obter o RR (Resource Records)?

A linguagem de programação PHP possui a função “dns_get_record” especializada em obter dados RR, cuja informação é vinculada com o nome de hospedeiro (hostname).

<?php
	$result = dns_get_record("youtube.com");
	print_r($result);
	
	/* Resultado
	Array
	(
	    [0] => Array
	        (
	            [host] => youtube.com
	            [class] => IN
	            [ttl] => 114
	            [type] => A
	            [ip] => 142.251.222.46
	        )

	    [1] => Array
	        (
	            [host] => youtube.com
	            [class] => IN
	            [ttl] => 33
	            [type] => AAAA
	            [ipv6] => 2404:6800:4004:818::200e
	        )
        ...
	*/    
?>

Ao procurar o URL “youtube.com”, foi obtido uma lista contendo várias informações necessárias para o acesso do servidor do youtube. Ambos itens possuem classe “IN” que significa “Internet”. Os tipos “A” e “AAAA” indicam que tipo de endereço foi retornado, cujos valores respectivamente representam IPv4 e IPv6 (versões de endereços IP).

Conclusão

O DNS é um protocolo responsável por encontrar o endereço IP vinculado com o URL solicitado. Sem o protocolo DNS, provavelmente muitos números teriam que ser decorados por humanos para o acesso de serviços. Sem dizer que um URL pode estar vinculado com múltiplos endereços IPs.

Projetos práticos

Criando um jogo de guerra nas estrelas em javascript usando a biblioteca p5.js

Jogo simples de guerra espacial desenvolvido em javascript. Esse jogo usa cálculos de física para simular efeitos de atrito e inércia.

Criando um sistema de mini garagem automatizada integrada com um sistema de monitoramento independente

Desenvolvimento de um sistema de monitoramento que exibi todos os eventos que acontecem na garagem automatizada, como abertura de portões ou ocupação de vagas.

Criando um jogo de pacman usando javascript e pixi.js (parte 1)

Desenvolvimento dos conceitos mais básicos do clássico pacman, como: mapa, animação, deslocamento e detector de colisões.

Integrando o PHP com Elasticsearch no desenvolvimento de um sistema de busca

Projeto de criação de um sistema de busca usando o framework Symfony e Elasticsearch. A integração com Kibana também é feito de modo remoto com um raspberrypi.

Criando um sistema de integração contínua (CI/CD)

Fazendo a integração contínua de Jenkins, Sonatype Nexus, Sonatype, JUnit e Gradle para automatizar processos repetitivos. Prática bastante usada em tecnologias de DevOps.

Veja também

A manutenção de softwares é o maior pesadelo de um programador quando o código parece um campo minado

Existe muitos programadores que escrevem algoritmos mal planejados. Essa falta de planejamento dificulta a manutenção do aplicativo e aumenta a probabilidade de novos bugs.

Os bancos estão sendo substituídos pelos robôs em transações online

As criptomoedas mudaram totalmente o modo das pessoas pensarem. Usar robôs para autentificar transações online, custa muito menos comparado com os bancos em relação às taxas...

PPM Product Portfolio Management

Em português, gestão de portofólio de produto. É uma estratégia de análise utilizada para a distribuição de recursos para um produto ou serviço.

Princípio da inversão de dependências - Dependency Inversion Principle

Ao ser aplicado permite que os detalhes passem a depender de abstrações, respeitando a direção da regra de dependências.

Algoritmo de chave simétrica

O algoritmo de criptografia simétrica utiliza a mesma chave para encriptar e desincriptar dados enviados através da internet.

Internet profunda (Deep web)

Camada da internet onde sistemas de busca convencionais não conseguem acessar por diversos motivos, deixando de indexar o conteúdo.