O que é DNS (Domain Name System)?
Introdução
Você certamente sabe que a internet possui
uma infinidade de sites. Para acessá-los, você normalmente digita um endereço
no campo correspondente do seu navegador, por exemplo, www.google.com.br, www.youtube.com ou www.tecnosolution.blogspot.com Mas, você tem ideia
de como o computador consegue localizar estes sites, independente de onde
estejam hospedados? É neste ponto que "entra em cena" o trabalho de
servidores do tipo DNS (Domain Name System). Neste artigo, você
saberá o que é isso, entenderá como o DNS funciona e conhecerá conceitos
relacionados, como DNSSEC.
Nomes de domínio
Todo site ou serviço na internet precisa de
um endereço
IP (seja
ela IPv4 ou IPv6).
Com este recurso, é possível localizar o servidor (ou o conjunto de servidores)
que hospeda o site e, assim, acessar as suas páginas. Na ocasião de escrita
deste artigo, o IP do tecnosolution era
74.125.45.132.
Pois bem. Tente decorar este número.
Decorou? Parabéns! Agora, aguarde alguns minutos e tente se lembrar novamente
deste endereço IP. Difícil, né? Agora, imagine ter que se lembrar dos IPs de
todos os sites que você acessa diariamente, como Facebook, Twitter, e-mail,
portais de notícias, etc. Pois é, praticamente impossível e nada prático, não é
mesmo?
É basicamente por isso que utilizamos nomes
de domínios para acessar os sites da internet. Com isso, o usuário não precisa
saber, por exemplo, o endereço IP do tecnosolution para acessá-lo, basta saber
o seu domínio, no caso, www.tecnosolution.blogspot.com. Trata-se de um esquema
bastante prático, afinal, decorar nomes é muito mais fácil do que guardar
sequências numéricas. Além disso, mesmo que você não se lembre de um nome com
exatidão, poderá digitá-lo em um mecanismo de busca e este o ajudará a
encontrá-lo.
A questão é que, apesar do uso de domínios,
os sites ainda precisam dos endereços IP, afinal, os nomes foram criados para
facilitar a compreensão humana, não a dos computadores. E cabe ao DNS o
trabalho de relacionar um domínio aos IPs.
Servidores de DNS (Domain Name System)
Os serviços de DNS (Domain Name
System - Sistema de Nomes de Domínios) da internet são, em poucas
palavras, grandes bancos de dados espalhados em servidores localizados em
várias partes mundo. Quando você digita um endereço em seu navegador,
como www.tecnosolution.blogspot.com, seu computador solicita aos
servidores de DNS de seu provedor de internet (ou outros que você tenha especificado)
que encontre o endereço IP associado ao referido domínio. Caso estes servidores
não tenham esta informação, eles se comunicam com outros que possam ter.
Ajuda neste trabalho o fato de os domínios
serem organizados hierarquicamente. Primeiramente temos o servidor raiz (root
server), que pode ser entendido como o principal serviço de DNS e é
representado por um ponto no final do endereço, como mostra o seguinte exemplo:
Repare que se você digitar o endereço
exatamente como está acima - com ponto no final - em seu navegador, o programa
encontrará o site normalmente. No entanto, não é necessário incluir este ponto,
já que os servidores envolvidos já sabem de sua existência.
A internet conta (pelo menos até a data de
publicação deste texto) com treze servidores raiz, sendo que dez se localizam
nos Estados Unidos, dois na Europa (Estocolmo e Amsterdam) e um na Ásia
(Tóquio). Quando uma falha, os demais conseguem manter o funcionamento da rede
sem maiores complicações.
A hierarquia é seguida com domínios que
conhecemos bastante, como .com, .net, .org, .info, .edu, .br, .me e várias
outros. Estas são chamadas de gTLDs (Generic Top Level Domains - algo como
Domínios Genéricos de Primeiro Nível).
Há também terminações orientadas a países,
chamadas de ccTLDs (Country Code Top Level Domains - algo como Código de
País para Domínios de Primeiro Nível). Por exemplo: .br para o Brasil, .ar para
a Argentina, .fr para a França e assim por diante. Há combinações também, como
.com.br e .blog.br.
Depois, aparecem os nomes que empresas e pessoas podem registrar com estes domínios, como a palavra tecnosolution ou google em google.com.br.
Com a hierarquia, descobrir qual IP e,
consequentemente, qual servidor está associado a um domínio - processo chamado
de resolução de nome - fica mais fácil, já que este modo de
funcionamento permite um esquema de trabalho distribuído, onde cada nível da
hierarquia conta com serviços específicos de DNS.
Para entender melhor, veja este exemplo:
suponha que você queira visitar o blog www.tecnosolution.blogspot.com Para
isso, o serviço de DNS do seu provedor (ou outro que você especificar) tentará
descobrir se sabe como localizar o referido blog. Caso negativo, primeiramente
consultará o servidor raiz. Este, por sua vez, indicará o servidor de DNS da
terminação .com, que continuará o processo até chegar ao servidor que responde
pelo domínio tecnosolution.blogspot.com, que finalmente informará o IP
associado, ou seja, em qual servidor está o blog em questão.
Os servidores de DNS que respondem por
determinados domínios são chamados de autoritativos. Já os serviços
responsáveis por receber consultas de DNS de máquinas clientes e tentar obter
respostas com servidores externos são chamado de recursivos.
Perceba, na ilustração, o esquema de
distribuição: servidores de DNS apontam para o outro, até que o destino seja
encontrado. No caso do servidor raiz, este possui meramente uma relação dos
serviços de DNS responsáveis pelos domínios gTLD e ccTLD, sendo que estes se
encarregam de dar sequência ao procedimento.
Os domínios gTLD e ccTLD são administrados
por entidades diferentes, que respondem também por seus servidores de DNS. Por
exemplo: a terminação .br é controlada pela Registro.br.
Cache de DNS
Suponha que você tenha visitado um site que
nunca tenha sido resolvido pelo serviço de DNS de seu provedor, de forma que
este tenha que consultar outros servidores de DNS (por meio do já mencionado
esquema de pesquisa hierárquica). Para evitar que essa pesquisa tenha que ser
feita novamente quando outro usuário do provedor tentar acessar o mesmo site, o
serviço de DNS pode guardar a informação da primeira consulta por algum tempo.
Assim, em outra solicitação igual, o servidor já saberá qual o IP associado ao
site em questão. Este procedimento é conhecido como cache de DNS.
No início, o cache de DNS somente guardava dados
de consultas positivas, isto é, de quando um site é encontrado. No entanto, os
serviços de DNS também passaram a guardar resultados negativos, de sites não
existentes ou não localizados, como quando digitamos um endereço errado, por
exemplo.
As informações do cache são armazenadas por
um determinado período de tempo por meio de um parâmetro conhecido como TTL
(Time to Live). Este é utilizada para evitar que as informações gravadas se
tornem desatualizadas. O período de tempo do TTL varia conforme as configurações
determinadas para o servidor.
Graças a isso, o trabalho dos serviços de
DNS dos servidores raiz e dos demais subsequentes é minimizado.
DNSSEC
Neste ponto, você já sabe que os servidores
de DNS têm papel importantíssimo na internet. O problema é que o DNS também
pode ser "vítima" de ações maliciosas.
Imagine, por exemplo, que um indivíduo com
grande conhecimento no assunto elaborou um esquema para conseguir capturar
solicitações de resolução de nomes de clientes de um determinado provedor. Ao ter
sucesso com isso, ele pode tentar direcionar um endereço falso no lugar de um
site que um usuário queira visitar. Perceba o risco: se o usuário não perceber
que foi direcionado para uma página falsa, poderá fornecer dados sigilosos,
como número de cartão de crédito.
Para evitar problemas como estes é que foi
criado o DNSSEC (DNS Security Extensions), que consiste em uma
especificação que adiciona recursos de segurança ao DNS.
O DNSSEC considera, essencialmente, os
aspectos de autenticidade e integridade dos procedimentos envolvendo DNS. Mas,
ao contrário do que algumas pessoas pensam inicialmente, não pode prover
proteção contra invasões ou ataques DoS,
por exemplo, embora possa ajudar, de certa forma.
Basicamente, o DNSSEC utiliza um esquema
que envolve chaves públicas e privadas, que é explicado neste artigo sobre
assinaturas e certificados digitais. Com isso, é possível ter
certeza de que os servidores corretos estão respondendo às pesquisas de DNS.
A implementação do DNSSEC deve ser feita
pelas entidades responsáveis pela administração dos domínios, motivo pelo qual
este recurso ainda não é utilizado de maneira plena. Felizmente, em relação ao
Brasil, o país foi um dos primeiros a lidar com isso ao implementar o DNS
em endereços .br, sendo que, na época da publicação deste texto, esta proteção
era obrigatória nos domínios .jus.br e .b.br (terminação
destinada a bancos).
Para saber mais sobre DNSSEC em domínios
brasileiros, visite a página registro.br/suporte/tutoriais/dnssec.html.
Finalizando
A utilização do DNS não se limita à
internet. Este recurso pode (e é) utilizado em redes locais ou extranets, por
exemplo. Sua implementação pode ser feita em praticamente qualquer sistema
operacional, sendo muito usual nas plataformas baseadas em Unix e no Windows. A
ferramenta mais conhecida para DNS é o BIND, que é mantido pela Internet Systems Consortium.
Isso deixa claro que o assunto é mais
complexo, por isso, você pode consultar os seguintes links, caso queira saber
mais sobre DNS (links em inglês):
Seja o primeiro a comentar
Postar um comentário