能走这条路,不等于这次一定走它

你家附近有两条路。一条路刚刚有人走通过,并不表示你下一次出门也一定选它:目的地、出发时间和已经走到哪里,都可能不同。IPv6 能连通,而访问本站时使用 IPv4,也不矛盾。

在本站 IPv6 测试页,你可能看到“IPv6 连接”通过,同时“本站本次连接”显示 IPv4。准确的读法是:本轮确认了 IPv6 连通,但本站接口这一次看到的是 IPv4 地址。不能把这两句话合并成“IPv6 没有用”或“浏览器永远优先 IPv4”。

这里说的“有 IPv6”,首先指工具已经确认连通。若只是电脑设置里出现了一个 IPv6 地址,还要分清地址类型,不能直接当成互联网 IPv6 已可用;相关判断见第 8 章。下面主要讨论测试页已经有 IPv6 结果、本站这一项却仍是 IPv4 的情况。

三行结果,来自不同的检测请求

页面会分别检查 IPv4、IPv6,再请求本站自己的接口。接口就是接收请求并返回信息的窗口。前两项主要回答对应连接有没有得到结果,第三项根据本站接口返回的地址,识别它属于 IPv4 还是 IPv6。

表 10-1 三行分别回答什么问题
检测行这项在观察什么不能直接推断
IPv4 连接本轮是否确认 IPv4 连通,以及有没有取得地址所有网站都必须使用 IPv4
IPv6 连接本轮是否确认 IPv6 连通,以及有没有取得地址访问其他目标也一定使用 IPv6
本站本次连接本站接口这一趟请求所见地址的协议两种协议的速度排名或浏览器全局偏好

这不是让两个外部接口比赛,谁先返回就把谁设成“浏览器优先”。IPv6 接口成功与本站接口使用 IPv4,是两趟请求的观察。它们面对的目标不同,不能把前一趟的成功结果直接当成后一趟的选路要求。

模拟两趟不同请求:IPv6 检测请求确认连通,本站接口请求返回 IPv4 所见地址;并非两条线路的速度比赛 同一浏览器发起不同请求 IPv6 检测接口 本次确认 IPv6 连通 本站自己的接口 本次所见地址为 IPv4 两个观察可以同时成立 图中仅画出本章要对照的两项
图 10-1 模拟结果:不同请求各有观察,不能互相代替

同样,“本站本次连接”不是对整张网页全部资源逐个检查。它显示 IPv4,不能保证页面的每一张图片、每一个其他请求都使用 IPv4,更不能代表其他网站。

连接开始时,不只是看有没有 IPv6

访问一个域名,客户端需要先获得可连接的地址。DNS像查号台,通常用 A 记录提供 IPv4 地址,用 AAAA 记录提供 IPv6 地址。设备具备 IPv6 连接能力,不代表对每个目标、在每一次解析中,都一定拿到同样的候选地址。

拿到候选地址之后,还涉及源地址、目的地址的选择与连接尝试。系统有默认选择规则,应用也可能采用自己的策略。这里的“默认规则”不等于本站测试页读到了某个系统开关;仅看第三行,无法反推出这台设备的完整优先级配置。

为了减少等待,客户端可以使用 Happy Eyeballs,常译为“快乐眼球”:安排不同候选地址的连接尝试,让用户不必一直等一条迟迟没有成功的路径。它并不是所有浏览器都严格执行的“先等固定几百毫秒,再切换 IPv4”口诀。

因此,IPv4 被选中,可能涉及地址解析、地址排序、连接建立过程或其他策略。本站没有把这些过程逐项测出来。页面结果不能证明 IPv6 一定比 IPv4 慢,更不能说明慢了多少;连接建立的选择,也不能当作之后下载速度的比较。

重新检测,不一定重新建立连接

还有一个容易忽略的原因:浏览器可能沿用已经建立好的连接。连接复用可以理解为电话还没挂,就继续问下一个问题,不必每句话都重新拨号。网络协议允许在同一条连接上处理多个请求,具体是否复用取决于实际环境。

本站的“重新检测”会再次发送检测请求,但不会替浏览器强制关闭所有现有连接。如果这次本站请求继续使用原来的 IPv4 连接,第三行仍可能是 IPv4。这是一个需要核查的可能性,不能只凭显示不变就断定确实发生了连接复用。

