AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1785155
Accepted
Antonio23249
Antonio23249
Asked: 2023-05-21 15:16:21 +0800 CST2023-05-21 15:16:21 +0800 CST 2023-05-21 15:16:21 +0800 CST

如果同一 URL 有多个 IP 地址,浏览器会使用哪个 IP 地址?

  • 772

我注意到,当我 ping 一个 URL 时,DNS 可能会返回多个 IP 地址: 在此输入图像描述 我猜这意味着有两个 Web 服务器提供相同的 FQDN。

我想知道浏览器会使用这两者中的哪一个。这有什么规则吗?

非常感谢任何澄清。

dns
  • 3 3 个回答
  • 4721 Views

3 个回答

  • Voted
  1. Best Answer
    u1686_grawity
    2023-05-21T15:47:24+08:002023-05-21T15:47:24+08:00

    没有严格的规则,因为所有地址都是等效的,并且程序可以按任何顺序使用它们。通常程序会尝试列表中的所有地址,直到有一个地址响应为止。

    DNS 中的值没有固有的顺序(并且 A 记录本身没有优先级字段),因此 DNS 服务器可能以任何顺序返回 A 记录;期望为给定名称列出的所有地址都将提供相同的服务。通常,答案会被故意改组以提供一些基本的负载平衡。这可以由权威服务器和/或您的本地解析器完成。

    1(有几个原因可以解释为什么即使是具有多个地址的单个服务器也可能比仅具有一个地址的完全相同的设置表现更好。)

    程序通常会使用从操作系统获得的任何顺序,但操作系统可能会在返回列表之前再次打乱列表(以防万一 DNS 服务器没有这样做)。

    DNS 级别实际上有两个列表 - 一个用于 IPv4 地址(A 记录),另一个用于 IPv6 (AAAA)。一些程序(主要是 Web 浏览器)并行尝试这两种类型,而其他程序则将这两种类型合并到一个列表中,该列表被分类为广泛的类别(本机全局 IPv6 地址,然后是本机 IPv4,然后是私有 IPv6 等)。

    非常旧的程序可能只尝试“第一个”IPv4 地址(哪个地址是“第一个”是不可预测的),因为旧操作系统提供的“主机名查找”功能无法返回多个地址。此类程序通常不支持除 IPv4 之外的任何内容。

    • 19
  2. harrymc
    2023-05-21T18:03:43+08:002023-05-21T18:03:43+08:00

    简而言之,有两个主要机制:

    • DNS 轮询是从 DNS 服务器返回的列表中选择 IP 地址的主要机制,因此并非所有客户端每次都会获得相同的 IP 地址。
    • 网络掩码排序是进一步优化哪个 IP 地址以确定最接近结果的另一种机制。

    当 DNS 服务器返回 DNS 查询的 IP 地址列表时,它将尝试采用循环方法对每个连续查询的列表进行重新排序。这是基于这样的事实:大多数应用程序在收到 IP 列表时只会选择第一个 IP,只有在前一个失败时才转到下一个。

    RFC 1794 - DNS 支持负载平衡中描述了循环 DNS 。

    对于 IPv4,目标地址选择相当简单,通常通过选择 DNS 服务器返回的第一个 IP 地址来完成。这与 DNS 循环法配合得很好,因为它让服务器通过将其放在列表顶部来决定客户端将使用哪个地址。

    根据RFC 3484,IPv6 对此行为进行了更改 :

    目标地址选择算法获取目标地址列表并对地址进行排序以生成新列表。这里是根据地址DA和DB的成对比较来指定的,其中DA在原始列表中出现在DB之前。该算法对 IPv6 和 IPv4 地址进行排序。

    目标地址的成对比较由十个规则组成,应按顺序应用。如果某个规则决定了结果,则其余规则将被忽略,因为后续规则仅充当较早规则的决胜局。

    有 10 条规则,但应考虑规则 9:

    Rule 9:  Use longest matching prefix.
    
    When DA and DB belong to the same address family (both are IPv6 or
    both are IPv4): If CommonPrefixLen(DA, Source(DA)) >
    CommonPrefixLen(DB, Source(DB)), then prefer DA.  Similarly, if
    CommonPrefixLen(DA, Source(DA)) < CommonPrefixLen(DB, Source(DB)),
    then prefer DB.
    

    使用最长的匹配项,而不仅仅是列表中的第一个 IP 地址。安装 IPv6 后,行为会发生变化,因此操作系统不仅仅将第一个 IP 地址从列表中拉出。

    参考: Windows 客户端上的高级 DNS 循环和目标 IP 地址选择。

    • 14
  3. user1532080
    2023-05-23T16:59:45+08:002023-05-23T16:59:45+08:00

    这是我在 2016 年左右进行的测试:

    • 您的浏览器可以执行它想要的操作,并且它们的行为可能会有所不同。
    • 您的浏览器可以依赖操作系统为其提供 IP(“gethostbyname”)。
    • 早在 2016 年,Linux 和 NetBSD 将返回一个随机选择的地址。
    • 早在 2016 年,一些(但不是全部)Windows 10 计算机将返回随机选择的地址。旧版本的 Windows 将返回列表中的第一个。

    我预计现在所有 Windows 10/11 机器都会随机选择一个 IP。

    • 1

相关问题

  • 如何设置 DNS、AWS S3、AWS Cloudfront 和 AWS Certificate Manager 以保护多个站点

  • 5355 UDP svchost.exe Dnscache

  • 使用 dnsmasq.conf 阻止内部 IP 地址

  • 需要验证 firebaseapp.com 子域

  • 迁移 Windows Server 2008

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Vickel Firefox 不再允许粘贴到 WhatsApp 网页中? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve