El sistema de nombres de dominio (Domain Name System o DNS, por sus siglas en inglés) es un sistema de nomenclatura jerárquico descentralizado para dispositivos conectados a redes IP como Internet o una red privada. Este sistema asocia información variada con nombres de dominio asignados a cada uno de los participantes. Su función más importante es la resolución de nombres, «traducir» nombres inteligibles para las personas en identificadores binarios asociados con los equipos conectados a la red con el propósito de poder localizar y direccionar estos equipos mundialmente.

El servidor DNS utiliza una base de datos distribuida y jerárquica que almacena información asociada a nombres de dominio en redes como Internet. Aunque como base de datos el DNS es capaz de asociar diferentes tipos de información a cada nombre, los usos más comunes son la asignación de nombres de dominio a direcciones IP y la localización de los servidores de correo electrónico de cada dominio.

La asignación de nombres a direcciones IP es ciertamente la función más conocida de los protocolos DNS. Por ejemplo, si la dirección IP del sitio Google es 216.58.210.163, la mayoría de la gente llega a este equipo especificando www.google.com y no la dirección IP. Además de ser más fácil de recordar, el nombre es más fiable. La dirección numérica podría cambiar por muchas razones, sin que tenga que cambiar el nombre del sitio web. Incluso, en el caso de que una página web utilice una red de distribución de contenidos (Content delivery network o CDN, por sus siglas en inglés) por medio del DNS el usuario recibirá la dirección IP del servidor más cercano según su localización geográfica (cada CDN a su vez tiene sus propios servidores DNS).

Historia Principalmente, el DNS nació de la necesidad de recordar fácilmente los nombres de todos los servidores conectados a Internet. En un inicio, SRI (ahora SRI International) alojaba un archivo llamado HOSTS que contenía todos los nombres de dominio conocidos.

El crecimiento explosivo de la red causó que el sistema de nombres centralizado en el archivo hosts no resultara práctico y en noviembre de 1983 Jon Postel publica el planeamiento en el RFC 881 y luego junto a Paul Mockapetris publican los RFC 882 y RFC 883 ese mismo año. En octubre de 1984 y tras largas discusiones emiten el RFC 920, definiendo lo que hoy en día ha evolucionado hacia el DNS moderno (estos RFC 882 y 883 fueron reemplazados en 1987 con los RFC 1034 y RFC 1035).

De no existir los servidores DNS los usuarios tendrían que escribir la dirección IP del sitio web en lugar de escribir la URL de este lo cual generaría confusiones y la navegación en internet se tornaría muy complicada para los usuarios.

En esta etapa, la mejor forma de proveer «continuidad» era tener múltiples servidores contestando múltiples consultas. Un servidor era el maestro y los demás eran esclavos. Cada uno de los esclavos debía revisar con el maestro periódicamente que los datos no hubieran cambiado.

Unos 10 años después, se hicieron algunos ajustes mayores al protocolo DNS. Esto era una forma más dinámica de mantener los servidores al día, utilizando NOTIFY (en español notificar) y las transferencias incrementales de zona (IXFR).

NOTIFY fue un cambio clave. En vez de esperar a que un esclavo revisara, el maestro podía mandar mensajes NOTIFY a los esclavos, instándolos a adquirir los nuevos datos. Por su parte, IXFR significó un cambio en la forma en que los datos se comunicaban. Si cambiaba solamente uno de entre cientos de registros, la especificación original enviaría cientos de mensajes. IXFR cambió el sistema, permitiendo que solamente se enviasen los registros que cambiaron.

La siguiente evolución de DNS vino cuando se definieron cambios dinámicos en RFC 2136. Esto permitió que los administradores de los servidores pudieran hacer cambios en los registros de mejor forma. Más tarde, en el RFC 2671 se definieron mecanismos de extensión de DNS (EDNS) que modernizó aún más el sistema.

El interés por expandir los posibles nombres de los dominios para incluir caracteres de otros idiomas se reflejó en los nombres de dominio internacionalizados como fueron definidos en los RFC 5890 y RFC 5891 en 2010.

Componentes Para la operación práctica del sistema DNS se utilizan tres componentes principales:

Clientes fase 1 Un programa cliente DNS que se ejecuta en la computadora del usuario y que genera peticiones DNS de resolución de nombres a un servidor DNS (Por ejemplo: ¿Qué dirección IP corresponde a nombre.dominio?) Servidores DNS Que contestan las peticiones de los clientes. Los servidores recursivos tienen la capacidad de reenviar la petición a otro servidor si no disponen de la dirección solicitada. Zonas de autoridad Es una parte del espacio de nombre de dominios sobre la que es responsable un servidor DNS, que puede tener autoridad sobre varias zonas. (Por ejemplo: subdominio.Wikipedia.ORG, subdominio.COM, etc.)

Entendiendo las partes de un nombre de dominio Un nombre de dominio usualmente consiste en dos o más partes (técnicamente «etiquetas»), separadas por puntos cuando se las escribe en forma de texto. Por ejemplo, www.ejemplo.com o es.wikipedia.org

A la etiqueta ubicada más a la derecha se le llama «dominio de nivel superior» (en inglés top level domain). Como «com» en www.ejemplo.com u «org» en es.wikipedia.org Cada etiqueta a la izquierda especifica una subdivisión o «subdominio». Nótese que «subdominio» expresa dependencia relativa, no dependencia absoluta. En teoría, esta subdivisión puede tener hasta 127 niveles, y cada etiqueta puede contener hasta 63 caracteres, pero restringidos a que la longitud total del nombre del dominio no exceda los 255 caracteres, aunque en la práctica los dominios son casi siempre mucho más cortos. Finalmente, la parte más a la izquierda del dominio suele expresar el nombre de la máquina (en inglés hostname). El resto del nombre de dominio simplemente especifica la manera de crear una ruta lógica a la información requerida. Por ejemplo, el dominio es.wikipedia.org tendría el nombre de la máquina «es», aunque en este caso no se refiere a una máquina física en particular.

