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>