2011-03-05 92 views
1

我正在做一個家庭作業,基本上要求我們解析DNS響應以獲取IP地址等。問題在於教授詳細告訴了我們DNS服務器的響應情況,但我不知道該發送什麼服務器。我的第一個嘗試是netcat <ip address of local name server> 53,只需輸入www.google.com並按回車並尋找響應,但我沒有收到任何迴應。什麼是DNS會話的解析?

誰能給我描述什麼是DNS查詢的樣子(例如,有多少字節被允許用於查詢的每個部分)?

+0

我敢打賭,使用您喜歡的搜索引擎將是相當高效。 – 2011-03-05 01:33:28

+0

我已經通過谷歌搜索已經走了,但他們所有的答案都在C使用預定義的DNS功能做我們 – ThatQuestionGuy 2011-03-05 01:44:54

回答

5
  1. 下載Wireshark的,並運行它
  2. 做一些事情,使用DNS(請確保您不使用緩存的主機名)
  3. 去翻被捕獲Wireshark的數據包。
+5

-1推薦使用逆向工程作爲實現標準化協議併發布規範的一種方法(RFC 1035) – 2011-03-05 02:00:52

+2

我沒有時間仔細閱讀RFC,Wireshark非常感謝。 – ThatQuestionGuy 2011-03-05 02:11:21

+1

兩者都是(閱讀RFP並查看數據包)。你看過WireShark嗎?不得不對其進行逆向工程 - 它爲你解析 - 比閱讀代碼或RFP更容易。看完之後,你可以更好地理解RFP。 – 2011-03-05 23:22:24

4

這應該由RFC 1034第3.7節涵蓋,但我只是瞥了一眼,更別提真正閱讀的東西了。

+0

哈哈ietf耶;) – 2011-03-05 01:55:54

+0

我相信它是1035你想要的協議。 – 2011-03-05 02:01:40

+1

不也忘了看看1101,1183,1348,1876年,1982年,2065,2181 ,2308,2535,4033,4034,4035,4343,4592,5936是更新RFC HTTP://tools.ietf .org/html/rfc1034和1995年,1996年,2136年,2137年,2845年,3425年,3658年,5966年http://tools.ietf.org/html/rfc1035 Wireshark是一個寶貴的工具,看看究竟是怎麼回事。 – jfs 2011-03-05 02:10:43

0

這並不直接回答你的問題,但嘗試的命令行運行NSLOOKUP和查看可用的選項。你可以命令它來查詢具體項目,如MX記錄等

但如果你更感興趣的是協議本身的樣子?這個RFC有比你想象的更多的信息:http://tools.ietf.org/html/rfc1035

1

DNS查詢的基本形狀是一個很短的頭部,基本上是所有固定的字節值,接着是如果你取名字,用一個點(.),然後用1-63範圍內的一個字節替換每個點,表示名稱的下一個段到下一個點的長度,後面跟着一些更多的固定值字節。只要你所做的只是基本的地址查找,而沒有像區域傳輸那樣的花哨,這就是你需要了解的DNS協議的全部內容。

對於頭部的細節等領域,閱讀RFC 1035或者只是從一個數據包嗅探器轉儲複製它們。唯一需要改變的是查詢ID(它應該是隨機的,以避免對你的程序進行微不足道的欺騙攻擊),也可能是RR類型(例如,如果你需要查詢IPv6(AAAA)或反向DNS( PTR)除了記錄只是A.