您的计算机上有一个DNS服务器列表,它可以查询更多信息。在Unix或linux系统上,此文件存储在中/etc/resolv.conf
。在Windows中,可以在您的网络设置中对其进行配置。通常,您的DNS服务器将由您的DHCP服务器提供,可能还包括其他设置,例如默认域,代理服务器等。
您使用的DNS服务器的位置无关紧要。只要您的计算机具有IP地址和有效的默认路由(即您可以ping
使用DNS服务器),您就应该能够进行DNS查询。
DNS服务器不必知道“所有”域。他们只需要知道谁是“权威”,它就可以从一组“根”服务器那里学到。每个DNS服务器都有一个“根”服务器列表,并且该列表很少更改。在我的一台DNS服务器上,配置了18台根服务器,两年前我安装DNS服务器时就进行了此配置,如果此后根服务器的列表发生了变化,那么我可以访问的根服务器数量就足够了注意到了。
当我的DNS服务器被要求解析一个未知的域时,它会向根服务器进行查询,以找出对该域具有权威性的其他DNS服务器。它得到的响应可能包含其他“ NS”记录,并标记为非权威,在这种情况下,我的DNS服务器知道它必须“遵循链”并向新服务器进行新查询。最终,它找到了提供权威信息的DNS服务器,并且可以进行查询,而不仅仅是NS记录。A(地址)和MX(邮件交换)当然是最常见的两种。
每个TLD(顶级域),例如COM,NET,ORG,CA,UK等,都维护自己的子域注册表。(“子域”是另一个域内的任何域,因此“ example.com”是“ com”内的子域,“ com”甚至是“。”即“根”内的子域。)每个注册表的规则仅适用于它所管理的TLD -也就是说,每个国家/地区代码TLD都有一套完全不同的标准,“通用” TLD由具有不同政策的不同组织管理。但是他们都为自己的TLD维护DNS服务器,您可以在命令行中使用基本的DNS查询工具查看这些DNS服务器:
[ghoti@pc ~]$ host -t ns ca.
ca name server c.ca-servers.ca.
ca name server e.ca-servers.ca.
ca name server z.ca-servers.ca.
ca name server a.ca-servers.ca.
ca name server f.ca-servers.ca.
ca name server sns-pb.isc.org.
ca name server j.ca-servers.ca.
ca name server k.ca-servers.ca.
ca name server tld.isc-sns.net.
ca name server l.ca-servers.ca.
[ghoti@pc ~]$ host -t ns info
info name server c0.info.afilias-nst.info.
info name server d0.info.afilias-nst.org.
info name server b2.info.afilias-nst.org.
info name server b0.info.afilias-nst.org.
info name server a2.info.afilias-nst.info.
info name server a0.info.afilias-nst.info.
[ghoti@pc ~]$
当您从注册商那里购买域名时(其中有很多),该注册商会将有关该域名的信息提交给注册管理机构(每个TLD中只有一个)。每个注册机构都有责任维护其TLD中已注册域的列表,并维护将此信息提供给其他服务器的DNS服务器。