¿Qué es DNS? Explicación de los conceptos de sistema de nombres de dominio, servidor DNS y dirección IP

Introducción

Al final de este artículo, debería comprender mejor:

  1. Qué es el DNS y para qué sirve
  2. Que hacen los servidores DNS
  3. Cómo funcionan las direcciones de protocolo de Internet (IP) en el contexto de DNS

Conceptos importantes

Existen algunos modelos mentales esenciales con los que debe familiarizarse al aprender sobre DNS, servidores DNS y direcciones IP. Repasando estos conceptos ahora, antes de comenzar a aprender sobre DNS,

  • ayudar a dar sentido a todos los diferentes términos utilizados para describir el comportamiento que se ajusta a estos modelos, y
  • ayuda en la retención de la memoria.

Los modelos mentales te brindan un marco de referencia cuando las cosas se ponen un poco raras y desconocidas.

Así que vamos a sentar las bases.

  • Consulta y respuesta. Aquí es cuando la Cosa 1 le pide algo a la Cosa 2, y la Cosa 2 responde a esa solicitud. Me gusta esto:
  • Relaciones de nodo padre-hijo y gráficos que se ven así (solo que más complicados).
  • Mensajes. No es una consulta y respuesta porque no hay respuesta. En el mundo del DNS, el formato y el contenido de los mensajes varían según el uso.
  • Relación cliente-servidor. En términos más simples, un servidor es un dispositivo de software o hardware que proporciona funcionalidad para otros dispositivos de software o hardware, llamados "clientes".

    Prepárese para hablar mucho sobre servidores. Resulta que hay una gran cantidad de servidores que entran en esto que llamamos DNS, y cómo nosotros, como humanos, lo usamos cuando nos conectamos a Internet.

¿Qué es DNS?

El sistema de nombres de dominio (DNS) asigna nombres de dominio legibles por humanos (en URL o en direcciones de correo electrónico) a direcciones IP. Por ejemplo, DNS traduce y asigna el dominio freecodecamp.org a la dirección IP 104.26.2.33.

Para ayudarlo a comprender completamente esta descripción, esta sección detalla:

  • Contexto histórico para el desarrollo de DNS: ¿qué problemas estaban resolviendo y las direcciones IP?
  • Nombres de dominio
  • Direcciones IP

Contexto histórico

En 1966, la Agencia de Proyectos de Investigación Avanzada (ARPA), una agencia del gobierno de los Estados Unidos, fundó una red informática llamada ARPAnet. En términos simples, piense en ARPAnet como la primera versión de lo que hoy conocemos como Internet.

Los principales objetivos de ARPAnet incluidos

“(1) proporcionar comunicación confiable incluso en el caso de una falla parcial del equipo o de la red, (2) poder conectarse a diferentes tipos de computadoras y sistemas operativos y (3) ser un esfuerzo cooperativo en lugar de un monopolio controlado por un solo corporación. Con el fin de brindar una comunicación confiable en caso de fallas en el equipo, ARPANET fue diseñado para que ningún punto o enlace fuera más crítico que otro. Esto fue acompañado por la construcción de rutas redundantes y el uso de redireccionamiento de datos sobre la marcha si fallaba alguna parte de la red ".

Los problemas

DNS y TCP / IP fueron fundamentales para resolver dos problemas con ARPAnet:

Para ARPAnet, había una única ubicación (un archivo llamado HOSTS.TXT) que contenía todo el mapeo de nombre a dirección para cada host en la red.

“HOSTS.TXT fue mantenido por el Centro de información de red de SRI (denominado“ la NIC ”) y distribuido desde un solo host, SRI-NIC. [*] Los administradores de ARPAnet generalmente enviaban sus cambios por correo electrónico a la NIC y periódicamente enviaban FTP a SRI- NIC y tomó el archivo HOSTS.TXT actual. Sus cambios se compilaron en un nuevo archivo HOSTS.TXT una o dos veces por semana ".

