Ich habe gesehen, wie die Textdarstellung einer HTTP-Anfrage aussieht, aber wie sieht eine DNS-Anfrage aus? Wo in den Daten befindet sich der Speicherort der URL, die Sie suchen? Wie ist die Antwort formatiert?
Ich habe gesehen, wie die Textdarstellung einer HTTP-Anfrage aussieht, aber wie sieht eine DNS-Anfrage aus? Wo in den Daten befindet sich der Speicherort der URL, die Sie suchen? Wie ist die Antwort formatiert?
Antworten:
Dies ist ein Raw-Dump 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 die Aufschlüsselung:
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:
Wenn Ihre eigentliche Frage lautet "Wie schreibe ich einen DNS-Server?", Gibt es zwei passende Antworten:
Bearbeiten (2):
Die Anfrage wurde unter Verwendung host
einer Linux-Box gesendet :
host www.google.com
Wenn Sie unter Windows arbeiten, können Sie verwenden nslookup
nslookup www.google.com
/questions/173187/what-does-a-dns-request-look-like
in der Anfrage enthalten?
Das Layout der DNS-Anforderungsdaten wird in RFC 1035 beschrieben . Ich finde es ein bisschen sinnlos, den Text hierher zu kopieren ...
DNS-Abfragen und -Antworten lassen sich am besten mit einem Protokollanalysator analysieren. Wireshark ist ein gutes plattformübergreifendes Tool, mit dem Anforderungen und Antworten in ihren verschiedenen Teilen erfasst und dekonstruiert werden können. Auf Firewall.cx finden Sie hier eine nette Einführung in die Struktur von DNS-Anfragen und -Antworten .
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. Bei den meisten Anfragen handelt es sich um einfache direkte Abfragen eines Servernamens nach einer IP-Adresse als Antwort (Typ A). Bei einigen werden jedoch weitere Informationen zu Nameservern (Typ NS), E-Mail-Einträgen (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 mehr als eine, wenn die Anforderung dies erfordert, und sind nicht immer nur IP-Adressen.
Eine weitere Klarstellung: DNS löst URLs nicht auf. In den meisten Szenarien mit URLs wird DNS nur verwendet, um dem clientseitigen System das Ermitteln der IP-Adresse des Serverteils der URL zu ermöglichen. Alles andere wird von anderen Protokollen behandelt.
Wenn Sie auf einen Linux-Computer zugreifen können, können Sie den Befehl dig ausführen, um eine DNS-Suche durchzuführen. Dieses Dienstprogramm führt eine Suche durch und gibt genau das zurück, worauf der Nameserver antwortet. Beispielsweise:
; <<>> 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, das ist das, was Sie als Textformat bezeichnen, da dies nicht das Format des tatsächlichen Pakets ist, sondern der zurückgegebene Text.