ipv4 和 ipv6 共存的网络中,访问一个域名会不会自动处理异常解析?

126 天前
 abcbuzhiming
以前有篇文章,讲了非常详细的细节,你打开浏览器输入一个域名然后按下回车后,直到你看到页面的所有技术细节。
我想了解的是,现在这种 ipv4 和 ipv6 共存的环境,假设一个域名同时解析了 ipv4 和 ipv6 ,但是其中一个宕机了,可能是 ipv4 ,也可能 ipv6 ,我说的这种宕机是指的服务器那边,此时你用一个版本的 ip 去访问是失效,但是另外一个 ip 正常。

我的疑问是,浏览器怎么处理这种情况?我目前能查到的是系统自身有 ipv6 还是 ipv4 优先,这个优先我的理解就是首先去访问那个优先的网络,如果优先的网络宕机,会自动切换到另外一个网络吗?还是就直接就显示宕机界面就不再管了?
1345 次点击
所在节点    宽带症候群
11 条回复
bing1178
126 天前
这个貌似是 操作系统处理的。

系统会同时查询 A 记录 和 AAAA 记录 哪个先返回 就用哪个
peasant
126 天前
根据我经常使用 curl -v 命令的请求结果来看是优先 IPv6 的,如果 IPv6 响应慢了就马上发起 IPv4 的连接,然后哪个先响应成功就走哪个。
Xymmh
126 天前
ipv6-test.com 这个网站可以看到浏览器的行为
abcbuzhiming
126 天前
@Xymmh 我也经常看这个网站来检测自己的 ipv6 ,但是怎么看 [浏览器的行为] 这一点?
Zhuzhuchenyan
126 天前
完全取决于浏览器或者发起链接工具的行为,根据我的经验,至少遇到过以下几种不同的处理方式,
1. 同时使用 ipv6 和 ipv4 发起请求,哪个优先回应使用哪个
2. 先使用 ipv6 ,等待一段时间之后,若无法链接,再使用 ipv4 发起连接
2.1 同上,只不过 ipv4 被优先使用
3. 先使用 ipv6 ,如果不通则直接不通
3.1 同上,只不过 ipv4 被优先使用

需要注意的是哪怕是相同的工具,跨版本之后行为也有可能改变。之前遇到过不少坑。
Xymmh
126 天前
@abcbuzhiming 网站里有个浏览器的板块,里面的 default 就是浏览器默认通过 ipv4 还是 ipv6 连接,fallback 就是浏览器默认连接协议不通时会不会采用另一种协议以及延迟时间
Xymmh
126 天前
不过说实话,在实践中,在 IPv6 无法正常打开一个网页时,很多时候浏览器并不会那么智能地尝试通过 IPv4 连接。这可能和无法打开网页的原因多样性有关
shepherdcode
126 天前
会的,比如 V2EX 就有 v6 的解析,双网卡情况下会优先走 v6 解析导致打不开。
0o0O0o0O0o
126 天前
客户端决定,这点在一些特别的场景也让我很烦
dude4
125 天前
@abcbuzhiming 就这个网站就看得到,如果你有 V6 ,但你的浏览器默认 IPV4 优先,测试结果会显示类似于“你有 V6 ,但你的浏览器不太愿意用,令人担心”的结果……
V4 V6 在都存在且路由可达的前提下,选哪一个是客户端请求的,上面这只是浏览器的结果,至于视频 app 之类就看开发程序猿自己的逻辑了。
LnTrx
125 天前
你想问的是不是 Happy Eyeballs 机制

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1005564

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX