El Sistema de Nombres de Dominio (DNS)

Nota del autor

Este artículo fue inicialmente publicado en el blog de BQ, mibqyyo, y se encontraba aquí enlazado, pero actualmente ya no se encuentra disponible y, para que no desaparezca, reproduzco aquí el contenido completo.

Ahora que estamos tan acostumbrados a estar siempre conectados a internet, a través de los smartphones y tablets, se te pueden plantear ciertas preguntas sobre qué es lo que está ocurriendo realmente detrás de toda esa tecnología. Hoy te voy a hablar acerca del sistema de nombres de dominio.

Si recuerdas, en un artículo anterior te hablé acerca de las direcciones IP, un elemento clave en el funcionamiento de internet. En él te expliqué que cada dispositivo en una red, como internet, tiene una dirección única mediante la cual puede ser identificado. Estas direcciones IP tienen la forma 213.27.145.187, y se pueden corresponder, por ejemplo, con un servidor en internet que ofrezca un servicio web, como puede ser un blog. Como podrás apreciar no tiene una forma especialmente amigable ni, desde luego, fácil de recordar. La idea de navegar por internet recordando las direcciones IP de cada sitio que desees visitar no resulta muy atractiva.

Para facilitar esta tarea se creó el sistema de nombres de dominio, más conocido por sus siglas en inglés, DNS (Domain Name System). La idea fundamental de este sistema consiste en crear unos registros donde se almacenen las direcciones IP y sus correspondientes nombres de dominio, mucho más fáciles de recordar. Además, esta capa de abstracción permite que cualquier servicio de la red pueda cambiar su ubicación geográfica (que está determinada por su IP) tan sólo cambiando su asignación en ese registro.

Internet está organizada en espacios de nombres, que no es más que un conjunto de nombres en el cual todos son únicos. Y este espacio de nombres tiene una estructura jerárquica en árbol y se divide en dominios de distintos niveles. El dominio raíz se denomina «.» y desde él parten todos los dominios. Sus hijos son los dominios de nivel superior, y son los conocidos «com», «es», «net», «org», etc. De estos parten a su vez los dominios de segundo nivel, que serán palabras que se pueden registrar libremente si se encuentran disponibles. A partir de ese nivel pueden nacer registros o más subdominios, que son gestionados por cualquiera que posea su dominio de segundo nivel.

Imagina, por ejemplo, la web www.midominio.com. Su nombre de dominio está formado por el dominio de primer nivel «com», el dominio de segundo nivel «midominio» (que estaría registrado a nombre del propietario de esa web) y, por último, por el registro www, que en este caso haría referencia al servicio web (www o world wide web). Te habrás fijado que no he puesto el «.» al final, el dominio raíz. Esto es así porque no es necesario incluirlo, pues los navegadores lo hacen automáticamente, ya que es común para todas las direcciones. Pero si lo pusieras en la barra de direcciones de un navegador funcionaría igualmente.

Se pueden anidar, también, varios subdominios, obteniendo direcciones como www.misubdominio.midominio.com. Caso aparte son los dominios de tercer nivel, que son otro tipo reservado para crear nombres de dominio de la forma midominio.com.es.

¿Y dónde se almacena esta información? Pues se almacena de forma distribuida y jerárquica en servidores por todo el mundo. Cada servidor (o grupo de servidores) almacena la información correspondiente a su zona de autoridad. Los principales son los conocidos como servidores raíz o root servers, que son los que conocen dónde están los servidores de nombres autoritativos (authoritative servers) para los dominios de primer nivel. Los servidores de nombres autoritativos son aquellos que poseen la información relativa a ese nombre de dominio, por lo que es el mejor lugar para ir a buscar esa información. Actualmente existen 13 servidores raíz en todo el mundo (aunque en realidad cada uno es un conjunto de servidores para evitar pérdidas del servicio y abarcar toda la demanda), cada uno denominado con una letra de la A a la M (p.e. «a.root-servers.net»). Ellos forman los pilares de Internet y por eso en muchas ocasiones son víctimas de ataques informáticos.

A partir de los servidores raíz se obtiene la dirección IP del servidor de nombres de los dominios de segundo nivel, que, a su vez, nos proporcionará la dirección IP de sus registros o subdominios si los hubiera. Para la resolución total de un nombre de dominio se utiliza, pues, una resolución recursiva.