Hubo tres desafíos con esta configuración:

  1. Tráfico y carga: la distribución del archivo se estaba volviendo demasiado difícil de manejar para el host responsable.
  2. Colisiones de nombres: cada host tenía que tener un nombre único y no había una autoridad centralizada que impidiera que los usuarios de la red agregaran un host con un nombre conflictivo (no único), "rompiendo todo el esquema".
  3. Consistencia: el acto de actualizar el archivo y asegurarse de que todos los hosts tuvieran la versión más actualizada se volvió imposible o al menos muy difícil.

En esencia, HOSTS.TX fue un único punto de falla, por lo que todo el proceso aquí no escalado más allá de una cierta cantidad de hosts. ARPAnet necesitaba una solución descentralizada y escalable. DNS fue todo. Fuente

La comunicación de host a host dentro de la misma red no era lo suficientemente confiable. TCP / IP ayudó a resolver este problema.

  1. El Protocolo de control de transmisión (TCP) proporciona medidas de garantía de calidad para el proceso de convertir mensajes (entre hosts) en paquetes. El protocolo TCP está orientado a la conexión, lo que significa que se debe establecer una conexión entre el host de origen y el host de destino.
  2. El Protocolo de Internet (IP) define cómo se transportan los mensajes (paquetes) entre el host de origen y el host de destino. Una dirección IP es un identificador único para una ruta específica que conduce a un host en una red.
  3. TCP e IP funcionan en estrecha colaboración, por lo que generalmente se les hace referencia como "TCP / IP".
  4. Si bien no voy a profundizar en él en este artículo, tanto TCP como el Protocolo de datagramas de usuario (UDP) se utilizan en la capa de transporte de datos de DNS. UDP es más rápido, mucho menos confiable y no requiere conexiones; TCP es más lento, mucho más confiable, pero necesita conexiones. Se utilizan según sea necesario y apropiado en DNS; Huelga decir que la inclusión de TCP en APRAnet fue una valiosa adición a la capa de transporte de datos.

A principios de la década de 1980, DNS y TCP / IP (y por lo tanto, direcciones IP) eran procedimientos operativos estándar para ARPAnet.

Esta historia está muy resumida. Si desea obtener más información sobre estos temas, consulte la sección Recursos al final de este artículo.

Ahora que tenemos un contexto histórico, pasemos a aprender más sobre nombres de dominio y direcciones IP.

Nombres de dominio

En el contexto de DNS, un nombre de dominio proporciona una forma fácil de usar para señalar recursos no locales. Puede ser un sitio web, un sistema de correo, un servidor de impresión o cualquier otro servidor que esté disponible en Internet. ¡Un nombre de dominio puede ser más que un sitio web!

"El objetivo de los nombres de dominio es proporcionar un mecanismo para nombrar los recursos de tal manera que los nombres se puedan utilizar en diferentes hosts, redes, familias de protocolos, Internet y organizaciones administrativas".

Un nombre de dominio es mucho más fácil de recordar e ingresar en un terminal o navegador de Internet que una dirección IP.

Un nombre de dominio es parte de un localizador uniforme de recursos (URL), pero los términos no son sinónimos . Una URL es la dirección web completa de un recurso, mientras que el nombre de dominio es el nombre de un sitio web y es un subcomponente de cada URL.

Si bien existen distinciones técnicas entre las URL y los nombres de dominio, los navegadores web generalmente los tratan de la misma manera, por lo que accederá al sitio web si ingresa la dirección web completa o solo el nombre de dominio.

Dominios de nivel superior y dominios de segundo nivel

Un dominio determinado consta de dos partes: dominio de nivel superior (TLD) y dominio de segundo nivel (SLD). Las partes de un nombre de dominio se vuelven más específicas cuando se mueven de la derecha (final) a la izquierda (principio).

