Frage Wie sieht eine DNS-Anfrage aus?


Ich habe gesehen, wie die Textdarstellung einer HTTP-Anfrage aussieht, aber wie sieht eine DNS-Anfrage aus? Wo in den Daten ist der Ort der URL, die Sie suchen? Wie wird die Antwort formatiert?


29
2017-08-22 06:24


Ursprung


Ihre beste Wette wäre, wireshark herunterladen und erfassen Sie die Pakete, die Sie ein vollständiges Bild von dem, was passiert, wenn eine DNS-Anfrage gemacht wird. - mrdenny
scheint wie eine Hausaufgabenfrage - Jimsmithkka
@mydenny - Nein, die beste Wette wäre, das zu tun mit einer Kopie von RFC1035 zur Hand. Wireshark gibt Ihnen nicht das "vollständige" Bild, es kann Ihnen immer nur zeigen, wie die einzelnen Pakete aussehen, die Sie gesehen haben. - Alnitak
@ Jim-Es ist nicht @ mrdenny-Ich habe Wireshark verwendet und weiß nicht, wie die rohe Anfrage in das übersetzt, was ich sende. - AMWJ


Antworten:


Dies ist ein Rohdump von Wireshark einer DNS-Abfrage.

Der DNS-Teil beginnt mit 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... ..      

Und hier ist der Zusammenbruch:

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)

Und die Antwort, wieder ab 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         

Nervenzusammenbruch:

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

Bearbeiten:

Beachten Sie, dass, wenn Ihre eigentliche Frage lautet "Wie schreibe ich einen DNS-Server?", Dann gibt es zwei geeignete Antworten:

  • Tun Sie es nicht, verwenden Sie einen vorhandenen, z. binden oder Dnsmasq
  • Lies das Spez

Bearbeiten (2):

Die Anfrage wurde mit gesendet host auf einer Linux-Box:

host www.google.com

Wenn Sie unter Windows sind, können Sie verwenden nslookup

nslookup www.google.com

38
2017-08-22 07:03



Keine Kabelverfolgung ohne Bezug auf die reale Spezifikation. Weit Zu viele DNS-Interop-Probleme wurden von Leuten verursacht, die glauben, dass sie aus einer Kabelspur zurückentwickeln können und subtile Nuancen vermissen. In jedem Fall ist dieser Speicherauszug nicht ausreichend - er zeigt nicht, wie Labels und RRs codiert sind. - Alnitak
@Alnitak: Ich habe die Frage wie folgt gelesen: "Was ist ein Beispiel für eine DNS-Anfrage / -Antwort", anstatt wie alle möglichen Anfragen aussehen. In dem Fall aktualisiert, dass das nicht stimmt. - ngoozeff
Wie hast du die Anfrage gesendet, um das zu bekommen? - AMWJ
Ich würde gerne wissen, ob URL-Parameter, wie sie in Browsern verwendet werden, ebenfalls gesendet werden, oder ist es nur der Domainname? Also für diese Frage ist /questions/173187/what-does-a-dns-request-look-like in der Anfrage enthalten? - SPRBRN
@SPRBRN DNS behandelt nicht URLs, nur Domain-Namen. - Håkan Lindqvist


Das Layout der DNS-Anfragedaten ist in beschrieben RFC 1035. Ich denke, es ist ein wenig sinnlos, den Text hier zu kopieren ...


8
2017-08-22 07:04





DNS-Abfragen und -Antworten werden am besten mit einem Protokollanalysator untersucht - Wireshark ist ein gutes plattformübergreifendes Werkzeug, das die Anfragen und Antworten in ihren verschiedenen Teilen erfassen und dekonstruieren kann. Es gibt eine nette Einführung in die Struktur von DNS Requests und Responses bei Firewall.cx hier.

DNS-Anfragen enthalten Fragen, die einen Namen (oder ein etwas willkürliches Textfeld) und einen Datensatztyp angeben. Der Inhalt der Antwort hängt vom Typ ab. Die meisten Anfragen sind einfache direkte Nachschlagevorgänge eines Servernamens, der nach einer IP-Adresse als Antwort (Typ A) sucht, aber einige werden nach weiteren Informationen zu Nameservern (Typ NS), Mailaufzeichnungen (Typ MX) und anderen Diensten (Typ SRV, der Namen, Ports, Gewichte und Prioritäten zurückgibt. DNS-Antworten enthalten Antworten auf diese Fragen, möglicherweise mehrere, wenn die Anfrage dies erfordert und nicht immer nur IP-Adressen sind.

Eine weitere Klarstellung - DNS löst URLs nicht auf - in den meisten Szenarien mit URLs DNS wird nur verwendet, um dem clientseitigen System zu ermöglichen, die IP-Adresse des Serverteils der URL zu finden, alles andere wird von anderen Protokollen behandelt.


4
2017-08-22 07:20





Wenn Sie auf einen Linux-Rechner zugreifen können, können Sie das ausführen graben Befehl, um eine DNS-Suche durchzuführen. Dieses Dienstprogramm führt eine Suche durch und gibt genau zurück, worauf der Nameserver antwortet. Zum Beispiel:

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

Alles, was mit dem Abschnitt "HEADER" beginnt, wird vom Nameserver zurückgegeben. Ich nehme an, dass dies das ist, was Sie als Textformat bezeichnen, da dies nicht das Format des eigentlichen Pakets ist, sondern der Text, der zurückgegeben wird.


1
2017-08-22 13:24