El DNS consiste en un conjunto jerárquico de servidores DNS. Cada dominio o subdominio tiene una o más «zonas de autoridad» que publican la información acerca del dominio y los nombres de servicios de cualquier dominio incluido. La jerarquía de las zonas de autoridad coincide con la jerarquía de los dominios. Al inicio de esa jerarquía se encuentra los servidores raíz: los servidores que responden cuando se busca resolver un dominio de primer y segundo nivel.

DNS en el mundo real Los usuarios generalmente no se comunican directamente con el servidor DNS: la resolución de nombres se hace de forma transparente por las aplicaciones del cliente (por ejemplo, navegadores, clientes de correo y otras aplicaciones que usan Internet). Al realizar una petición que requiere una búsqueda de DNS, la petición se envía al servidor DNS local del sistema operativo. El sistema operativo, antes de establecer alguna comunicación, comprueba si la respuesta se encuentra en la memoria caché. En el caso de que no se encuentre, la petición se enviará a uno o más servidores DNS, el usuario puede utilizar los servidores propios de su ISP, puede usar un servicio gratuito de resolución de dominios o contratar un servicio avanzado de pago que por lo general son servicios contratados por empresas por su rapidez y la seguridad que estos ofrecen.

La mayoría de usuarios domésticos utilizan como servidor DNS el proporcionado por el proveedor de servicios de Internet salvo quienes personalizan sus equipos o enrutadores para servidores públicos determinados. La dirección de estos servidores puede ser configurada de forma manual o automática mediante DHCP (IP dinámica). En otros casos, los administradores de red tienen configurados sus propios servidores DNS.

Archivo:DNS_en_el_mundo_real.svg

En cualquier caso, los servidores DNS que reciben la petición, buscan en primer lugar si disponen de la respuesta en la memoria caché. Si es así, sirven la respuesta; en caso contrario, iniciarían la búsqueda de manera recursiva. Una vez encontrada la respuesta, el servidor DNS guardará el resultado en su memoria caché para futuros usos y devuelve el resultado.

Típicamente el protocolo DNS transporta las peticiones y respuestas entre cliente y servidor usando el protocolo UDP, ya que es mucho más rápido. Las ocasiones donde se usa el protocolo TCP son: cuando se necesitan transportar respuestas mayores de 512 bytes de longitud (por ejemplo al usar DNSSEC) y cuando se intercambia información entre servidores (por ejemplo al hacer una transferencia de zona), por razones de fiabilidad.

Jerarquía DNS thumb|400px|Árbol DNS

El espacio de nombres de dominio tiene una estructura arborescente. Las hojas y los nodos del árbol se utilizan como etiquetas de los medios. Un nombre de dominio completo de un objeto consiste en la concatenación de todas las etiquetas de un camino. Las etiquetas son cadenas alfanuméricas (con «-» como único símbolo permitido), deben contar con al menos un carácter y un máximo de 63 caracteres de longitud, y deberá comenzar con una letra (y no con «-»).Ver RFC 1035, sección "2.3.1. Preferencia nombre de la sintaxis" Las etiquetas individuales están separadas por puntos. Un nombre de dominio termina con un punto (aunque este último punto generalmente se omite, ya que es puramente formal). Un nombre de dominio correctamente formado (FQDN, por sus siglas en inglés), es por ejemplo «www.ejemplo.com.» (incluyendo el punto al final).

Un nombre de dominio debe incluir todos los puntos y tiene una longitud máxima de 255 caracteres.

Un nombre de dominio se escribe siempre de derecha a izquierda. El punto en el extremo derecho de un nombre de dominio separa la etiqueta raíz de la jerarquía. Este primer nivel es también conocido como dominio de nivel superior (TLD, por sus siglas en inglés).

Los objetos de un dominio DNS (por ejemplo, el nombre del equipo) se registran en un archivo de zona, ubicado en uno o más servidores de nombres.

Tipos de servidores DNS Estos son los tipos de servidores de acuerdo a su función: Primarios o maestros guardan los datos de un espacio de nombres en sus ficheros. Secundarios o esclavos obtienen los datos de los servidores primarios a través de una transferencia de zona. Locales o caché funcionan con el mismo software, pero no contienen la base de datos para la resolución de nombres. Cuando se les realiza una consulta, estos a su vez consultan a los servidores DNS correspondientes, almacenando la respuesta en su base de datos para agilizar la repetición de estas peticiones en el futuro continuo o libre.

Tipos de resolución de nombres de dominio Un servidor DNS puede resolver un nombre de dominio de manera «recursiva» o «iterativa». En una consulta «recursiva», un cliente solicita a un servidor DNS que obtenga por sí mismo la respuesta completa (es decir, dado el dominio mi.dominio.com, el cliente espera recibir la dirección IP correspondiente). Por otro lado, dada una consulta «iterativa», el servidor DNS no otorga una respuesta completa: para el caso de mi.dominio.com, el primer servidor al que se le realiza la consulta (un servidor raíz), retorna las direcciones IP de los servidores de nivel superior (TDL) responsables del dominio .com. De este modo, el cliente ahora debe realizar una nueva consulta a uno de estos servidores, el cual toma nota del sufijo .dominio.com y responde con la IP del servidor DNS correspondiente, por ejemplo dns.dominio.com. Finalmente, el cliente envía una nueva consulta a dns.dominio.com para obtener la dirección IP de mi.dominio.com.