DNS – El Sistema de Nombres de Dominio

La última capa del sistema de referencia TCP corresponde con la capa de aplicaciones, siendo una de ellas y casi la más importante, la aplicación DNS que se encarga de la asignación de nombres dentro de internet.

Es claro que ninguna de las capas anteriores: física, red, transporte y enlace; hacen ningún tipo de trabajo real para los usuarios y, es más, es probable que ninguno de nosotros repare en su existencia en lo cotidiano más allá de conectar un cable a un switch o a un router, quedando en la inopia total el resto de los protocolos y procesos que envuelven el envío de paquetes encapsulados (¿qué será eso del encapsulamiento?).

Por tanto, me parece importante hacer una breve referencia a la capa de aplicaciones del TCP y, en concreto, a servicio DNS (que algunos denominan protocolo).

Comenzamos.

En teoría, los programas pueden hacer referencia a hosts, buzones de correo y otros recursos a través de sus direcciones de red (por ejemplo IP) pero parece claro que a las personas nos cuesta bastante recordar largas series de números. Además, el envío de un correo a, por ejemplo, houses@184.154.178.124 puede llevar a que éste se pierda si la organización InformaticaCoslada.com cambia a una máquina diferente que, además, tendría una IP también diferente.

Para evitar este tipo de problemas se introdujeron los nombres ASCII con el fin de separar los nombres de máquina de las direcciones de 32bits de estas máquinas y, así, la dirección correcta para enviar al mismo usuario de antes quedaría similar a houses@informaticacoslada.com (no envíes ahí, no hay nadie abriendo ese buzón ;)). El problema es que la red sólo entiende de direcciones numéricas con lo que se requieren mecanismos que cambien estas cadenas ASCII a direcciones de red.

Orígenes

En los tiempos remotos de la ARPANET,  sólo había un archivo hosts.txt en el que se listaban todos los hosts y sus direcciones IP. Por las noches, los hosts obtenían este archivo del sitio en el que se mantenía actualizado.

Este sistema de un sólo archivo quedó obsoleto con el aumento salvaje del número de hosts. Para solucionar el problema del crecimiento del fichero y buscando la descentralización en su mantenimiento para optimizar y evitar conflictos se creó el DNS: Domain Name System o Sistema de Nombres de Dominio.

Esencia

La base del sistema radica en la invención de un esquema de nombres jerárquico basado en dominios y un sistema de base de datos distribuido que implemente el sistema. Así, el DNS se utiliza para relacionar los nombres de host y destinos de correo electrónico con las direcciones IP además de otros fines. La norma que define el DNS es RFC1034 y RFC1035

Resumen

La forma como se usa el DNS es la siguiente: Para relacionar un nombre con una dirección IP, un programa llama a un procedimiento de biblioteca que identifica y devuelve el nombre correspondiente con esa dirección numérica. El “resolvedor” envía un paquete UDP a un servidor DNS local que, después, busca el nombre y devuelve la dirección IP al “resolvedor” que, a su vez, devuelve al solicitante. Una vez obtenida la IP, el programa establece la conexión TCP con el destino o le envía paquetes UDP.

Para aclarar un poco el concepto, el servidor de nombres se encarga de convertir direcciones IP a nombres fácilmente memorizables además de mantener actualizadas las bases de datos de modo que, si una organización muda el sistema a otro hosts, los usuarios puedan seguir enviando y recibiendo correos de esa organización sin tener que realizar ningún cambio.

——————-

Queda pendiente hablar del espacio de nombres del DNS, la jerarquía, los 200 dominios de nivel superior, categorías, la ISO 3166, SOA, A, MX, NS, CNAME, PTR, HINFO y TXT. Pero será en otro artículo.

Bibliografía:

Introduction to Computer Networks
by Arvind Krishnamurthy, David Wetherall, John Zahorjan. Universidad de Washington

Artículo escrito por: David Casas con licencia Creative Commons, como siempre 🙂