DNSリクエストはどのようなものですか?


32

HTTPリクエストのテキスト表現を見てきましたが、DNSリクエストはどのように見えますか?探しているURLの場所はデータのどこにありますか?また、応答はどのようにフォーマットされますか?


3
最善の策は、wiresharkをダウンロードしてパケットをキャプチャし、DNS要求が行われたときに何が起こるかを完全に把握できるようにすることです。
mrdenny

1
宿題の質問のようです
ジムスミッカ

2
@mydenny-いいえ、最善の策は、RFC1035のコピーを手に入れることです。Wiresharkは「完全な」画像を提供しません。見た特定のパケットがどのように見えるかを示すだけです。
アルニタック

@Jim-@mrdennyではありません-Wiresharkを使用しましたが、未加工のリクエストがどのように送信するものに変換されるかわかりません。
-AMWJ

回答:


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つの適切な答えがあることに注意してください。

  • それをしないでください、例えばbinddnsmasqなどの既存のものを使用してください
  • 仕様を読む

編集(2):

リクエストはhostLinuxボックスで送信されました:

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 14

1
@SPRBRN DNSはURLを処理せず、ドメイン名のみを処理します。
–HåkanLindqvist 14

7

DNS要求データのレイアウトは、RFC 1035で説明されています。ここにテキストをコピーするのは少し無意味だと思います...


5

DNSクエリと応答は、プロトコルアナライザーを使用して最もよく調べられます。Wiresharkは、要求と応答をキャプチャしてさまざまな部分に分解できる優れたクロスプラットフォームツールです。Firewall.cxの DNS Requests and Responsesの構造についての素晴らしい紹介があります

DNSリクエストには、名前(または、任意のテキストフィールド)とレコードタイプを指定する質問が含まれます-応答の内容は、タイプによって異なります。ほとんどの要求は、応答でIPアドレスを探すサーバー名の単純な直接ルックアップ(タイプA)ですが、一部はネームサーバー自体(タイプNS)、メールレコード(タイプMX)、およびその他のサービス(タイプ名前、ポート、重み、優先順位を返すSRV)。DNS応答には、これらの質問への回答が含まれます。要求で必要な場合は複数の回答が含まれ、常に単なるIPアドレスであるとは限りません。

もう1つの説明-DNSはURLを解決しない-URLを含むほとんどのシナリオでは、クライアント側システムがURLのサーバー部分のIPアドレスを見つけるためにのみDNSが使用され、他のすべては他のプロトコルによって処理されます。


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」セクションで始まるものはすべて、ネームサーバーから返されるものです。これは実際のパケットの形式ではなく、返されるテキストであるため、これがテキスト形式と呼んでいるものと想定しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.