Esto puede resultar confuso al principio. Por ejemplo, veamos "freecodecamp.org"

  • URL: //www.freecodecamp.org
  • Nombre de dominio: freecodecamp.com
  • TLD: org
  • SLD: campo de código libre

En los primeros días de ARPAnet, había un número limitado de TLD disponibles, incluidos com, edu, gov, org, arpa, mil y dominios de código de país de 2 letras. Estos TLD se reservaron inicialmente para las instituciones que participaban en ARPAnet, pero algunos luego estuvieron disponibles en los mercados comerciales.

Hoy en día, existe una gran cantidad de TLD disponibles, incluidos net, aero, biz, coop, info, museum, name y otros.

Los dominios de segundo nivel son los dominios que están disponibles para compra individual a través de registradores de dominio (por ejemplo, Namecheap).

Direcciones IP

Si bien las direcciones IP están relacionadas con el DNS en su función, el Protocolo de Internet en sí está técnicamente separado del DNS. Ya proporcioné un contexto histórico para esta distinción, así que ahora explicaré cómo funcionan las direcciones IP.

Una dirección IP, como se mencionó anteriormente, es un identificador único para una ruta específica que conduce a un host en una red. Me gustaría hacer referencia a la analogía de un número de teléfono y un teléfono: un número de teléfono no representa el teléfono en sí, es solo una forma de comunicarse con la persona con el teléfono.

Esta analogía es razonablemente apropiada (al menos, a nivel superficial), con las direcciones IP. Una dirección IP representa un punto final, pero no es el punto final en sí. Las asignaciones de IP pueden ser fijas (permanentes) o dinámicas (flexibles y pueden reasignarse).

Como un nombre de dominio, la organización de direcciones IP sigue una estructura jerárquica. A diferencia de los nombres de dominio, las direcciones IP se vuelven más específicas yendo de izquierda a derecha. Este es un ejemplo de IPv4 a continuación:

El diagrama muestra que 129.144 es la parte de la red y 50.56 es la parte del host de una dirección IPv4.
  • Red: el número único asignado a su red
  • Host: identifica el host (máquina) en la red

Si se necesita una mayor especificidad, los administradores de red pueden dividir en subredes el espacio de direcciones y delegar números adicionales.

¿Cuántas direcciones IP hay?

IPv4 fue la primera iteración de IP que ARPAnet utilizó en producción. Implementada a principios de los 80, sigue siendo la versión de IP más frecuente. Es un esquema de 32 bits y, por lo tanto, puede admitir un poco más de 4 mil millones de direcciones.

Pero espera, ¿es suficiente? No

IPv6 tiene un esquema de 128 bits, lo que le permite admitir 340 mil millones de direcciones. También ofrece mejoras de rendimiento en IPv4.

Ejemplo de dirección IPv4:

  • 104.26.2.33 (freeCodeCamp)

Ejemplo de dirección IPv6:

  • 2001: db8: a0b: 12f0 :: 1 (el formato comprimido y no apunta a freeCodeCamp)

¿Cómo funciona el sistema de nombres de dominio?

Entonces, ¡hemos aprendido sobre los nombres de dominio! ¡Hemos aprendido sobre direcciones IP! Ahora, ¿cómo se relacionan con el sistema de nombres de dominio?

En primer lugar, encajan en el espacio de nombres.

El espacio de nombres de dominio

Como implica el dominio de nivel "superior" del lenguaje y el dominio de "segundo" nivel, el espacio de nombres se basa en una jerarquía

“... con la jerarquía que corresponde aproximadamente a la estructura organizativa, y los nombres utilizan". " como el carácter para marcar el límite entre los niveles jerárquicos ". Fuente.

Este gráfico de árbol, con la raíz en la parte superior, ilustra mejor la estructura:

Analicemos esto, comenzando por la parte superior.

La parte superior de este gráfico, señalada con un "." se llama la "raíz".

