3. DNS (Domain Name System)

El Sistema de Nombres de Dominio (DNS) funciona como una agenda distribuida de Internet. Convierte nombres fáciles de recordar, como www.facebook.com , en direcciones IP que los routers utilizan para dirigir correctamente el tráfico de datos.

Sin DNS la navegación sería impracticable, porque nadie recordaría las combinaciones numéricas cambiantes que identifican a cada servicio. Además de la simple traducción, DNS aporta equilibrio de carga, verificación de servicios y controles de seguridad como DNSSEC.

3.1 Función: traducir nombres a direcciones

Cuando un navegador necesita cargar un sitio, pregunta primero a un resolvedor DNS cuál es la dirección IP que corresponde al nombre solicitado. El resolvedor recorre la jerarquía de DNS hasta hallar una respuesta autoritativa y la devuelve, almacenándola en caché para acelerar futuras consultas.

Esta resolución ocurre en milisegundos y se ejecuta millones de veces por segundo en todo el mundo, demostrando la eficiencia y resiliencia del sistema.

traducir nombres a direcciones

3.2 Estructura jerárquica del sistema

DNS es jerárquico y delega responsabilidades de arriba hacia abajo:

  • Nivel raíz: operado por organizaciones supervisadas por ICANN. Puntos de entrada distribuidos globalmente.
  • TLD (Top Level Domains): categorías como .com, .org, .edu o códigos de país como .ar.
  • Dominios y subdominios: responsabilidad de los propietarios, quienes pueden delegar subdominios adicionales para separar servicios.

Cada nivel conoce únicamente la información necesaria para dirigir a la siguiente autoridad, lo que evita dependencias centralizadas y facilita el crecimiento del sistema.

3.3 Tipos de registros DNS más utilizados

Los registros son las piezas de información que responden a una consulta. Cada tipo indica qué clase de dato se está publicando.

Tipo Propósito Ejemplo
A Asocia un nombre a una dirección IPv4. www → 142.250.184.164
AAAA Asocia un nombre a una dirección IPv6. www → 2607:f8b0:4004:80a::2004
CNAME Alias; redirige un nombre a otro dentro del árbol DNS. blog → ghs.googlehosted.com
MX Define los servidores de correo para un dominio. 10 aspmx.l.google.com
NS Indica cuáles son los servidores autoritativos del dominio. ns1.ejemplo.com
PTR Permite resolver una IP hacia un nombre (búsqueda inversa). 164.184.250.142.in-addr.arpa → lhr25s56-in-f4.1e100.net

Existen muchos otros tipos (TXT, SRV, CAA), pero los anteriores cubren las tareas básicas de publicación web, correo y diagnósticos.

3.4 Servidores recursivos, autoritativos y caché

El proceso completo involucra roles distintos:

  • Servidor recursivo: suele ser proporcionado por el ISP o configurado manualmente (por ejemplo, Google Public DNS). Resuelve consultas en nombre del usuario.
  • Servidor autoritativo: responde con información oficial del dominio que administra.
  • Caché: tanto los clientes como los recursivos almacenan respuestas durante el tiempo de vida (TTL) especificado en cada registro para evitar consultas repetidas.

Esta división permite escalar: los recursivos absorben el tráfico cotidiano, mientras que los autoritativos solo atienden las solicitudes necesarias para mantener la información actualizada.

3.5 Ejemplo completo de resolución

Veamos cómo se resuelve www.google.com:

  1. El cliente pregunta al recursivo configurado localmente.
  2. Si la respuesta no está en caché, el recursivo consulta a un servidor raíz.
  3. El raíz indica cuáles son los servidores del TLD .com.
  4. El TLD responde con los servidores autoritativos de google.com.
  5. El recursivo contacta al autoritativo y obtiene los registros A/AAAA.
  6. El recursivo almacena la respuesta en caché y se la entrega al cliente.

El resultado puede contener múltiples direcciones para repartir la carga entre centros de datos y aplicar balanceo geográfico.

3.6 Herramientas útiles para DNS

Windows incluye nslookup para realizar consultas puntuales y verificar si un cambio ya se propagó:

nslookup www.wikipedia.org 8.8.8.8

En sistemas tipo Unix es común utilizar dig o host, que ofrecen salidas más detalladas. Un script sencillo en Python permite automatizar verificaciones:

import socket

for record in ("www.google.com", "mail.google.com"):
    ip = socket.gethostbyname(record)
    print(f"{record} -> {ip}")

Este tipo de utilidades se integra en procesos de despliegue continuo para garantizar que los cambios de DNS se publiquen antes de mover tráfico hacia un nuevo servicio.

3.7 Cierre

DNS combina simplicidad conceptual con una infraestructura global altamente optimizada. Conocer sus componentes ayuda a interpretar síntomas como latencia intermitente, errores de resolución o bloqueos selectivos. En el siguiente tema analizaremos HTTP, que se apoya directamente en DNS para encontrar servidores web antes de intercambiar documentos.