Como é uma solicitação de DNS?

32

Vi como é a representação de texto de uma solicitação HTTP, mas como é uma solicitação DNS? Onde nos dados está o local do URL que você está tentando localizar? Além disso, como a resposta é formatada?

AMWJ
fonte
3
Sua melhor aposta seria fazer o download do wireshark e capturar os pacotes que você pode obter uma imagem completa do que acontece quando uma solicitação de DNS é feita.
mrdenny
1
Parece uma pergunta lição de casa
Jimsmithkka
2
@mydenny - não, a melhor aposta seria fazer isso com uma cópia do RFC1035 em mãos. O Wireshark não mostra a imagem "completa", mas apenas mostra como são os pacotes específicos que você viu.
Alnitak
@ Jim-Não é @ mrdenny-eu usei o Wireshark e não sei como a solicitação bruta se traduz no que estou enviando.
AMWJ

Respostas:

40

Este é um despejo bruto do Wireshark de uma consulta DNS.

A parte do DNS começa com 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... ..      

E aqui está o detalhamento:

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)

E a resposta, começando novamente em 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         

Demolir:

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:

Observe que, se sua pergunta real é "como escrevo um servidor DNS?", Existem duas respostas apropriadas:

Editar (2):

A solicitação foi enviada usando hostuma caixa Linux:

host www.google.com

Se você estiver no Windows, poderá usar nslookup

nslookup www.google.com
ngoozeff
fonte
2
Não votando em um rastreamento de conexão sem uma referência à especificação real. Longe demais DNS interoperabilidade problemas foram causados por pessoas que acreditam que eles podem fazer engenharia reversa de um traço fio e desaparecidos nuances sutis. De qualquer forma, esse despejo é insuficiente - não demonstra como os rótulos e RRs são codificados.
Alnitak
7
@ Alnitak: Eu li a pergunta como "o que é um exemplo de solicitação / resposta de DNS", e não como são todas as solicitações possíveis. Atualizado caso esteja incorreto.
Ngoozeff
Como você enviou a solicitação para obter isso?
AMWJ
1
Gostaria de saber se os parâmetros de URL usados ​​nos navegadores também são enviados ou é apenas o nome de domínio? Então, para esta pergunta, está /questions/173187/what-does-a-dns-request-look-likeincluído na solicitação?
SPRBRN
1
O @SPRBRN DNS não lida com URLs, apenas nomes de domínio.
Håkan Lindqvist 30/10
7

O layout dos dados da solicitação de DNS é descrito na RFC 1035 . Eu acho que é um pouco inútil copiar o texto aqui ...

placas
fonte
5

As consultas e respostas de DNS são melhor analisadas usando um analisador de protocolo - o Wireshark é uma boa ferramenta de plataforma cruzada que pode capturar e desconstruir as solicitações e respostas em suas várias partes. Há uma boa introdução à estrutura de solicitações e respostas de DNS no Firewall.cx aqui .

As solicitações de DNS contêm perguntas que especificam um nome (ou talvez um campo de texto um tanto arbitrário) e um tipo de registro - o conteúdo da resposta varia de acordo com o tipo. A maioria das solicitações são simples pesquisas diretas de um nome de servidor que procuram um endereço IP em resposta (Tipo A), mas algumas buscam mais informações sobre os próprios servidores de nome (Tipo NS), registros de correio (Tipo MX) e outros serviços (Tipo SRV que retornará nomes, portas, pesos e prioridades). As respostas DNS contêm respostas para essas perguntas, possivelmente mais de uma, se a solicitação exigir isso e nem sempre são apenas endereços IP.

Outro esclarecimento - o DNS não resolve URLs - na maioria dos cenários que envolvem URLs, o DNS é usado apenas para permitir que o sistema do lado do cliente encontre o endereço IP da parte do servidor da URL; todo o resto é tratado por outros protocolos.

Helvick
fonte
3

Se você puder acessar uma máquina Linux, poderá executar o comando dig para executar uma pesquisa de DNS. Este utilitário executa uma pesquisa e retorna exatamente o que o servidor de nomes responde. Por exemplo:

; <<>> 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

Tudo o que começa com a seção "HEADER" é o que é retornado do servidor de nomes. Estou assumindo que é esse o que você está chamando de formato de texto, porque esse não é o formato do pacote real, mas é o texto que é retornado.

Paul Kroon
fonte