“Los servidores de nombres autorizados que sirven a la zona raíz de DNS, comúnmente conocidos como los“ servidores raíz ”, son una red de cientos de servidores en muchos países de todo el mundo. Están configurados en la zona raíz de DNS como 13 autoridades nombradas ".

El dominio raíz tiene una etiqueta de longitud cero.

De aquí en adelante, cada nodo (punto) del gráfico tiene una etiqueta única de hasta 63 caracteres.

El primer nivel desde la raíz son los TLD: com, org, edu y gov. Tenga en cuenta que este gráfico no contiene una lista completa de TLD.

Debajo de los TLD están los SLD, los dominios de segundo nivel. Los hijos de cada nodo se denominan "subdominios", que todavía se consideran parte del dominio padre. Por ejemplo, en freecodecamp.org, freecodecamp (el SLD) es un subdominio de org (el TLD).

Dependiendo de la jerarquía del sitio web, puede haber dominios de tercer, cuarto o quinto nivel. Por ejemplo, en hypothetical-subdomain.freecodecamp.org, hypothetical-subdominio es el dominio de tercer nivel y el subdominio de freecodecamp. Y así sucesivamente, al menos hasta 127 niveles, que es el máximo permitido por DNS.

¿Quién administra el espacio de nombres?

¿No sería una locura intentar que una persona u organización administrara todo? Sí lo haría. Especialmente porque uno de los principales objetivos de diseño de DNS era promover la gestión distribuida y descentralizada del sistema en general.

Ojalá pudiera decirles que los responsables se llaman los "Reyes del espacio de nombres", pero lamentablemente.

Cada dominio (o subdominio) en el espacio de nombres de dominio es o es parte de una zona , "una parte del espacio de nombres administrada de forma autónoma". Entonces, el espacio de nombres se divide en zonas.

La responsabilidad de esas zonas se gestiona mediante delegación y administración.

El proceso de asignar la responsabilidad de subdominios a otras entidades se llama delegación.

Por ejemplo, el Registro de Interés Público administra el nombre de dominio org, y lo ha hecho desde 2003. El Registro de Interés Público puede delegar la responsabilidad en otras partes para administrar los subdominios de la organización, digamos freecodecamp. Y luego quien administre freecodecamp puede asignar la responsabilidad de los subdominios de freecodecamp (por ejemplo, hypothethical-subdomain.freecodecamp.com) a otra parte.

Si alguien (una organización, equipo o individuo) administra una zona, lo que está haciendo es administrar el servidor de nombres que es responsable de la zona.

Esto nos lleva a uno de los conceptos más fundamentales del sistema de nombres de dominio.

Servidores de nombres de dominio

"Los programas que almacenan información sobre el espacio de nombres de dominio se denominan servidores de nombres".

En este punto es donde resulta útil pensar en una relación cliente-servidor, al menos inicialmente. Los servidores de nombres de dominio son el lado "servidor" de la relación cliente-servidor. Los servidores de nombres pueden cargar una, cientos o incluso miles de zonas, pero nunca cargan todo el espacio de nombres. Una vez que un servidor de nombres ha cargado la totalidad de una zona, se dice que tiene autoridad para esa zona.

Para comprender por qué los servidores de nombres funcionan de la manera en que lo hacen, es útil comprender la parte del "cliente" de la relación.

Resolvers

En DNS, el cliente (el solicitante de información) se denomina "resolutor", lo que puede parecer atrasado al principio. ¿No se llamaría "resolutor" al servidor que está resolviendo la solicitud? Yo también lo pensé, pero no lo es. Lo mejor es simplemente memorizar eso y seguir adelante.

Los solucionadores suelen estar incluidos, de facto, en la mayoría de los sistemas operativos, por lo que las aplicaciones instaladas en el sistema operativo no tienen que averiguar cómo realizar consultas DNS de bajo nivel.