Como se realizan infinidad de peticiones DNS y esto podría colapsar determinados servidores o ralentizar el servicio se utiliza el caché DNS. Éste consiste en que los servidores de nombres pueden almacenar información acerca de zonas de las que no son autoritativos, pero sobre las cuales se les ha preguntado ya antes. Así se aligera mucho el tiempo de respuesta pues no es necesario realizar tantas peticiones de resolución. Como en ocasiones puede suponer que los datos cacheados se encuentren desactualizados, esta información debe actualizarse cada cierto tiempo desde sus servidores autoritativos.

Tu PC, tu smartphone o tu tablet disponen de un cliente DNS, un programa que se encarga de realizar estas peticiones de resolución de nombres. Lo habitual es que esta primera consulta vaya dirigida hacia el servidor DNS de tu proveedor de internet (ISP, Internet Service Provider), el cual será el encargado de responder a estas peticiones si tiene la respuesta en caché, o intentar encontrar su servidor autoritativo de manera recursiva.

Veamos un caso práctico que ilustre todo lo anterior. Cuando tú accedes a mibqyyo, en realidad lo que está sucediendo es:

  1. Tu PC necesita saber la dirección IP de mibqyyo.com. Por ello consulta el servidor DNS de tu proveedor de internet.
  2. Si ese servidor no dispone de la información tendrá que localizar al servidor que tenga la información del dominio de primer nivel que estamos consultando, en este caso “com”. Esto lo puede hacer fácilmente mediante los root servers.
  3. Recibe la respuesta.
  4. Conociendo la IP del servidor de nombres de la zona “com” ya le puede preguntar quién es el servidor autoritativo del dominio de segundo nivel que nos interesa, es decir, mibqyyo.
  5. Recibe la respuesta.
  6. Conociendo la IP del servidor de nombres de la zona “mibqyyo.com” ya le puede preguntar cuál es la IP del registro “www”.
  7. Recibe la respuesta.
  8. Una vez obtenida la respuesta final el servidor DNS de tu ISP reenvía la respuesta a tu PC.
  9. Una vez que ya tenemos la dirección IP de “www.mibqyyo.com” ya podemos acceder a la web.

Además de proporcionar la IP correspondiente a un nombre de dominio, el servicio DNS tiene otras funciones. Una de las más importantes es identificar los servidores de correo de un determinado dominio. La  forma de funcionamiento sigue siendo la misma que ya hemos comentado, la única diferencia consiste en el tipo de registro que se consulta al servidor.

Los registros DNS pueden ser de diferentes tipos, según lo que quieran almacenar. Hasta ahora tan sólo te he hablado de traducciones de nombres a IP, estos son los llamados registros Host o, simplemente, A (del inglés, Address). Pero existen otros, como los registros MX (que procede de Mail Exchange), que son los que indican el nombre del servidor encargado del correo electrónico de un dominio. No especifican su IP, pues ese mismo servidor debe disponer también de su registro A correspondiente.

Otro tipo importante son los registros NS (del inglés, Name Server), de los que, sin saberlo, ya te he hablado. Estos se encargan de identificar los servidores de nombres del dominio, a los que se les debe preguntar para resolver peticiones sobre ese dominio.

Otros tipos de registros importantes son los registros SOA (Start Of Authority), que indican que un servidor es autoritativo para una zona, y los registros CNAME (Canonical Name), que sirven para enlazar un alias con un nombre de dominio. Así no hay que introducir varios registros A para distintos servicios que apunten a la misma IP.

Existen otros tipos registro opcionales, como los TXT y SPF, pero que aportan ciertas funcionalidades. En el caso de los registros SPF (Sender Policy Framework) se utilizan como protección contra las falsificaciones de correo electrónico, especificando qué servidor de correo es el que tiene derecho a enviar para el dominio en el que está definido. Esto es de utilidad sólo si el servidor de correos del destinatario comprueba los registros SPF del dominio remitente para comprobar la dirección IP y ver si el servidor de correo es quién dice ser.

Como ves, las cosas son complejas para que a ti puedan resultarte simples y amigables. La próxima vez que navegues en internet piensa en la cantidad de cosas que están sucediendo desde que pulsas el botón enter.