Dns(Domain Name Server)即域名服務器,在網絡中承擔着將域名轉換爲ip地址的工作。在很多編程中都要用到這種技術,就是使用域名解析。這篇文章將說明這項技術。
通過Dns服務器,可以查詢很多地址,比如mail服務器地址,ftp服務器等等,我在這裏就以mail服務器爲例,並以java實現。
+---------------------+
| Header |
+---------------------+
| Question |
+---------------------+
| Answer |
+---------------------+
| Authority |
+---------------------+
| Additional |
+---------------------+
這個表是從rfc1035文檔中拷出來的,大致說明了dns包的格式。
Header
這個也是從rfc文檔中拷出來的,只是我將其頭部數字改成16進制了。
ID: 16位的一個標誌,用以驗證請求和回覆消息的匹配。就實用程序產生一個16位的隨機數。
QR: 1位數據表明這是一個請求,還是一個回覆(0爲請求,1爲恢復)。
Opcode: 4位的數據表示查詢的類型。
0 基本查找
1 反向查找
2 查詢服務器情況
3-15 保留
RD:(recursion desired)即是否以遞歸方式的查詢,RD=1爲遞歸。
RA:(Recursion Available)表示服務器是否支持遞歸方式查詢,只在回覆中有效。
QDCOUNT:16位數據表示要查詢的問題個數。
ANCOUNT:16位數據表示回覆結果的個數,只在回覆中有效。
其他幾個請參考rfc文檔,在這裏我們只用這些,並將其他參數設爲0。
Question
<script type="text/javascript"> window.open=NS_ActualOpen; </script>