Las consultas DNS y sus respuestas son tipos de mensajes DNS y tienen su propio protocolo de transporte de datos (generalmente UDP). Los solucionadores son responsables de ayudar a las aplicaciones instaladas en el sistema operativo a traducir las solicitudes de datos relacionados con DNS en consultas de DNS.

En resumen, los resolutores son responsables de empaquetar y enviar solicitudes de datos. Una vez que el resolutor recibe la respuesta (si la recibe), la devuelve a la aplicación solicitante original en un formato consumible para la aplicación solicitante.

Volver a servidores de nombres

Ahora que estamos un poco más familiarizados con el lado del cliente de la relación, necesitamos entender cómo responden los servidores de nombres de dominio a las consultas de resolución.

Los servidores de nombres responden a las consultas de DNS mediante resolución . La resolución es el proceso mediante el cual los servidores de nombres encuentran archivos de datos en el espacio de nombres. Dependiendo del tipo de consulta, los servidores de nombres responden de manera diferente a diferentes consultas, pero el objetivo final es la resolución.

Tipos de consulta

¿Tipo de consulta? Sí, existen varios tipos de consultas DNS. Pero primero, ¿qué suele haber en una consulta de DNS? Es una solicitud de información, específicamente para la dirección IP asociada con un nombre de dominio.

  • Recursivo : las consultas recursivas permiten que la consulta sea referida a múltiples servidores de nombres para ser resuelta. Si el primer servidor de nombres consultado no tiene los datos deseados, entonces ese servidor de nombres envía la consulta al siguiente servidor de nombres más apropiado, hasta que se encuentra el servidor de nombres con los archivos de datos deseados y envía una respuesta al resolutor.
  • Iterativo : las consultas iterativas requieren que el servidor de nombres consultado responda con los datos deseados o con un error. La respuesta puede contener la dirección IP del servidor de nombres más apropiado para enviar la solicitud al siguiente; el resolutor puede enviar otra solicitud a ese servidor de nombres más apropiado.

En caso de que lo necesite, también puede consultar el nombre de dominio, si lo único que tiene es la dirección IP. Esto se denomina búsqueda de DNS inversa.

Una vez que la consulta llega a un servidor de nombres que contiene los archivos de datos deseados, la consulta se puede resolver. Los servidores de nombres tienen varios archivos de datos asociados a ellos, todos o algunos de los cuales pueden usarse para resolver la consulta.

Registros de recursos (RR)

Estos son los archivos de datos en el espacio de nombres de dominio. Estos archivos de datos tienen formatos y contenidos específicos.

Los RR más comunes:

  • Un registro: si no ha oído hablar de ningún otro RR excepto este, eso tendría sentido. Es probable que sea el RR más conocido y contenga la dirección IP del dominio dado.
  • Registro CNAME: si no ha oído hablar de ningún otro RR excepto este y el registro A, eso también tendría sentido. La "C" significa "canónico" y se usa en lugar de un registro A para asignar un alias a un dominio.
  • Registro SOA: este registro contiene información administrativa sobre el uno, incluida la dirección de correo electrónico del administrador. Sugerencia: si administra una zona, asegúrese de que haya una dirección de correo electrónico válida aquí, para que la gente pueda comunicarse con usted si es necesario.
  • Otros tipos importantes de registros de recursos (RR) son PR, NS, SRV y MX. Lea sobre ellos aquí.

Almacenamiento en caché y tiempo de vida (TTL)

Cuando el servidor de nombres local recibe una respuesta de una consulta, almacena en caché esos datos (los almacena en la memoria), por lo que la próxima vez que reciba la misma consulta, puede simplemente responder la consulta directamente en lugar de pasar por el proceso de resolución original más largo.

Pero una vez que esta información se almacena en caché, es estática y aislada y, por lo tanto, corre el riesgo de quedar desactualizada. Por lo tanto, todos los registros de recursos tienen lo que se denomina un valor de tiempo de vida (TTL), que determina cuánto tiempo se pueden almacenar en caché esos datos. Cuando ese tiempo se agota (llega a cero), el servidor de nombres elimina el registro.

