¿Cómo se ve una solicitud de DNS?

32

He visto cuál es la representación de texto de una solicitud HTTP, pero ¿cómo se ve una solicitud DNS? ¿En qué parte de los datos se encuentra la ubicación de la URL que está tratando de localizar? Además, ¿cómo se formatea la respuesta?

AMWJ
fuente
3
Su mejor opción sería descargar wireshark y capturar los paquetes para que pueda obtener una imagen completa de lo que sucede cuando se realiza una solicitud de DNS.
mrdenny
1
parece una pregunta de tarea
Jimsmithkka
2
@mydenny: no, la mejor opción sería hacerlo con una copia de RFC1035 a mano. Wireshark no te dará la imagen "completa", solo puede mostrarte cómo son los paquetes particulares que has visto.
Alnitak
@ Jim-No es @ mrdenny-He usado Wireshark y no sé cómo la solicitud sin procesar se traduce en lo que estoy enviando.
AMWJ

Respuestas:

40

Este es un volcado sin procesar de Wireshark de una consulta DNS.

La parte DNS comienza con 24 1a:

0000  00 00 00 00 00 00 00 00  00 00 00 00 08 00 45 00   ........ ......E.
0010  00 3c 51 e3 40 00 40 11  ea cb 7f 00 00 01 7f 00   .<Q.@.@. ........
0020  00 01 ec ed 00 35 00 28  fe 3b 24 1a 01 00 00 01   .....5.( .;$.....
0030  00 00 00 00 00 00 03 77  77 77 06 67 6f 6f 67 6c   .......w ww.googl
0040  65 03 63 6f 6d 00 00 01  00 01                     e.com... ..      

Y aquí está el desglose:

Domain Name System (query)
    [Response In: 1852]
    Transaction ID: 0x241a
    Flags: 0x0100 (Standard query)
        0... .... .... .... = Response: Message is a query
        .000 0... .... .... = Opcode: Standard query (0)
        .... ..0. .... .... = Truncated: Message is not truncated
        .... ...1 .... .... = Recursion desired: Do query recursively
        .... .... .0.. .... = Z: reserved (0)
        .... .... ...0 .... = Non-authenticated data OK: Non-authenticated data is unacceptable
    Questions: 1
    Answer RRs: 0
    Authority RRs: 0
    Additional RRs: 0
    Queries
        www.google.com: type A, class IN
            Name: www.google.com
            Type: A (Host address)
            Class: IN (0x0001)

Y la respuesta, nuevamente comenzando en 24 1a:

0000  00 00 00 00 00 00 00 00  00 00 00 00 08 00 45 00   ........ ......E.
0010  00 7a 00 00 40 00 40 11  3c 71 7f 00 00 01 7f 00   .z..@.@. <q......
0020  00 01 00 35 ec ed 00 66  fe 79 24 1a 81 80 00 01   ...5...f .y$.....
0030  00 03 00 00 00 00 03 77  77 77 06 67 6f 6f 67 6c   .......w ww.googl
0040  65 03 63 6f 6d 00 00 01  00 01 c0 0c 00 05 00 01   e.com... ........
0050  00 05 28 39 00 12 03 77  77 77 01 6c 06 67 6f 6f   ..(9...w ww.l.goo
0060  67 6c 65 03 63 6f 6d 00  c0 2c 00 01 00 01 00 00   gle.com. .,......
0070  00 e3 00 04 42 f9 59 63  c0 2c 00 01 00 01 00 00   ....B.Yc .,......
0080  00 e3 00 04 42 f9 59 68                            ....B.Yh         

Descompostura:

Domain Name System (response)
    [Request In: 1851]
    [Time: 0.000125000 seconds]
    Transaction ID: 0x241a
    Flags: 0x8180 (Standard query response, No error)
        1... .... .... .... = Response: Message is a response
        .000 0... .... .... = Opcode: Standard query (0)
        .... .0.. .... .... = Authoritative: Server is not an authority for domain
        .... ..0. .... .... = Truncated: Message is not truncated
        .... ...1 .... .... = Recursion desired: Do query recursively
        .... .... 1... .... = Recursion available: Server can do recursive queries
        .... .... .0.. .... = Z: reserved (0)
        .... .... ..0. .... = Answer authenticated: Answer/authority portion was not authenticated by the server
        .... .... .... 0000 = Reply code: No error (0)
    Questions: 1
    Answer RRs: 3
    Authority RRs: 0
    Additional RRs: 0
    Queries
        www.google.com: type A, class IN
            Name: www.google.com
            Type: A (Host address)
            Class: IN (0x0001)
    Answers
        www.google.com: type CNAME, class IN, cname www.l.google.com
            Name: www.google.com
            Type: CNAME (Canonical name for an alias)
            Class: IN (0x0001)
            Time to live: 3 days, 21 hours, 52 minutes, 57 seconds
            Data length: 18
            Primary name: www.l.google.com
        www.l.google.com: type A, class IN, addr 66.249.89.99
            Name: www.l.google.com
            Type: A (Host address)
            Class: IN (0x0001)
            Time to live: 3 minutes, 47 seconds
            Data length: 4
            Addr: 66.249.89.99
        www.l.google.com: type A, class IN, addr 66.249.89.104
            Name: www.l.google.com
            Type: A (Host address)
            Class: IN (0x0001)
            Time to live: 3 minutes, 47 seconds
            Data length: 4
            Addr: 66.249.89.104

Editar:

Tenga en cuenta que si su verdadera pregunta es "¿cómo escribo un servidor DNS?", Entonces hay dos respuestas apropiadas:

Editar (2):

La solicitud se envió usando hostuna caja de Linux:

host www.google.com

Si está en Windows, puede usar nslookup

nslookup www.google.com
ngoozeff
fuente
2
No votar en forma ascendente sin una referencia a la especificación real. Lejos demasiados problemas de interoperabilidad DNS han sido causados por personas que creen que pueden realizar ingeniería inversa de una traza de alambre, y faltan matices sutiles. En cualquier caso, este volcado es insuficiente: no demuestra cómo se codifican las etiquetas y los RR.
Alnitak
77
@Alnitak: leí la pregunta como "cuál es un ejemplo de una solicitud / respuesta DNS", en lugar de cómo se ven todas las solicitudes posibles. Actualizado en caso de que sea incorrecto.
ngoozeff
¿Cómo envió la solicitud para obtener esto?
AMWJ
1
Me gustaría saber si los parámetros de URL utilizados en los navegadores también se envían, ¿o es solo el nombre de dominio? Entonces, para esta pregunta, ¿está /questions/173187/what-does-a-dns-request-look-likeincluido en la solicitud?
SPRBRN
1
@SPRBRN DNS no maneja URL, solo nombres de dominio.
Håkan Lindqvist
7

El diseño de datos de solicitud de DNS se describe en RFC 1035 . Creo que no tiene sentido copiar el texto aquí ...

Plaes
fuente
5

Las consultas y respuestas DNS se analizan mejor utilizando un analizador de protocolos: Wireshark es una buena herramienta multiplataforma que puede capturar y deconstruir las solicitudes y respuestas en sus diversas partes. Hay una buena introducción a la estructura de solicitudes y respuestas de DNS en Firewall.cx aquí .

Las solicitudes de DNS contienen preguntas que especifican un nombre (o tal vez un campo de texto algo arbitrario) y un tipo de registro; el contenido de la respuesta variará según el tipo. La mayoría de las solicitudes son búsquedas directas simples de un nombre de servidor en busca de una dirección IP en respuesta (Tipo A), pero algunas buscarán más información sobre los propios servidores de nombres (Tipo NS), registros de correo (Tipo MX) y otros servicios (Tipo SRV que devolverá nombres, puertos, pesos y prioridades). Las respuestas de DNS contienen respuestas a estas preguntas, posiblemente más de una si la solicitud lo requiere y no siempre son solo direcciones IP.

Otra aclaración: el DNS no resuelve las URL: en la mayoría de los escenarios que involucran URL, el DNS solo se usa para permitir que el sistema del lado del cliente encuentre la dirección IP de la parte del servidor de la URL, todo lo demás es manejado por otros protocolos.

Helvick
fuente
3

Si puede acceder a una máquina Linux, puede ejecutar el comando cavar para realizar una búsqueda de DNS. Esta utilidad realiza una búsqueda y devuelve exactamente con qué responde el servidor de nombres. Por ejemplo:

; <<>> DiG 9.6.1-P2 <<>> serverfault.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32383
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;serverfault.com.               IN      A

;; ANSWER SECTION:
serverfault.com.        55961   IN      A       69.59.196.211

;; Query time: 21 msec
;; SERVER: 68.87.64.150#53(68.87.64.150)
;; WHEN: Sun Aug 22 09:21:35 2010
;; MSG SIZE  rcvd: 49

Todo lo que comienza con la sección "HEADER" es lo que devuelve el servidor de nombres. Supongo que esto es a lo que se refiere como formato de texto porque este no es el formato del paquete real, sino que es el texto que se devuelve.

Paul Kroon
fuente