Web 浏览器如何确定何时使用 IPv4 或 IPv6 连接到目的地?

Web 浏览器如何确定何时使用 IPv4 或 IPv6 连接到目的地?

我看到了关于这个话题的几篇相关文章: 客户端应用程序如何知道使用 IPv4 还是 IPv6?如何知道你的浏览器是否连接到某个网站的 Ipv4 还是 Ipv6 地址?

第一篇帖子已经有好几年了,所以我不确定它是否仍然有意义,而第二篇帖子也没有回答我的问题。

我问的原因是我安装了pi 孔以帮助屏蔽广告。我将路由器设置为使用 pi-hole 作为 IPv4 DNS 服务器,但在浏览 CNN 等网站时仍然会看到广告。然后我意识到我的 ISP 提供商(Comcast)提供了两个 IP 地址,一个 IPv4 和一个 IPv6,我的路由器也支持 IPv6。

当我手动禁用网卡上的 IPv6 时,浏览 CNN 网站时广告就会停止显示。因此,我得出结论,我正在使用 IPv6 连接到 CNN 网站。我的问题是,当 Web 浏览器决定使用 IPv4 还是 IPv6 连接到目的地时?是否只是先尝试​​使用 IPv6,如果成功则使用它,否则返回 IPv4?

附注:显然 Arris SBG6700-AC 调制解调器/路由器仅允许您配置 IPv4 DNS 服务器,而不允许配置 IPv6 DNS 服务器。要指定您自己的 IPv6 DNS 服务器,我必须从计算机本身进行设置。

答案1

第一的:如何您解析主机名与您可以将其解析为哪个地址无关。当通过 IPv4 询问时,DNS 服务器完全能够返回 IPv6 AAAA 记录,反之亦然。

至于浏览器如何选择尝试哪个地址:您链接到的第一个帖子仍然相关,唯一改变的是微小的优先级调整。

  • 大多数现代浏览器使用快乐眼球算法;它们会一次尝试所有地址,并坚持使用回复最快的地址。这完全在应用程序内实现,不会受到操作系统的影响。(请注意,如果 IPv6 或 IPv4 都给出类似的结果,算法有时会进行调整,以让它们领先。)

  • 较旧的浏览器和许多其他程序会逐个尝试所有地址,并按照默认地址选择算法,它通常优先选择本机 IPv6,而不是自动 v6 隧道上的本机 IPv4。此顺序是通常在操作系统中实现(例如 gai.conf),并且程序不会手动对地址进行排序。

答案2

您无法直接控制 Web 浏览器如何确定其使用 IPv6 还是 IPv4。

这一切都由计算机中的 IP 堆栈处理。

至于广告,我建议您考虑使用其他广告拦截器。我认为 v4 与 v6 的问题不是造成您看到结果的原因。

Windows 提示:Adblock 效果不错。但不要使用 Adblock Plus,因为它会加载“允许”广告表格,占用大量内存。

同时,根据您的问题,我有一个建议:将所有路由器设置为禁用 IPv6,直到需要为止。

然后对所有计算机执行相同的操作:对于每个接口,取消选中 IPv6 支持(Windows),或将其设置为禁用或自动(Linux),然后让路由器处理其余部分。

有一天 IPv6 将成为必需品,但这在很大程度上将影响 ISP。(我使用 Cox Cable)要将其推向用户级别,他们必须在那时更换我们的组合调制解调器/路由器盒。或者,他们将要求所有用户自己重新配置路由器。如果他们做任何一件事,他们都会遭受损失,特别是如果他们为更改或帮助热线支持增加任何额外费用。最后,我预测 Cox 会想出一种方法来避免如此大量的工作。他们是一家企业,他们必须意识到,如果再增加任何额外费用或可能由用户引起的配置错误导致停机,那么他们就会失去客户。

所以目前,在用户层面上根本不需要 IPv6。

在可预见的未来,NAT 路由器后面的所有系统可能都能继续使用 v4。v6 仅在较大的网络上才是必要的。

答案3

对于广告,请使用 ublock origin。小巧、快速,如果公司支付足够费用,就不会让广告通过,还会阻止 YouTube 广告。除非您的计算机真的很慢,否则它会正常工作。Noscript 或 umatrix 也是非常必要的,可以阻止尽可能多的 google/facebook/.... 间谍软件脚本。您无法阻止所有内容,因为您会阻止 recaptcha 或 ajax 并破坏

对于 android 来说,有 dns66(在 f-droid 上)它也会阻止添加(遗憾的是不是 youtube 的)。

如果您想要一个集中式解决方案,也可以使用代理服务器来阻止添加。

据我所知,浏览器使用延迟较小的那个。由于 ipv4 被阻止,延迟实际上是无限的,所以它使用 ipv6。

相关内容