2017-03-05 8 views
0

digクエリーIDはどのように計算されるのですか、それともランダムですか?dig query idはどのように機能しますか?

具体的

$ dig google.co.uk 

; <<>> DiG 9.11.0-P3 <<>> google.co.uk 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63375 

ID:63375 その意義は何ですか?それはランダムな場合、それのポイントは何ですか?


私がこれを書いている全理由は、正直なところ、Googleの詳細を見つけることができなかったからです。それで質問の質に対する謝罪。

+0

しかしそれはあなたの質問は、プログラミングの問題ではない、DNSトランザクションIDである - とoftopicここ – nos

+1

私は私のプログラムのいくつかの機能のために掘るを使用していますが、内のすべての項目に見ていませんでした実際にはプログラミングに直接関係していました。つまり、この出力はソフトウェアの解析結果です。だから、私にとっては、これはプログラミングにとって便利な質問でした。 – Lizardx

答えて

0

あなたのdigはdebian/gnu linux digデフォルト出力に比べて出力が非常に少ないようですが、これは混乱の原因かもしれませんが、とにかく尋ねるのは良い質問です。

https://technet.microsoft.com/en-us/library/dd197470(v=ws.10).aspx

Query Identifier (Transaction ID) 

Set to a unique number to enable the DNS client resolver to match the response to the query. 

この出力は、このタッチがより明確になります。ご覧のとおり、「ID」はDNSサーバーの「回答」にあります。そして、返され使用されたすべての値に関して驚くほど完璧なテクニック記事をスキャンすると、上記のことが 'id'の意味である可能性が高いことがわかります。

Zytraxはさらに明確です。クエリIDはリクエストを行うことによって生成され、16ビットの数値です。だからdigはそれを生成し、dnsサーバはそれをdigに返信して、実際に要求と回答が一致していることを確認します。 http://www.zytrax.com/books/dns/ch15/

Message ID 16 bit message ID supplied by the requestion (the questioner) and reflected back unchanged by the responder (answerer). Identifies the transaction. 

だからIDが何であるかだ、掘るが、この場合には、ランダムに生成。私はこれをテストしましたが、実際にはそうです。0と2の間の乱数は^ 16(65536)です。ちょうど5、10桁のリクエストで、私は500から62000の間の値を得ました。これはあなたが無作為化された番号生成から見ると予想されるものです。

dig google.co.uk 
; <<>> DiG 9.10.3-P4-Debian <<>> google.co.uk 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56947 
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 

;; OPT PSEUDOSECTION: 
; EDNS: version: 0, flags:; udp: 512 
;; QUESTION SECTION: 
;google.co.uk.   IN A 

;; ANSWER SECTION: 
google.co.uk.  300 IN A 172.217.6.35 

;; Query time: 34 msec 
;; SERVER: 68.87.76.178#53(68.87.76.178) 
;; WHEN: Sun Mar 05 10:59:13 PST 2017 
;; MSG SIZE rcvd: 57 

これはDebianのデフォルト設定です。

この説明が正しいと確かめるために、私は再度dig要求を実行しました。見て分かるように、IDは再び変更されました。つまり、実際には、テクニカルDNS構文の記事に記載されているものとまったく同じランダム化されたレスポンスIDであり、クエリをレスポンスにバインドするのに役立ちます。明らかに、1つの要求が1つの回答と一致することを保証するのに十分な大きさの数字である必要はありません。

dig google.co.uk 

; <<>> DiG 9.10.3-P4-Debian <<>> google.co.uk 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29674 
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 

;; OPT PSEUDOSECTION: 
; EDNS: version: 0, flags:; udp: 512 
;; QUESTION SECTION: 
;google.co.uk.   IN A 

;; ANSWER SECTION: 
google.co.uk.  260 IN A 172.217.6.35 

;; Query time: 12 msec 
;; SERVER: 68.87.76.178#53(68.87.76.178) 
;; WHEN: Sun Mar 05 11:05:04 PST 2017 
;; MSG SIZE rcvd: 57 
+0

私はクエリIDだけに関係していたので、残りの出力を削除しました。 (私の出力はあなたの最後のものでした)。明確化のためにありがとう! – Mark

+0

質問していただきありがとうございます。私はプログラムでこの出力を使用しますが、実際に構文を完全に読み取ったことはありませんでしたので、これを行うのは良い言い訳でした。 – Lizardx

関連する問題