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í.
- 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:
Todos los mensajes tienen el mismo formato general:- HEADER: Siempre presente en el mensaje. Especifica cuales son las secciones presentes, el tipo de mensaje y otros campos.
- QUESTION: Campos que definen una consulta a un servidor DNS.
- ANSWER: Registros de recursos que responden a la consulta.
- AUTHORITY: Registros de recursos que apuntan a los servidores DNS autoritativos.
- ADDITIONAL: Registros de recursos que contienen información adicional.
A continuación veremos el formato de las secciones HEADER, QUESTION, ANSWER, AUTHORITY y ADDITIONAL.
- Sección HEADER (Volver al índice General)
- 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.
- 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.
- 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
- Secciones ANSWER, AUTHORITY y ADDITIONAL (Volver al índice General)
Estas tres secciones contienen Registros de Recursos (RRs), y el formato es el siguiente:
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.
- 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
El puntero, es una etiqueta especial que ocupa2 bytes
.
En los punteros los2 primeros bits
toman el valor1
, permitiendo distinguir un puntero de una etiqueta normal. Los siguientes14 bits
representan unOFFSET
a partir del inicio del mensaje.En las etiquetas normales el
primer byte
indica la longitud. Las etiquetas pueden tener una longitud de hasta63 bytes
, por lo tanto los primeros bits de este byte toman el valor0
.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.
- Una secuencia de etiquetas terminando en un
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.
Deja una respuesta