Logo DNS

Formato de un mensaje DNS

publicado en: DNS, Redes, Servicios de Red | 0
 
 

Este es el noveno de los artículos dedicados al DNS publicados en ZeppelinuX. En este artículo explicaremos brevemente el formato de un mensaje DNS y la compresión de un mensaje DNS usado por el Protocolo DNS. Si te interesa ver el artículo anterior, DNS dinámico DDNS (Dynamic DNS), solo tienes que pinchar aquí.

Índice General

  1. Formato de un mensaje DNS.
    1. Sección HEADER.
    2. Sección QUESTION.
    3. Secciones ANSWER, AUTHORITY y ADDITIONAL.
  2. Compresión de mensajes DNS.

 

  1. Formato de un mensaje DNS (Volver al índice General)
    El protocolo DNS establece las normas y reglas en base a las cuales dialogan los clientes y servidores DNS. El protocolo de transporte usado es TCP. El formato de un mensaje DNS es el siguiente:
    Formato de un mensaje DNS
    Todos los mensajes tienen el mismo formato general:

    A continuación veremos el formato de las secciones HEADER, QUESTION, ANSWER, AUTHORITY y ADDITIONAL.

    1. Sección HEADER (Volver al índice General)
      HEADER de un mensaje DNS

      • ID: Identificador que debe coincidir entre las consultas y las respuestas.
      • QR: Indica si es una consulta o una respuesta.
      • OPCODE:
        • Standard Query (0)
        • Inverse Query (1)
        • Server Status Request (2)
      • AA: Respuesta autoritativa.
      • TC: Mensaje truncado.
      • RD: Consulta recursiva.
      • RA: Indica si el servidor soporta consultas recursivas.
      • Z: Reservado.
      • RCODE: Código de respuesta.
      • QDCOUNT, ANCOUNT, NSCOUNT y ARCOUNT: Cantidad de registros en cada una de las secciones Query, Answer, Authority y Additional, respectivamente.
    2.  

    3. Sección QUESTION (Volver al índice General)
      Esta sección es la que transporta la consulta. Sus parámetros definen qué es lo que se está preguntando.
      Seccion QUESTION de un mensaje DNS

      • QNAME: Contiene un nombre de dominio representado como una secuencia de etiquetas.
      • QTYPE: contiene un código de dos bytes que especifica el tipo de Registro de Recurso por el que se consulta (SOA, A, NS, PTR, ANY, etc.).
      • QCLASS: Contiene la clase del registro (Normalmente IN).

       
      Por ejemplo, consulta de la dirección IP del sitio web </ZeppelinuX>:

      • QNAME: www.zeppelinux.es
      • QTYPE: A
      • QCLASS: IN
    4.  

    5. Secciones ANSWER, AUTHORITY y ADDITIONAL (Volver al índice General)
      Estas tres secciones contienen Registros de Recursos (RRs), y el formato es el siguiente:
      Formato de los Registros de Recursos de un mensaje DNS
      Todos los Registros de Recursos tienen el mismo formato general.

      • NAME: Contiene el nombre del nodo al que el Registro de Recurso pertenence.
      • TYPE: Contiene el código del Registro de Recurso.
      • CLASS: Contiene la clase del Registro de Recurso (IN para Internet).
      • TTL: Contiene el tiempo de vida del Registro de Recurso en segundos.
      • RDLENGTH: Contiene la longitud de la sección RDATA.
      • RDATA: Contiene los datos correspondientes al Registro de Recurso, el formato varía según el tipo de Registro de Recurso.
  2.  

  3. Compresión de mensajes DNS. (Volver al índice General)
    Para reducir el tamaño de los mensajes DNS se utiliza un esquema de compresión que elimina la repetición de nombres de dominio. Un nombre de dominio completo o una lista de etiquetas al final de un nombre de dominio se reemplazan por un puntero a una ocurrencia previa del mismo nombre.

    Veamos un ejemplo de compresión para un mensaje que contiene las siguientes URLs:

    www.servidores.redes.midominio.net
    ns1.zeppelinux.es
    ns2.zeppelinux.es
    pc1.workstations.redes.midominio.net

    Esquema de compresión de un mensaje DNS
    El puntero, es una etiqueta especial que ocupa 2 bytes.
    En los punteros los 2 primeros bits toman el valor 1, permitiendo distinguir un puntero de una etiqueta normal. Los siguientes 14 bits representan un OFFSET a partir del inicio del mensaje.

    En las etiquetas normales el primer byte indica la longitud. Las etiquetas pueden tener una longitud de hasta 63 bytes, por lo tanto los primeros bits de este byte toman el valor 0.

    La compresión permite que un nombre de dominio sea:

    • Una secuencia de etiquetas terminando en un byte 0.
    • Un puntero.
    • Una secuencia de etiquetas terminando en un puntero.

 
Aquí termina el noveno de los artículos dedicado al Sistema de Nombres de Dominio (DNS). En breve, continuaremos publicando más sobre DNS, en concreto sobre Herramientas de diagnóstico para DNS: nslookup, dig, host y whois.
 

Espero que este artículo os haya sido de utilidad. Si pensáis que podéis colaborar para mejorar este artículo, que hay algo erróneo en él o simplemente deseáis comentarlo, por favor, dejad vuestra opinión más abajo.
 
Seguir J. Carlos:

Técnico Informático - Desarrollo Web - Administración de Redes

Técnico Informático. Desarrollo Web. Administración de redes.

Últimas publicaciones de

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.