4.2. Recursive Resolvers (递归解析器)
无论递归解析器是否了解 SVCB, 用于未知 RR 类型 [RFC3597] 的正常响应构建过程都会生成响应的应答 (Answer) 段。了解 SVCB 的递归解析器应该 (SHOULD) 通过将额外的有用信息合并到响应的附加段中来帮助客户端以最小的总体延迟执行第 3 节中的过程, 如下所示:
-
合并 SVCB 解析的结果。如果已达到递归解析器的本地链长度限制 (可能与客户端的限制不同), 则终止。
-
如果任何已解析的 SVCB 记录处于 AliasMode, 随机选择其中一个, 并为其 TargetName 解析 SVCB、A 和 AAAA 记录。
-
如果解析了任何 SVCB 记录, 转到步骤 1。
-
否则, 合并 A 和 AAAA 解析的结果, 然后终止。
-
-
所有已解析的 SVCB 记录都处于 ServiceMode。为每个 TargetName (或如果 TargetName 为 "." 则为所有者名称) 解析 A 和 AAAA 查询, 合并所有结果, 然后终止。
在此过程中, "resolve (解析)" 表示解析器的普通递归解析过程, 就像处理该 RRset 的查询一样。这包括遵循解析器通常会遵循的任何别名 (例如 CNAME、DNAME [DNAME])。获取附加记录时的错误或异常可以 (MAY) 导致此过程终止, 但其本身绝对不能 (MUST NOT) 导致解析器发送失败响应。
有关递归解析器实施以减轻循环的附加保护措施, 请参见第 2.4.2 节。
有关此过程的可能优化, 请参见第 5.2 节。