出于好奇,我正在检查Wireshark DNS数据包。我可以看到主机发出了DNS查询,然后是DNS服务器发出了DNS响应。一切都如预期。
但是,如果进一步检查查询,则可以看到服务器还发送了NS(权威名称服务器)。我的问题是:为什么?
作为主机,我只关心IP。这是DNS的重点,它将名称解析为IP地址。
为什么作为主机,我需要NS信息?
出于好奇,我正在检查Wireshark DNS数据包。我可以看到主机发出了DNS查询,然后是DNS服务器发出了DNS响应。一切都如预期。
但是,如果进一步检查查询,则可以看到服务器还发送了NS(权威名称服务器)。我的问题是:为什么?
作为主机,我只关心IP。这是DNS的重点,它将名称解析为IP地址。
为什么作为主机,我需要NS信息?
Answers:
传统名称服务器不发送的查询的短的响应,但一个RFC 1034 - 1035兼容的完整的响应,其中包括一个包含资源记录的权威节点向权威名称服务器(一个或多个)。
原因可能是因为DNS具有分布式和委派的性质,当时在响应中包含“真相来源”似乎是一个好主意。
编辑:顺便说一句:发送权限部分符合RFC,但并非所有查询响应都必须包含。
在BIND中,可以使用minimal-responses yes | no;
伪指令来调整此行为,该伪指令的默认值为no
,并且查询响应的Authority和Additional部分将始终完全填充。
默认情况下,其他名称服务器CloudFlare,AWS Route 53,Infoblocks以及可能其他名称服务器将始终发送此类最小响应。Google的公共解析器将在Cloudflare可用时返回一个Authority部分。
我认为该传统的起源既包括授权部分,又包括实际的查询响应,其根源于现在已过时的RFC882 15-16页的(伪)代码中。
If the name server is not authoritative, the code copies the RRs for a closer name server into the response. The last section of the code copies all relevant RRs into the response.