IPv4 地址如何唯一地提供给域?

网络工程 路由 ipv4 纳特 互联网 域名解析
2021-07-25 20:17:08

这个问题一直困扰着我一段时间,我还没有得到明确的答案(每当我睡觉时它都会困扰着我)。我想就这个问题得到专家的答复。

  1. 谁主要向域提供 IP 地址?

    就像在谁命令中一样,“www.google.com,103.233.38.93 是你的;www.stackexchange.com 我将分配 104.16.115.182 给你;等等。”

  2. 两个域之间是否存在 IP 地址分配重复的可能性?如果是,是坏的吗?如果有重复会怎样?

  3. IPv4 地址的限制为 4,294,967,296。截至 2015 年,约有 863,105,652 个网站和 3,185,996,155 名互联网用户。它为我们提供了大约 4,049,101,807 个可能的 IP 地址分配。如果未实施 IPv6 且达到 IPv4 限制,如果 IP 地址分配用完,会发生什么情况?

我希望在接下来的讨论中学到很多东西!谢谢!

1个回答

谁主要向域提供 IP 地址?就像在谁命令中一样,“www.google.com,103.233.38.93 是你的;www.stackexchange.com 我将分配 104.16.115.182 给你;等等。”

通常 IP 地址由提供商提供给他们的客户。小型托管客户将一次为他们的服务器分配一个 IPv4 IP。一些组织将运行自己的网络并拥有自己的 IP 地址块,这些 IP 地址由其提供商分配,或者在大型组织的情况下直接从 RIR 分配(例如,谷歌有自己的 IP 空间,我不知道 stackexchange)。如此丰富的 IPv6 IP 通常会分块分配,即使客户只购买一台服务器也是如此。

IP 地址由 RIR(ARIN、RIPE、APNIC 等)分配给网络。然而,大多数 RIR 的 IPv4 地址的常规“免费池”现在已经用完(有一些 IP 地址被 RIR 保留用于特定目的分配)。因此,想要更多 IPv4 地址的公司现在必须在市场上购买它们并让 RIR 转移它们。

然后客户设置他们的 DNS 记录,将他们的域名指向分配给他们服务器的 IP 地址。

两个域之间是否存在 IP 地址分配重复的可能性?如果是,是坏的吗?如果有重复会怎样?

您可以通过称为基于名称的虚拟主机的过程在同一 IP 地址上托管多个主机名。

过去的一个复杂问题是每个 IP 地址只能有一个 ssl/tls 证书,并且对多个独立站点使用相同的证书很棘手。原则上,一个证书可以涵盖多个主机名,但每次添加主机名(或主机名的通配符组)时都需要重新颁发证书,并且如果主机名属于不同的域,则说服 CA 您对所有主机名都有合法控制权难。

最近版本的 tls 有一个称为服务器名称指示的扩展名,它允许每个 IP 有多个证书。不幸的是,客户支持需要很长时间才能无处不在。Windows XP 上的 Internet Explorer 和 android 2.x 上的默认浏览器是不支持它的主要浏览器。两者都在下降,但下降速度比人们希望的要慢得多。如果您必须为非浏览器客户端提供服务,那么情况可能就不那么乐观了。

此外,每个 IP 地址都必须分配给一台机器。因此,如果您想在不同的机器上托管具有相同公共 IPv4 地址的站点,您将需要使用某种反向代理服务(通过 IPv6 或私有 IPv4 连接到服务器的后端链接)。

IPv4 地址的限制为 4,294,967,296。

实际上,实际的限制远低于此。许多大块被分配给特殊用途。由于全类寻址,许多早期获得地址的公司分配的块比他们真正需要的要大得多,即使使用 CIDR,两种块大小的力量也会导致许多地址浪费。“E 类”地址实际上无法使用,因为一些供应商将“保留”解释为“拒绝与这些地址有任何关系”。

截至 2015 年,约有 863,105,652 个网站和 3,185,996,155 名互联网用户。它为我们提供了大约 4,049,101,807 个可能的 IP 地址分配。如果未实施 IPv6 且达到 IPv4 限制,如果 IP 地址分配用完,会发生什么情况?

随着 IPv4 地址的供应越来越有限,IPv4 地址的市场价格可能会上涨(目前每个 IP 大约 10 美元,非常便宜)。随着价格的上涨,人们将重新评估哪些应用程序可以真正证明公共 IPv4 地址的合理性,哪些应用程序将不得不在没有 IPv4 地址的情况下凑合使用。

有一些机制可用于提供到 IPv4 互联网的某种程度的连接,同时减少公共 IPv4 的消耗。在客户端,提供商可以使用传统的 IPv4 NAT(“CGN”),也可以使用基于 IPv6 的转换机制,如 NAT64 或 DS-Lite。移动运营商多年来一直在这样做,固网运营商才刚刚开始尝试。我希望最底层的客户首先被推到 ISP 级别的 NAT 之后,使用保留公共 IPV4 地址的更昂贵的包。

NAT 在服务器端并不真正起作用。您可以转发端口,但是当每个人都想要端口 80 和 443 时,这并没有真正的帮助。相反,解决方案是反向代理。它们接受来自客户端的 TCP 连接,然后查看客户端发送的内容以决定将连接转发到哪里。对于普通的 http,他们可以使用 http 主机标头(如在基于名称的虚拟主机中使用)。对于 https,如果客户端支持 SNI,那么他们可以使用 SNI 信息在 TCP 级别转发连接,而​​无需解密 ssl/tls 会话。如果不支持 SNI,则代理必须终止 ssl/tls 连接并查看内部的主机标头。如果服务器提供的证书不涵盖客户端尝试访问的域,这将导致证书警告。

使用提供商运营的反向代理托管仍然是一件相当新的事情(我只知道有一家提供商在这样做),但我希望随着 IPv4 危机的加深,它会变得更加普遍。