V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
7DLNU56W
V2EX  ›  互联网

一个应用程序(比如浏览器)在访问双栈的网络的域名时,走 IPv4 网络还是 IPv6 网络是由什么决定的?

  •  
  •   7DLNU56W · 2021-02-15 00:11:42 +08:00 · 1891 次点击
    这是一个创建于 1407 天前的主题,其中的信息可能已经有所发展或是发生改变。

    假设一个计算机是 IPv4 和 IPv6 双栈的,通常的话,访问 IPv4 地址就走 IPv4 的网络,访问 IPv6 地址就走 IPv6 的网络。但如果访问的不是 IP 地址,而是一个域名,该由什么决定到底访问 IPv4 地址还是访问 IPv6 地址呢?

    是这个应用程序本身决定的还是有操作系统或者是网络配置决定的呢,会不会一个域名配置了 AAAA 记录,没有配置 A 记录,但应用程序就要求只能用 IPv4 地址?

    如果这个域名既配置了 A 记录又配置了 AAAA 记录,那是用 IPv4 地址还是用 IPv6 地址呢?

    第 1 条附言  ·  2021-02-15 01:44:26 +08:00
    除了走 v4 还是 v6 以外,还要 DNS 应该用 v4 的 DNS 还是 V6 的 DNS 是怎么确定的?
    第 2 条附言  ·  2021-02-15 13:31:17 +08:00
    经过进一步查询相关资料,结局了部分问题(为啥我发帖的时候查了好半天也没找到?):
    当某个域名解析结果出来后,如果既有 A 记录又有 AAAA 记录,那么究竟走 IPv4 还是 IPv6 是由一个注册表项决定的:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\ 名称为 DisabledComponents

    但一个域名究竟是使用 IPv6 的 DNS 服务器进行解析还是使用 IPv4 的 DNS 服务器进行解析不知道是由什么决定的,但经过测试,似乎只要是配置了 IPV6 的 DNS 就会用 IPv6 的 DNS 解析,而且解析无返回结果的话,直接返回无解析记录,而不是换用 IPv4 的 DNS 。这个大家知道有什么调整的方法么?比如调整为优先使用 IPV4 DNS,或者优先使用 IPv6 DNS 但当无返回结果时,换用 IPv4 DNS 再次解析。
    3 条回复    2021-02-15 02:45:24 +08:00
    avrillavigne
        1
    avrillavigne  
       2021-02-15 00:47:01 +08:00
    wwqgtxx
        2
    wwqgtxx  
       2021-02-15 00:47:20 +08:00 via iPhone
    根据程序使用的 net 库决定,比如 golang 标准库是同时访问 AAAA 和 A 记录的地址(既 v4/v6 之间并发,v4/v6 组内顺序访问),然后选择第一个连上的地址
    raptium
        3
    raptium  
       2021-02-15 02:45:24 +08:00 via iPhone
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   971 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 19:12 · PVG 03:12 · LAX 11:12 · JFK 14:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.