NS记录的要点是告诉客户端哪个名称服务器将确切知道域名的实际IP地址.因此,例如,以下查询告诉您,如果您想获得有关facebook.com的权威答案,您必须询问a.ns.facebook.com:
> dig ns facebook.com 19:58:27 ; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> ns facebook.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY,status: NOERROR,id: 32063 ;; flags: qr rd ra; QUERY: 1,ANSWER: 2,AUTHORITY: 0,ADDITIONAL: 0 ;; QUESTION SECTION: ;facebook.com. IN NS ;; ANSWER SECTION: facebook.com. 65000 IN NS a.ns.facebook.com. facebook.com. 65000 IN NS b.ns.facebook.com. ;; Query time: 13 msec ;; SERVER: 127.0.1.1#53(127.0.1.1) ;; WHEN: Sun Mar 20 19:58:40 CET 2016 ;; MSG SIZE rcvd: 65
这看起来很酷且很有用,但我想知道为什么ANSWER部分包含主机名而不是权威来源的IP?客户端获取权威来源的实际IP地址而不是主机名不是更容易吗?
我的意思是,如果它获得主机名,它将不得不进行另一个查询以将此主机名解析为IP,然后询问这个新的IP有关它正在寻找的初始facebook.com域.这不是效率低吗?
我有兴趣回答这些问题指出了一些解释这个问题的RFC中的一些段落.
解决方法
该问题的解决方案是DNS粘合记录,在
What is a glue record?中描述.
“… Note that the class may not indicate the protocol family which should be used to communicate”
with the host,although it is typically a strong hint.”
返回IP地址等于说明可以联系主机的方法,这违反了RFC.