2017-03-05 46 views
0

如何計算挖掘查詢ID或是隨機的?dig查詢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

與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服務器的'答案'中。如果你瀏覽technet的文章,在返回和使用的所有值方面都令人驚訝地完成,你會發現上面最有可能是'id'的含義,但如果不是,希望有人會糾正這一點。

Zytrax更清晰,查詢ID由發出請求的東西生成,並且是一個16位數字。所以dig會生成它,然後dns服務器將它發回,以確認實際上請求和答案是匹配的。 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再次發生了變化,這意味着它很可能實際上是一個隨機響應ID,它完全符合technet dns語法文章所述的內容,有助於將查詢綁定到響應,因此它知道它獲得了正確的答案。顯然不一定是那麼大的一個數字,只是大到足以確保一個請求匹配一個答案。

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