获取顶级域名DNS服务器IP地址

3
我们知道DNS的工作方式是递归地检索域的后缀。例如,对于www.google.com,它会检索com的名称服务器并获得其IP地址,然后使用该名称服务器检索google.com...
获取名称服务器的IP地址是这个过程中的关键部分。如果我们执行dig google.com,这就是结果。
We can see from this code snippet that the IP addresses for Google.com are listed in the ANSWER SECTION and the nameservers are listed in the AUTHORITY SECTION of the response. The IP address for ns2.google.com is also included in the ADDITIONAL SECTION. However, if we use the "dig com" command, we receive a different response.

; <<>> DiG 9.6.0-APPLE-P2 <<>> com. ;; 全局选项: +cmd ;; 收到回答: ;; ->>报头<<- 操作码: 查询, 状态: NOERROR, ID: 50809 ;; 标志: qr rd ra; 查询: 1, 回答: 0, 授权服务器: 1, 附加信息: 0

;; 问题部分: ;com. IN A

;; 授权部分: com. 900 IN SOA a.gtld-servers.net. nstld.verisign-grs.com. > 1369263918 1800 900 604800 86400

;; 查询时间: 17 毫秒 ;; 服务器: ..*.#53(.*..) ;; 当: Wed May 22 16:05:48 2013 ;; 消息大小 rcvd: 94

这段代码中并没有显示com域名服务器的IP地址。那么我的问题是,递归器如何知道TLD域名服务器(如,com)的IP地址?

2个回答

5
快速回答:您请求TLD(顶级域名) comA记录,但没有得到任何答案。这是正常的,因为com没有A记录!请注意,在您的输出摘录中,类型为A
;; QUESTION SECTION: 
;com. IN A

话虽如此,递归解析器发现顶级域名服务器的地址方式与发现其他服务器的地址方式相同:

  • 他们可以将其直接解析为名称。例如,“com”的一个名称服务器是“a.gtld-servers.net”。该名称可以通过正常方式解析(通过根和“net”和“gtld-servers.net”)。
  • 它们可能作为附加记录(附加部分中的记录)与其他查询的答案一起提供。在存在引导问题时,这尤其重要(例如,“example.com”的名称服务器是“ns.example.com”,除非您已经知道“example.com”的名称服务器,否则显然无法解析它)。

1
你可以补充一下,OP想要的记录类型是NS。如果他查找“com.”的NS记录,他应该能得到他想要的答案。 - Alex D
请返回完整列表的@AlexD或ANY - user.dz
1
@user.dz “或者 ANY 获取完整列表”绝对不行。这是递归名称服务器使用的,从来没有意味着获取全部,尽管很多人错误地认为它可以做到。而且现在已被完全弃用,请参见 RFC 8482。 - Patrick Mevzek

0
所以我的问题是解析器如何知道顶级域名服务器(例如.com)的IP地址?
解析器服务器需要加载“提示”(根名称服务器)。 这些通常在配置中的某个地方添加。
这里有一个在线列表:https://www.iana.org/domains/root/servers

这将提供根域名服务器的名称和IP地址列表,而不是顶级域名服务器。 (问题中的措辞可能含糊不清)。 根域名服务器将提供有关TLD域名服务器的信息。 - Patrick Mevzek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接