À quoi ressemble une demande DNS?

32

J'ai vu quelle est la représentation textuelle d'une requête HTTP, mais à quoi ressemble une requête DNS? Où dans les données se trouve l'emplacement de l'URL que vous essayez de localiser? Aussi, comment la réponse est-elle formatée?

AMWJ
la source
3
Votre meilleur choix serait de télécharger Wharshark et de capturer les paquets afin d’obtenir une image complète de ce qui se passe lorsqu’une requête DNS est faite.
mrdenny
1
semble être une question de devoirs
Jimsmithkka
2
@mydenny - non, le mieux serait de le faire avec une copie du RFC1035 . Wireshark ne vous donnera pas l'image "complète", il ne pourra que vous montrer à quoi ressemblent les paquets que vous avez vus.
Alnitak
@ Jim-Ce n'est pas @ mrdenny-j'ai utilisé Wireshark et je ne sais pas comment la demande brute se traduit par ce que j'envoie.
AMWJ

Réponses:

40

Ceci est une copie brute de Wireshark d'une requête DNS.

La partie DNS commence par 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... ..      

Et voici la ventilation:

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)

Et la réponse, toujours à partir de 24 heures 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         

Panne:

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

Modifier:

Notez que si votre vraie question est "comment puis-je écrire un serveur DNS?", Il existe alors deux réponses appropriées:

Modifier (2):

La demande a été envoyée en utilisant hostune boîte Linux:

host www.google.com

Si vous êtes sous Windows, vous pouvez utiliser nslookup

nslookup www.google.com
Ngoozeff
la source
2
Ne pas voter une trace de fil sans faire référence à la spécification réelle. Beaucoup trop de problèmes d’interopérabilité DNS ont été causés par des personnes qui pensaient pouvoir faire de l’ingénierie inverse à partir d’une trace électronique et manquaient de nuances subtiles. Dans tous les cas, ce vidage est insuffisant - il ne montre pas comment les étiquettes et les RR sont codés.
Alnitak
7
@Alnitak: J'ai lu la question comme suit: "Qu'est-ce qu'un exemple de requête / réponse DNS", plutôt que de définir toutes les requêtes possibles. Mis à jour au cas où cela serait incorrect.
ngoozeff
Comment avez-vous envoyé la demande pour l'obtenir?
AMWJ
1
Je voudrais savoir si les paramètres d'URL tels qu'utilisés dans les navigateurs sont également envoyés, ou s'agit-il simplement du nom de domaine? Donc pour cette question, est /questions/173187/what-does-a-dns-request-look-likeinclus dans la demande?
SPRBRN
1
@SPRBRN DNS ne traite pas les URL, mais uniquement les noms de domaine.
Håkan Lindqvist
7

La structure des données de requête DNS est décrite dans la RFC 1035 . Je pense qu'il est un peu inutile de copier le texte ici ...

plaes
la source
5

Les analyseurs de protocole permettent mieux d'analyser les requêtes et les réponses DNS. Wireshark est un bon outil multiplateforme qui permet de capturer et de déconstruire les demandes et les réponses dans leurs différentes parties. Il y a une belle introduction à la structure des requêtes et réponses DNS sur Firewall.cx ici .

Les demandes DNS contiennent des questions qui spécifient un nom (ou peut-être un champ de texte quelque peu arbitraire) et un type d'enregistrement. Le contenu de la réponse variera en fonction du type. La plupart des demandes sont de simples recherches directes d’un nom de serveur à la recherche d’une adresse IP en réponse (type A), mais certaines rechercheront davantage d’informations sur les serveurs de noms eux-mêmes (type NS), les enregistrements de courrier (type MX) et d’autres services (type). SRV qui renverra les noms, les ports, les poids et les priorités). Les réponses DNS contiennent des réponses à ces questions, éventuellement plusieurs si la requête l'exige et ne sont pas toujours des adresses IP.

Une autre clarification - le DNS ne résout pas les URL - dans la plupart des scénarios impliquant des URL, le DNS est uniquement utilisé pour permettre au système côté client de trouver l'adresse IP de la partie serveur de l'URL. Tout le reste est géré par d'autres protocoles.

Helvick
la source
3

Si vous pouvez accéder à une machine Linux, vous pouvez exécuter la commande dig pour effectuer une recherche DNS. Cet utilitaire effectue une recherche et renvoie exactement ce que le serveur de noms répond. Par exemple:

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

Tout ce qui commence par la section "HEADER" correspond à ce qui est renvoyé par le serveur de noms. Je suppose que c'est ce que vous appelez le format de texte, car ce n'est pas le format du paquet mais le texte qui est renvoyé.

Paul Kroon
la source