也要分清网页缓存与连接复用。缓存是把已取得的内容留作后用;复用则是继续使用已有的通信连接。本工具的查询要求绕过浏览器的 HTTP 缓存取得结果,但这不等于每次都必须新建连接、重新选择协议。

所以,连续点击很多次“重新检测”,不能算作很多次相互独立的协议竞赛。刷新页面、新开标签页,也不能一概当作已清空连接。记录“多次仍显示 IPv4”有用,但它证明的是这些观察,而不是某条线路永远不会被选用。

哪些原因可以考虑,哪些还需要证据

表 10-2 可能因素与所需线索
可能因素可以继续核查什么两行结果本身证明不了什么
目标地址解析或候选地址不同当次解析结果、系统与浏览器的相关配置本站一定没有 IPv6 地址
路径或连接建立情况不同对应目标的连接诊断,而不是另一个接口的成功记录IPv6 的速度一定较差
已有连接被继续使用浏览器的连接记录,确认是否新建或复用每次重测都重新比较过两种协议
代理或受管理网络改变请求路径实际转发配置及管理员提供的诊断信息终端网卡一定只有 IPv4

如果请求经过中间转发,服务侧看到的协议也不一定能描述终端到目的地的每一段链路。不要因为网页显示 IPv4,就直接认定电脑本身没有 IPv6;也不要因为外部 IPv6 接口有结果,就假定本站请求必然经过同样的路径。

这张表列的是排查方向,不是故障清单。有些项目需要管理员或浏览器诊断记录才能确认。普通读者暂时没有这些信息,可以写“未核查”,不必为了补齐解释去修改 DNS、代理或系统策略。

怎样做一次有用的对照

  1. 先保存完整结果。记下时间、设备、浏览器、网络,以及 IPv4、IPv6、本站本次连接三行。IPv6 是取得地址还是只确认连通,也要分别记。
  2. 同条件重测。在同一设备、同一网络完成一次重测,观察 IPv6 是否持续有结果;不把同条件重测当作强制新建连接的实验。
  3. 只换一个条件。用同一设备上已有的另一款浏览器,或让同一设备切换网络后重新测试。每次只比较一项变化,不同时改系统和路由器设置。
  4. 按结果决定下一步。IPv6 持续有结果但本站用 IPv4,继续记录或针对具体访问问题求助;若 IPv6 已变为未知,再按第 9 章的排查顺序检查。

例如,“同一电脑和 Wi-Fi,浏览器甲的 IPv6 通过、本站用 IPv4,浏览器乙的 IPv6 通过、本站用 IPv6”,是一份模拟对照描述。它提示两种浏览器环境存在差异,却不能直接锁定为其中某个扩展、连接复用或全局优先级造成。

如果切换网络后结果改变,也先记下变化,不要直接说原网络“坏了”。IPv6 对某个接口成功、对另一个目标的连接选择不同,需要结合各自的请求理解。

需要处理的是具体问题,不是非得换成 IPv6

如果本站能正常打开、IPv6 检测也有结果,只是第三行显示 IPv4,这一现象本身不足以认定网络故障。测试页是观察工具,不会因为少了本站 IPv6 连接对应的分值,就要求你把网络改成只能用 IPv6。

如果你遇到的是某个应用连不上、访问经常中断,或有明确的 IPv6 使用要求,就把具体目标和故障表现一并记录,交给管理员或运营商核查。不要只发一个分数,也不要用本站这一趟请求替代对那个应用的诊断。

为了改变第三行而禁用 IPv4、强改优先级或关闭防火墙,会改变原来的测试条件,却未必解释原先为什么选了 IPv4。先保留可用配置,再根据证据处理具体问题;分数的完整含义可回看第 7 章。

小结

  • IPv6 连通与本站本次使用 IPv4 可以同时成立,因为它们对应不同请求。
  • 本站接口的结果不是全局优先级、页面全部资源的协议清单,也不是线路测速。
  • 地址解析、连接选择、连接复用和中间转发都可能影响结果,具体原因需要另外核查。
  • 重新检测不保证重建连接;对照时每次只改变一个条件,不为追求显示 IPv6 而盲目改设置。

现在可以回到 IPv6 测试页,把“能连通”和“本次用了什么”分开读;再到首页查看查询到的地址。想补充基础概念,可以阅读第 2 章 IPv4 和 IPv6 有什么区别。