2011-03-05 46 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.