首先,这个关于 DNS 如何工作的解释正确吗?
当我们访问一个网站(例如 www.example.com)时,我们会进行查找,将域名转换为 IP 地址。因此,我们的计算机首先查看其内部 DNS,查看主机名是否存在。如果主机名不存在,它将转到根名称服务器 (.)。现在,根名称服务器收到请求并告诉我们请求位于 TLD 服务器上,并提供 TLD 服务器的 IP 地址。现在,当我们查询 TLD 服务器时,TLD 服务器包含网站的扩展名,如 .com、.org、.net 等。TLD 服务器将我们重定向到 com 服务器,在本例中,我们获得了 com 服务器的 IP 地址。当我们查询 com 服务器时,它们的列表中有“example”,并将我们重定向到 example 的 DNS 服务器。当我们查询 example.com 的服务器时,我们会获得一个 IP 地址并访问互联网。
我的问题是,例如 .com,权威名称服务器应该是 com 服务器,对吗?因为它是向我们提供信息的服务器?
答案1
我的问题是,例如.com,权威名称服务器应该是com服务器,对吗?
不,让它dig
:
# dig example.com SOA
;; ANSWER SECTION:
example.com. 3600 IN SOA sns.dns.icann.org. noc.dns.icann.org. 2018080109 7200 3600 1209600 3600
;; AUTHORITY SECTION:
example.com. 86400 IN NS a.iana-servers.net.
example.com. 86400 IN NS b.iana-servers.net.
权威名称服务器example.com
是:
a.iana-servers.net.
b.iana-servers.net.
这些服务器持有以下 DNS 记录:example.com
现在我们可以直接查询它们:
dig @a.iana-servers.net example.com A
;; ANSWER SECTION:
example.com. 86400 IN A 93.184.216.34
DNS解析器拆解完整限定域名 (FQDN)(完全合格域名)从右到左。
第一个查询将转到根 DNS 服务器,询问谁是顶级域名为.com
,然后解析器查询特定顶级域名来自example.com
这些服务器。
# dnstracer -4 -r1 -s. example.com
Tracing to example.com[a] via A.ROOT-SERVERS.NET, maximum of 1 retries
A.ROOT-SERVERS.NET [.] (198.41.0.4)
|\___ d.gtld-servers.net [com] (192.31.80.30)
| |\___ b.iana-servers.net [example.com] (2001:0500:008d:0000:0000:0000:0000:0053) Not queried
| |\___ b.iana-servers.net [example.com] (199.43.133.53) Got authoritative answer
| |\___ a.iana-servers.net [example.com] (2001:0500:008f:0000:0000:0000:0000:0053) Not queried
| \___ a.iana-servers.net [example.com] (199.43.135.53) Got authoritative answer
现在让我们尝试另一个域名.com
顶级域名:
# dig google.com SOA
;; AUTHORITY SECTION:
google.com. 345600 IN NS ns3.google.com.
google.com. 345600 IN NS ns4.google.com.
google.com. 345600 IN NS ns1.google.com.
google.com. 345600 IN NS ns2.google.com.
我们将看到,权威域名服务器超低密度脂蛋白 google.com
现在不同了。
因为它是向我们提供信息的人?
不是,它是权威 DNS 服务器链。
根 DNS 服务器仅包含顶级区域,也称为顶级域名例如.com
,.net
当解析器获得负责的权威 DNS 服务器时顶级域名,解析器查询特定区域
超低密度脂蛋白(在我们的例子中是二级域名example
),并且当它找到权威 DNS 服务器时超低密度脂蛋白它向该服务器查询完整限定域名 (FQDN)(完全限定域名)例如 www.example.com
通常人们使用互联网提供商的 DNS 服务器来保存缓存的已解析 DNS 记录。此类 DNS 服务器称为转发 DNS 服务器。如果它们在缓存中有记录,它们会立即回复客户端,而无需从根开始打扰所有中间服务器。如果此类转发 DNS 服务器在缓存中没有记录(或 DNS 记录已过期),则转发器将再次解析并缓存结果。客户端的 DNS 查询以递归方式发送,这意味着客户端应该从 DNS 提供商处收到错误或已解析的记录。客户端不应该自己查询中间 DNS 服务器链,转发 DNS 服务器的工作是为客户端请求和缓存结果提供服务。这样,转发器可以减少中间 DNS 服务器的负载并尽快回复客户端,因为提供商的 DNS 服务器更靠近客户端。
(顺便说一句,公共 Google 的 DNS 服务器也是转发器。)
DNS 记录具有域所有者在权威服务器中设置的参数 TTL(生存时间),因此如果您预计您的 IP 地址会经常更改,则可以设置 TTL = 5 分钟,或者如果不希望他的 DNS 服务器受到过于频繁的干扰,那么 TTL 可以设置为几天。
答案2
大部分都是正确的,但是您忽略了至关重要的缓存。
第一次设置简单的仅缓存服务器时,它所知道的唯一记录是root hints
- 这指向根服务器。如果您请求,example.com
根服务器将告诉在哪个服务器中查询记录.com
- 这些是权威服务器。然后您的 DNS 服务器缓存此信息。然后它将向服务器询问.com
信息example.com
,它们将返回指向example.com
配置为在注册商数据库中使用的任何名称服务器的指针。此信息也被缓存。然后您的 DNS 服务器向名称服务器询问example.com
映射到您请求的名称的 IP - www.example.com 或任何其他名称。
现在,假设您请求example2.com
-.com
服务器信息已被缓存,因此您的 DNS 服务器不会打扰根服务器,而是直接进入服务器.com
,获取域的名称服务器信息example2.com
并对其进行查询。