Nota importante: TTL no se aplica a los servidores de nombres autorizados para la zona que contiene el registro de recursos. Solo se aplica al servidor de nombres que almacenó en caché ese registro de recursos.

Un día en la vida de una consulta

Hemos cubierto mucho terreno en este artículo y ha sido pesado en los conceptos. Para unir todo esto y hacerlo realidad, aquí hay un día (día figurativo) en la vida de una consulta.

Entonces, ¿por qué necesito saber todo esto?

Hay muchas razones para estar familiarizado con los conceptos relacionados con las direcciones IP y DNS.

  • Primero, es una columna vertebral de Internet, lo que muchos de nosotros usamos, desarrollamos sentimientos (amor / odio / lo que sea) y damos por sentado todos los días. Es importante estar familiarizado con las estructuras que nos permiten lograr grandes cosas hoy con la tecnología y la Internet de hoy.
  • ¡Personas increíblemente inteligentes pasaron décadas de su vida construyendo estas cosas! Reconozcamos y apreciemos sus contribuciones.
  • Ahora que dejé de lado las cosas interesantes, es importante estar familiarizado con los conceptos de DNS en caso de que sea responsable de cualquier cosa relacionada con la infraestructura en su empresa o equipo o en su propio negocio. Tener un marco de referencia cuando surgen problemas importantes le permite actuar mucho más rápido y encontrar soluciones mucho antes.

Conclusión

En este punto, debe comprender qué es DNS y qué es un servidor de nombres, así como familiarizarse con los conceptos técnicos relacionados con las direcciones IP.

Se han escrito muchos libros sobre el fascinante mundo del DNS y se sumergen más en él, y hay mucho más que aprender. Los temas que no se incluyeron en este artículo pero que son parte del DNS o están muy relacionados incluyen:

  • Implementaciones de servidores de nombres
  • Reenvío
  • (Más sobre) etiquetas de nodo
  • Relaciones de servidores de nombres primarios y secundarios
  • Algoritmos de retransmisión
  • Balanceo de carga
  • Además, otros temas más generales sobre el funcionamiento de Internet, como:
  • Red mundial
  • HTTP
  • FTP
  • Capas de protocolo de comunicación: capa de enlace, capa de IP, capa de transporte, capa de Internet, etc.

Para aquellos de ustedes que todavía están leyendo yquiero aprender más sobre DNS, ante todo recomiendo “DNS and BIND, 5th Ed.”, escrito por Cricket Liu y publicado por O'Reilly Media. Es invaluable.

También animo a todos a que revisen la Solicitud de comentarios (RFC) original vinculada a continuación. No solo hay puntos para leer fuentes primarias, sino que también son documentos excepcionalmente bien organizados y comprensibles, por lo que los cité en este artículo.

Recursos

  1. RFC 1034: NOMBRES DE DOMINIO - CONCEPTOS E INSTALACIONES
  2. RFC 1035: NOMBRES DE DOMINIO - IMPLEMENTACIÓN Y ESPECIFICACIÓN
  3. RFC 1122: Requisitos para hosts de Internet: capas de comunicación
  4. Más sobre los objetivos de diseño de DNS, de Connected: An Internet Encyclopedia
  5. Cómo nació Internet de ARPAnet a The Interpret, de The Conversation
  6. Curso de aprendizaje en video sobre DNS, por Cricket Liu, de O'Reilly Media

Un poco sobre mí

Soy Chloe Tucker, una artista y desarrolladora en Portland, Oregon. Como exeducadora, busco continuamente la intersección entre el aprendizaje y la enseñanza, o la tecnología y el arte. Comuníquese conmigo en Twitter @_chloetucker y visite mi sitio web en chloe.dev.