¿Cómo funciona el protocolo DNS?

¿Qué hace sistema DNS y en qué nos ayuda?

Para los usuarios de internet es bastante cómodo escribir en la barra del navegador web y que automáticamente aparezca la página web que estamos solicitando en nuestra pantalla. Pero ¿te has preguntado alguna vez cómo sabe tu navegador web que cuando tecleas “www.facebook.com” tiene que conectarse a el servidor web de facebook? ¿Te has parado a pensar cómo a la hora de enviar un email a desde tu dirección @gmail.com tu aplicación del móvil sabe que tiene que loguearse en el servidor SMTP de google y enviar el email desde ahí? Bien, pues es gracias al sistema DNS, que básicamente se encarga de transformar un nombre de dominio a una dirección IP.

Cuando solicitas una dirección web, esa solicitud pasa por un servidor DNS (Domain Name Server/Service) y le dice:

– ¿Hola señor DNS, necesito subir a facebook esta foto del plato “combinao” que el usuario se va a comer,  para que todos le den muchos likes y tal… me podría indicar a dónde tengo que ir para llegar a facebook.com por favor?

Y el DNS le contesta:

-Claro! Para ir a facebook.com tienes que dirigirte a 31.13.83.36

El resto ya os lo podéis imaginar, nos conectamos a la ip de facebook y este nos sirve la página web.

 

¿Cómo surge el sistema DNS?

Sabemos que cada dispositivo conectado a internet, tiene una dirección IP asignada. Las direcciones IP estan formadas por un numero en binario de 32 bits que se representa en decimal separando cada byte con un punto:

11000000 10101000 00000001 11111111 => 192.168.1.255

Estas direcciones (IPv4) son capaces de gestionar 4,294,967,296 dispositivos

Las direcciones IPv6 son direcciones ip que tienen 128 bits y pueden gestionar muchísimas más:

340,282,366,920,938,463,463,374,607,431,768,211,456 dispositivos

Cuando internet era una jovenzuela, los pcs tenían una lista de ips con todos los ordenadores de la red (hosts.txt) pero seguía siendo un &%$#@%$ tener que consultar esa lista cada vez que nos conectabamos a una web o servicio externo. De ahí surgió la necesidad de un sistema que convirtiese nombres (palabras fáciles de memorizar) en ips (dificiles de memorizar) y que además se autoactualizase, para que si por ejemplo google cambiase sus servidores de país, el nombre google.com se siguiese refiriendo al servidor de google, aunque la ip fuera distinta.

¿Qué arquitectura tiene un sistema DNS?

Visto como lo estoy expreando, parece un proceso supersencillo ¿no? Te conectas a un servidor DNS te devuelve la IP del dominio y navegas o envías el email a través del server de correo o subes un archivo a un FTP etc…

Pero la realidad es que existen millones de nombres de dominio (continuamente cambiantes), millones de ips y millones de usuarios a la vez… Lo que supone un montón de millones de peticiones DNS a un servidor y esto generaría un montón de tráfico hasta la caida del server.

Para solucionar este problema, cada cliente podría guardar los resultados de sus peticiones y así no tener que realizar peticiones al server cada vez que tiene que traducir un nombre, aligerando un poco la carga del servidor con una caché de direcciones DNS en local. Pero esta solución no es suficiente en cuanto a carga de trabajo del servidor.

Arquitectura DNS

Como veréis en primer lugar existe un dominio raíz en lo alto de la jerarquía. Actualmente existen 14 DNS raiz o rootservers en el mundo:

Mapa de rootservers DNS

Los rootservers DNStienen una tabla con listas de dominios TLD (Top Level Domain, .com .es .gov .org….) asociados a direcciones IP.  Estas direcciones IP apuntan a otros servidores DNS que se encuentran por debajo en la jerarquía.

Para cada uno de estos servidores DNS, existen a su vez tablas de nombres y direcciones IP que apuntan ya a máquinas finales y no a servidores DNS.

Leave a Reply