跳到主要内容

7.3. "ipv4hint" 和 "ipv6hint"

"ipv4hint" 和 "ipv6hint" 键传递客户端可以用来访问服务的 IP 地址。如果 TargetName 的 A 和 AAAA 记录在本地可用,客户端应忽略这些提示。否则,客户端应按照第 3 节对 TargetName 执行 A 和/或 AAAA 查询,并且客户端应在未来的连接中使用这些响应中的 IP 地址。客户端可以选择终止使用提示中地址的任何连接,而改用响应 TargetName 查询的地址。不使用 A 和/或 AAAA 响应地址可能会对负载均衡或其他地理感知功能产生负面影响,从而降低客户端性能。

呈现值应为一个或多个适当地址族的标准文本格式 IP 地址的逗号分隔列表。为了实现更简单的解析,此 SvcParamValue 不得包含转义序列。

每个参数的线路格式是网络字节序中的 IP 地址序列(对于相应的地址族)。与 A 或 AAAA RRset 一样,地址列表表示无序集合,客户端应以随机顺序选择要使用的地址。空地址列表无效。

在选择使用 IPv4 还是 IPv6 地址时,客户端可以使用诸如 Happy Eyeballs 之类的方法。当仅存在"ipv4hint"时,NAT64 客户端可以按照 RFC 7050 中规定的方式合成 IPv6 地址,或者忽略"ipv4hint"键并等待 AAAA 解析(第 3 节)。为了获得最佳性能,服务器运营商应在包含"ipv4hint"参数时也包含"ipv6hint"参数。

这些参数旨在最小化当递归解析器不符合第 4 节中的要求时的额外连接延迟,并且如果大多数客户端使用符合要求的递归解析器,则不应包含这些参数。当 TargetName 是服务名称或所有者名称(可以写为".")时,服务器运营商不应包含这些提示,因为它们不太可能带来任何性能优势。