跳到主要内容

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] 中的描述解释.