DNS请求是什么样的?


32

我已经看到HTTP请求的文本表示是什么,但是DNS请求是什么样的?您要查找的URL的位置在数据中的何处?另外,响应的格式如何?


3
最好的选择是下载wireshark并捕获数据包,以获取有关发出DNS请求时所发生情况的全貌。
mrdenny

1
似乎是一个作业问题
Jimsmithkka,2010年

2
@mydenny-不,最好的选择是拿一份RFC1035副本。Wireshark不会给您“完整”的图片,它只能向您显示您看到的特定数据包的外观。
Alnitak 2010年

@Jim-不是@mrdenny-我用过Wireshark,不知道原始请求如何转换为我要发送的内容。
AMWJ '08年

Answers:


40

这是来自DNS查询的Wireshark的原始转储。

DNS部分以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... ..      

这是细分:

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)

再次从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         

分解:

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

编辑:

请注意,如果您真正的问题是“如何编写DNS服务器?”,那么有两个适当的答案:

编辑(2):

该请求是host在Linux机器上使用发送的:

host www.google.com

如果您使用的是Windows,则可以使用 nslookup

nslookup www.google.com

2
在不参考实际规格的情况下,请勿更改导线走线。 远东互操作性问题太多DNS已被人相信他们可以扭转从金属线轨迹工程师,缺少细微的差别造成的。无论如何,这种转储是不够的-它没有演示标签和RR的编码方式。
Alnitak

7
@Alnitak:我读的问题是“什么是DNS请求/响应的示例”,而不是所有可能的请求是什么样的。更新,以防不正确。
ngoozeff

您如何发送请求以获取此请求?
AMWJ

1
我想知道是否也通过浏览器发送了URL参数,还是仅仅是域名?那么对于这个问题,是否/questions/173187/what-does-a-dns-request-look-like包含在请求中?
SPRBRN 2014年

1
@SPRBRN DNS不处理URL,仅处理域名。
霍坎·林德奎斯特


5

使用协议分析器可以最好地查看DNS查询和响应-Wireshark是一个很好的跨平台工具,可以捕获并将请求和响应分解为各个部分。在Firewall.cx上可以很好地介绍DNS请求和响应的结构。

DNS请求包含指定名称(或可能是任意文本字段)和记录类型的问题-响应的内容将根据类型而有所不同。大多数请求是对服务器名称的简单直接查找,以查找响应中的ip地址(类型A),但有些请求将在名称服务器本身(类型NS),邮件记录(类型MX)和其他服务(类型)上查找更多信息。将返回名称,端口,权重和优先级的SRV。DNS响应包含对这些问题的答案,如果请求要求的话,可能不止一个,而且不总是IP地址。

另一个说明-DNS无法解析URL-在大多数涉及URL的情况下,DNS仅用于使客户端系统能够找到URL服务器部分的ip地址,其他所有操作均由其他协议处理。


3

如果可以进入Linux机器,则可以运行dig命令执行DNS查找。该实用程序执行查找并精确返回名称服务器响应的内容。例如:

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

从“ HEADER”部分开始的所有内容都是从名称服务器返回的内容。我假设这就是您所指的文本格式,因为这不是实际数据包的格式,而是返回的文本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.