我管理的 Web 服务器运行的是 Ubuntu 14.04,并配置了双栈 - ipv6 和 ipv4。据我了解,ipv6 连接具有第一优先级,之后应回退到 ipv4。
奇怪的是,检查 Apache 服务器日志时,我可以看到我的办公室桌面(支持 ipv6)交替使用这两种协议进行连接。前一分钟它使用 ipv6,下一分钟它使用 ipv4,似乎毫无理由地选择其中一种。
这里没有明显的问题 - 我只是想知道当我所知道的没有任何变化时,哪些因素导致一种协议或另一种协议在不同时间被使用?
答案1
现代网络浏览器不遵循IPv6 优先的一般规则因为如果客户破碎的IPv6 连接。他们使用一种叫做“快乐眼球”的算法,(RFC 6555)尝试两个都IPv6 和 IPv4 几乎同时进行,中间有短暂的延迟,然后使用最先收到响应的连接,丢弃另一个。该算法旨在解决客户端有破碎的IPv6 连接。
当使用 Happy Eyeballs 时,看到从同一主机到您的服务器的 IPv6 和 IPv4 连接是很正常的。