Domain Name System

O **Domain Name System**, siglas **DNS**, en galego **Sistema de Nomes de Dominios**, é unha base de datos distribuída e xerárquica que almacena información asociada a nome de dominio en redes como Internet. Aínda que como base de datos o DNS é capaz de asociar distintos tipos de información a cada nome, os usos máis comúns son a asignación de nomes de dominio a enderezos IP e a localización dos servidores de correo electrónico de cada dominio.

A asignación de nomes a enderezos IP é a función máis coñecida dos protocolos DNS. Por exemplo, se o enderezo IP do sitio FTP de prox.ve é 200.64.128.4, a maioría das conexións chegarán a este equipo especificando ftp.prox.ve e non o enderezo IP. Ademais de ser máis fácil de recordar, o nome e máis fiable xa que o enderezo numérico pode cambiar por moitas razóns sen que teña que cambiar o nome.

O crecemento explosivo da rede causou que o sistema de nomes centralizado no arquivo HOSTS non resultara práctico e en 1983, Paul Mockapetris publicou os RFCs 882 e 883  definindo o que hoxe en día evolucionou ó DNS moderno. Estes RFCs quedaron obsoletos pola publicación en 1987 dos RFCs 1034 e 1035.

## Especificacións dos DNS 
### Compoñentes 
Para a operación práctica do sistema DNS utilízanse tres compoñentes principais: 
* Os **Clientes DNS** *(resolvers)*, un programa cliente DNS que se executa na computadora do usuario e que xera peticións DNS de resolución de nomes a un servidor DNS *(Por exemplo: Que enderezo IP corresponde a nome.dominio?);
* Os **Servidores DNS** *(name servers)*, que contestan as peticións dos clientes, os servidores recursivos teñen a capacidade de reenviar a petición a outro servidor se non dispoñen do enderezo solicitado.
* As **Zonas de autoridade**, porcións do espazo de nomes de dominio que almacenan os datos. Cada zona de autoridade abarca un dominio e posiblemente os seus subdominios, se estes últimos non son delegados a outras zonas de autoridade.

### Partes dun nome de dominio 
Un nome de dominio normalmente consiste en dúas ou máis partes (tecnicamente *etiquetas*), separadas por puntos cando se escriben en forma de texto. Por exemplo, www.mahomedalid.org ou es.Wikipedia.org
* Á etiqueta localizada máis á dereita chamaselle **dominio de nivel superior** (inglés **org en www.mahomedalid.org ou es.Wikipedia.org
* Cada etiqueta á esquerda especifica unha subdivisión ou **subdominio**. Nótese que "subdominio" expresa dependencia relativa, non dependencia absoluta. En teoría, esta subdivisión pode ter ata 127 niveis, e cada etiqueta conter ata 63 caracteres, pero restrinxido a que a lonxitude total do nome do dominio non supere os 255 caracteres, aínda que na práctica os dominios son case sempre moito máis curtos.
* Finalmente, a parte máis á esquerda do dominio normalmente expresa o nome da máquina (en inglés *hostname*). O resto do nome de dominio simplemente especifica a maneira de crear unha ruta lóxica á información requirida. Por exemplo, o dominio es.Wikipedia.org tería o nome da máquina "es", aínda que neste caso non se refire a unha máquina física en particular.

O DNS consiste nun conxunto xerárquico de **servidores DNS**. Cada dominio ou subdominio ten unha ou máis **zonas de autoridade** que publican a información acerca do dominio e os nomes de servizos de calquera dominio incluído. A xerarquía das zonas de autoridade coincide coa xerarquía dos dominios.Ao comezo desa xerarquía atópanse os **servidores raíz**: os servidores que responden cando se busca resolver un dominio de primeiro e segundo nivel.

### Tipos de servidores DNS 
* BIND
* PowerDNS 
* MaraDNS 
* djbdns 
* pdnsd
* MyDNS

### Tipos de resolución de nomes de dominio 
Existen dous tipos de consultas que un cliente pode facer a un servidor DNS:
* iterativa
* recursiva
*

Nas consultas recursivas o servidor repite o mesmo proceso básico (consultar a un servidor remoto e seguir calquera referencia) ata que obtén a resposta á pregunta.

As consultas iterativas, ou resolución iterativa, consisten na mellor resposta que o servidor de nomes poida dar. O servidor de nomes consulta os seus datos locais (incluíndo a súa caché) buscando os datos solicitados.

Cando existe máis dun servidor autoritario para unha zona, BIND utiliza o menor valor na métrica RTT (*round-trip time'', "tempo de ida e volta") para seleccionar o servidor. O RTT é unha medida para determinar canto tarda un servidor en responder unha consulta.

O proceso de resolución normal dase da seguinte maneira:

# O servidor A recibe unha consulta recursiva dende o resolver.
# O servidor A envía unha consulta iterativa a B.
# O servidor B refire a A outro servidor de nomes, incluíndo a C.
# O servidor A envía unha consulta iterativa a C.
# O servidor C refire a A outro servidor de nomes, incluíndo a D.
# O servidor A envía unha consulta iterativa a D.
# O servidor D responde.
# O servidor A devolve a resposta ó resolver.
# O resolver entrega a resposta ó programa que solicitou a información.

## Tipos de rexistros DNS 
* **A** = Address – (Enderezo) Este rexistro usase para traducir nomes de hosts a enderezos IP. 
* **CNAME** = Canonical Name – (Nome Canónico) Usase para crear nomes de hosts adicionais, ou alias, para os hosts dun dominio. 
* **NS** = Name Server – (Servidor de Nomes) Define a asociación que existe entre un nome de dominio e os servidores de nomes que almacenan a información de dito dominio. Cada dominio pódese asociar a unha cantidade calquera de servidores de nomes.
* **MX** = Mail Exchange – (Intercambiador de Correo) Define o lugar onde se aloxa o correo que recibe o dominio. 
* **PTR** = Pointer – (Indicador) Tamén coñecido como 'rexistro inverso', funciona á inversa do rexistro A, traducindo IPs en nomes de dominio.

## Notas 
## Véxase tamén 
### Outros artigos 
* Arquivo Hosts
* IDN