跳到主要内容

1. 引言 (Introduction)

现代 Internet 上运行的许多 communication protocols 使用 hostnames. 这些 hostnames 通常解析为多个 IP addresses, 每个地址可能具有不同的性能和连接性特征. 由于特定 addresses 或 address families (IPv4 或 IPv6) 可能在网络上被阻断, 损坏或并非最优, 因此并行尝试多个 connections 的 clients 有机会更快建立连接. 本文档规定了用于减少这种用户可见延迟的算法要求, 并提供一个示例算法.

本文档定义 "Happy Eyeballs" 的算法, 这是一种减少 dual-stack hosts 上用户可见延迟的技术. 该定义废止 RFC 6555 中的原始描述. 由于这种方法已经大规模部署并测量多年, 因此可以细化算法规范, 以提高其可靠性和普遍适用性.

Happy Eyeballs algorithm 通过对解析得到的 addresses 进行 connection racing, 并分为多个阶段, 在优先使用 IPv6 的同时尽可能避免给用户带来延迟. 本文档讨论在 dual-stack client 上启动连接时如何处理 DNS queries, 如何创建要尝试连接的 destination addresses 的有序列表, 以及如何对 connection attempts 进行竞速.

1.1. 要求语言 (Requirements Language)

本文档中的关键词 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" 和 "OPTIONAL", 当且仅当它们以此处所示的全大写形式出现时, 应按 BCP 14 [RFC2119] [RFC8174] 中的描述解释.