DNS (Domain Name System)
DNS o Domain Name System es un sistema de bases de datos distribuidos que permite la traducción de un nombre para dirección IP (Internet Protocol Address). Este sistema es parte fundamental de la infraestructura de Internet.
En el comienzo solo había un pequeño número de computadoras conectadas a la red y eso permitía tener un archivo con el nombre y la dirección IP de cada computadora. Pero incluso siendo pequeña la cantidad de computadoras, era más fácil memorizar nombres que direcciones IP. Ese archivo quedaba disponible en un sitio central para ser copiado por los administradores de los demás sitios.
Con el crecimiento de Internet y el consecuente aumento del número de computadoras conectadas, se hizo difícil mantener ese archivo con nombres y direcciones de todas las computadoras. La solución fue crear un sistema distribuido para la resolución de nombres para las direcciones IP.
En ese sistema hay una jerarquía de nombres de dominio y cada sitio solamente es responsable de mantener las informaciones de su dominio. Por eso se considera que es un sistema distribuido.
En esa jerarquía, cada parte del nombre, o sea, cada dominio es separado por un punto (.). La parte más a la izquierda es la más específica. Por ejemplo, en www.example.org, el nombre más a la izquierda representa un servidor (en general un servidor web) y es la parte más específica dentro del dominio example, que a su vez está dentro del dominio org (la parte menos específica de ese nombre).
Cada parte del nombre del dominio puede estar bajo la responsabilidad de una entidad diferente. O sea, la entidad responsable de la zona org no necesariamente es la responsable de la zona example.
Ese sistema DNS está compuesto básicamente por tres componentes: servidores autoridad, servidores recursivos y clientes (resolvers).
El cliente (resolver) es lo que se encuentra instalado en las computadoras con software TCP/IP. De manera general, son todos aquellos que se conectan a Internet.
El software cliente inicia una resolución DNS (en respuesta a la solicitud de otros softwares en ejecución en la computadora) para acceder a alguna computadora a través de su nombre. La configuración de un resolver es simple y solo necesita de la dirección IP de un servidor recursivo.
El servidor recursivo es el que recibe las consultas DNS de los resolvers y se encarga de ejecutar la resolución para devolver la respuesta final al cliente (resolver). Servidores recursivos consultan servidores hasta obtener la respuesta a la consulta.
Finalmente, el servidor autoridad (authoritative server) es el que tiene autoridad acerca de un nombre de dominio. O sea, es la fuente confiable de la información de un nombre de dominio. En él se encuentran las informaciones de cuáles direcciones IP están asociadas a computadoras que utilizan el nombre de dominio en cuestión.
Una resolución de nombre de dominio se inicia en el software cliente, que la envía a un servidor recursivo. Ese otro servidor, en general, inicia la resolución consultando a los Servidores Raíz (root servers), que son los responsables por el tope de la jerarquía de nombres de dominio.
Enseguida, con base en la información recibida de los servidores raíces, el servidor recursivo consulta a otros servidores hasta llegar al responsable del dominio deseado.