在对 bgsu.edu 执行 nslookup 时运行网络捕获时,我注意到我的 DNS 服务器没有查询 bgsu.edu 的 SOA 记录。这是我在捕获中看到的操作顺序:
我的 DNS 服务器向 bgsu.edu 的根提示服务器之一发出 A 记录查询。
根提示服务器返回 gTLD 服务器的 NS 记录列表。
我的 DNS 服务器向 bgsu.edu 的其中一个 gTLD 服务器发出 A 记录查询。
gTLD 服务器返回 bgsu.edu 的 NS 记录列表。
我的 DNS 服务器向在步骤 4 中返回的 bgsu.edu 名称服务器之一发出 A 记录查询。
相关域的名称服务器返回 bgsu.edu 的 A 记录信息。
所以我的问题是:我的 DNS 服务器是否不需要先查询相关域的 SOA 记录?如果不是,那么 SOA 记录究竟是如何使用的?哪些名称服务器查询 SOA 记录?gTLD 服务器是否查询 SOA 记录,因此在我的捕获中没有看到这一点?我的理解是 SOA 持有 NS 记录的列表,那么 SOA 不应该是查询的第一条记录吗?
NS 服务器不是 SOA 记录的一部分。SOA 记录和我从RFC 1035 (3.3.13)中引用:
SOA 记录中的字段是:
因此,除此之外,正在发生的事情是这样的:
SOA 记录在传输过程中使用(Master 到 Slave/Stub)。Master 有指向它的 SOA 记录。
Master 也会有一个 NS 记录,表明它拥有该区域的权威副本。
从属服务器也将具有权威副本(并且通常具有 NS 记录,因为这些记录由更高级别的服务器在递归查询中返回,但不一定)。
该
SOA
记录仅用于:AXFR
) 或增量更改 (IXFR
)MINIMUM
字段,这并不意味着“最小 TTL 了@.正常的递归解析器永远不会明确要求
SOA
记录,但更多时候它会出现在AUTHORITY
权威服务器的响应部分中。即使那样,这也主要只用于上面的#3。普通的 DNS 客户端根本不需要 SOA。