我知道我们已经用完了(或已经用完了?)IPv4 地址,但我真的不明白为什么会这样。现在,每个家庭都有自己的 IPv4 地址(动态分配,但每个家庭都有一个地址)。为什么一个城市(例如)不能只有一个 IPv4 地址,而这个城市的所有家庭都只能位于该城市的专用网络上?那么这个城市将能够分配范围0.0.0.1
为 的地址255.255.255.254
。
我确信我的理解是错误的,否则 IPv4 地址不会用完。我的理解有什么问题?
我知道我们已经用完了(或已经用完了?)IPv4 地址,但我真的不明白为什么会这样。现在,每个家庭都有自己的 IPv4 地址(动态分配,但每个家庭都有一个地址)。为什么一个城市(例如)不能只有一个 IPv4 地址,而这个城市的所有家庭都只能位于该城市的专用网络上?那么这个城市将能够分配范围0.0.0.1
为 的地址255.255.255.254
。
我确信我的理解是错误的,否则 IPv4 地址不会用完。我的理解有什么问题?
根据 Vint Cerf(IP 之父)的说法,IPv4 的 32 位地址大小是任意选择的。IP 是一项政府/学术合作实验,从未设想过当前的公共互联网。IP 范式是每个连接的设备都有一个唯一的 IP 地址(IP 设备之间发送的所有数据包将从源 IP 地址到目标 IP 地址端到端连接),许多使用 IP 的协议依赖于每个设备拥有唯一的 IP 地址。
假设我们可以使用所有可能的 IPv4 地址*,只有 4,294,967,296 个可能的 IPv4 地址,但(截至 2018 年 9 月)当前世界人口为 7,648,290,361。如您所见,没有足够的可能的 IPv4 地址供每个人拥有,但许多人拥有一台计算机、打印机、手机、平板电脑、游戏机、智能电视等,每个都需要一个 IP 地址,并且这甚至不涉及 IP 地址的业务需求。我们也处于 IoT(物联网)的风口浪尖,每个设备都需要一个 IP 地址:灯泡、恒温器、温度计、雨量计和自动喷水灭火系统、警报传感器、电器、车辆、车库门开启器、娱乐系统、宠物项圈,谁知道还有什么。
*有些 IPv4 地址块不能用于主机寻址。例如,多播有 268,435,456 个地址块,不能用于主机寻址。IANA 在https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml维护 IANA IPv4 特殊用途地址注册表以记录所有特殊地址块及其用途.
IANA(互联网号码分配机构)用完了要分配给 RIR(区域互联网注册管理机构)的 IPv4 地址块,以便在各自的地区分配,而 RIR 现在也用完了要在每个地区分配的 IPv4 地址。ISP(互联网服务提供商)和想要或需要 IPv4 地址的公司无法再从他们的 RIR 那里获得 IPv4 地址,现在必须尝试从可能有额外资源的企业购买 IPv4 地址(随着 IPv4 地址短缺的加剧,IPv4 地址的价格往上)。
即使所有为特殊目的而保留且不能用于主机寻址的 IPv4 地址都可供使用,我们仍然处于相同的位置,因为 IPv4 地址的大小有限,根本没有足够的 IPv4 地址。
如果 IANA 和 IETF(互联网工程任务组)没有针对 IPv4 地址短缺采取缓解措施,IANA 和 RIR 就会用完 IPv4 地址多年。一项重要的缓解措施是弃用 IPv4 网络类别,转而采用 CIDR(无类别域间路由)。有类寻址只允许分配三种网络大小(每个网络 16,777,216、65,536 或 256 个总主机地址),这意味着许多地址被浪费了(仅需要 300 个主机地址的企业需要分配一个有 65,536 个可能主机的有类网络地址,浪费了有类网络中超过 99% 的地址),
到目前为止,对延长 IPv4 寿命影响最大的缓解措施是使用私有寻址和一种称为 NAPT(网络地址端口转换)的 NAT(网络地址转换)变体,这就是大多数人在使用时的意思。指 NAT 或 PAT(PAT 是供应商特定的 NAPT 术语)。不幸的是,NAPT 是一种丑陋的变通方法,它打破了 IP 端到端范式,并且破坏了依赖于唯一 IP 寻址的协议,需要更丑陋的变通方法。
NAT 的概念非常简单:当数据包通过 NAT 设备时,它会替换数据包标头中的源和目标 IPv4 地址中的一个或两个。实际上,它需要计算,因为 IPv4 头有一个计算字段来检查 IPv4 头的完整性,对 IPv4 头所做的任何更改都需要重新计算该字段,并且数据包有效载荷中的一些传输协议也有自己的计算必须重新计算的字段,使用 NAT 设备中可用于数据包转发的计算资源。
在基本 NAT 中,NAT 设备有一个 IPv4 地址池,用于替换从内部网络发送到外部网络的 IPv4 数据包的数据包头的源 IPv4 地址,并维护一个转换表以转换从外部网络返回的流量的目标 IPv4 地址,以便将数据包传送回内部网络上的正确主机。这也需要 NAT 设备上的资源来构建和维护转换表,以及执行表查找。这种资源利用会减慢数据包的转发速度,因为 NAT 使用的资源取自可用于数据包转发的资源。
NAPT 还通过转换 TCP 和 UDP 的传输协议地址(端口)以及 ICMP 的查询 ID 使基本 NAT 更进一步。通过还转换传输层地址,NAPT 允许将单个外部 IPv4 地址用于许多内部主机 IPv4 地址。NAPT 甚至比基本 NAT 占用更多资源,因为它需要为每个传输层协议提供一个单独的表,并且它还必须执行传输协议的完整性计算。
使用私有 IPv4 寻址,可以在多个网络上重复使用(您可能已经注意到,大多数家庭/住宅网络默认使用相同的 192.168.1.0/24 网络,该网络位于 IANA 分配的私有 IPv4 地址范围之一中)与 NAPT 一起,允许企业和家庭用户各自为大型内部(私有寻址)网络使用单个外部(公共)地址。这节省了许多 IPv4 地址(可能是 IPv4 地址总数的几倍),并且将 IPv4 的生命周期延长到远远超出它在没有 NAPT 的情况下崩溃的程度。NAPT 确实有一些严重的缺点:
IETF 预测了 IPv4 地址短缺,并创建了解决方案:IPv6,它使用 128 位地址,这意味着有 340,282,366,920,938,463,463,374,607,431,768,211,456(340 个十亿)可能的 IPv6 地址。几乎无法想象的 IPv6 地址数量消除了对 NAPT 的需求(IPv6 没有任何 NAT 标准,IPv4 的方式如此,并且实验性 IPv6 NAT RFC 明确禁止 NAPT),恢复了原始 IP 端到端范式。IPv4 地址短缺的缓解措施旨在延长 IPv4 的寿命,直到 IPv6 无处不在,届时 IPv4 应该会逐渐消失。
人类无法真正理解用于 IPv6 的大小数字。例如,标准 IPv6 网络对网络地址的每个网络和主机部分使用 64 位。也就是说,有 18,446,744,073,709,551,616 个可能的 IPv6 标准 /64 网络,以及每个这些网络的相同(巨大)数量的主机地址。要尝试了解这么大的数字,请考虑使用扫描网络上所有可能地址的工具。如果这样的工具每秒可以扫描 1,000,000 个地址(不太可能),那么在单个 /64 IPv6 网络上执行扫描将需要超过 584,542 年的时间。目前,全球 IPv6 地址仅分配了 IPv6 地址空间的 1/8,相当于 2,305,843,009,213,693,952 个标准 IPv6/64 网络,如果 2100 年世界人口为 210 亿(有点现实的数字),这 210 亿人中的每一个人都可以拥有 109,802,048 个标准 IPv6 /64 网络,每个网络有 18,446,744,073,709,551,616 个可能的主机地址。不幸的是,(几十年的)IPv4 地址短缺已经在人们心中根深蒂固,以至于很多人根本放不下它,他们试图将其应用于 IPv6,这毫无意义,实际上是有害的。IPv6 实际上旨在浪费地址。
IETF 也有后见之明的优势,它改进了 IP(在 IPv6 中),删除了 IPv4 运行不正常的特性,改进了一些 IPv4 特性,并添加了 IPv4 没有的特性,创建了一个新的和改进的 IP . 由于 IPv6 是与 IPv4 完全不同的协议,因此在从 IPv4 过渡到 IPv6 时,它可以与 IPv4 并行运行。主机和网络设备可以在同一个接口上同时运行IPv4和IPv6(双栈),互不可见;两种协议之间没有干扰。
IPv6 的问题在于它实际上是一个完全不同的协议,与无处不在的 IPv4 不兼容,并且许多人认为 IPv4 地址短缺的缓解措施“足够好”。结果是 IPv6 标准化已经过去 20 多年了,我们现在才真正开始使用 IPv6(谷歌报告说,截至 2018 年 9 月,全球 IPv6 采用率超过 20%,IPv6 采用率在美国超过 35%)。我们最终转向 IPv6 的原因是没有更多未使用的 IPv4 地址需要分配。
还有其他障碍,所有这些都是 IPv4 文化的一部分,人们根本难以忽视。许多人也害怕 IPv6,因为他们已经长大并适应了 IPv4、疣等等。例如,与 IPv4 地址相比,IPv6 地址显得又大又丑,这似乎让很多人望而却步。现实情况是,IPv6 往往比 IPv4 更容易、更灵活,尤其是在寻址方面,IPv4 中的经验教训从一开始就应用于 IPv6。
Ron Maupin 的回答很好地概述了 IPv4 短缺,但我想解决您问题的这一部分:
为什么一个城市(例如)不能只有一个 IP 地址,而这个城市中的所有家庭都只能位于该城市的专用网络上。那么这个城市将能够分配从 0.0.0.1 到 255.255.255.254 范围内的地址。
从表面上看,这正是“NAT”(或更具体地说,“IP 地址伪装”)的工作原理:建立一个专用网络,它看起来像一台主机,并在内部将流量路由到许多不同的用户。但是您在示例中忽略了一些重要的限制:
大约有 1800 万个私有 IPv4 地址,但只有 65536 个端口号。您实际上并不需要每个连接都有一个唯一的端口,因为您可以有一个包含远程地址的查找表,但是您可以在没有问题的情况下扩展多远仍然存在限制。
也就是说,NAT 确实是 IPv4 网络没有因地址短缺而完全崩溃的最大原因之一。为每个家庭或办公室分配一个 IP 地址,并为它们分配一个设备来执行 NAT,允许连接比 IPv4 的原始设计允许的更多的设备。为了进一步扩展,使用运营商级 NAT,其中 ISP 的公共地址少于连接家庭的公共地址,可能使用两层 NAT 来管理数据包到最终目的地的路由。
最后,从少数剩余地址中挤出每条可能的路由只是 IPv4 的生命支持,并且在某些时候,每个地址都将保留供内部使用、某些 NAT 网络的公共面孔或公共地址接受未经请求的连接的服务器。
现在,每个家庭都有自己的 IP 地址。为什么一个城市(例如)不能只有一个 IP 地址,而这个城市的所有家庭都只能位于该城市的专用网络上?
自 1990 年代末以来,许多互联网服务提供商已经这样做了。
在 1990 年代,这样做有不同的原因(不是 IPv4 短缺)。然而,在2012 年,我作为客户的互联网服务提供商开始这样做,因为 IPv4 地址不再足够:
我的提供商使用“DS-Lite”,这意味着新客户获得一系列全球 IPv6 地址(动态分配),并且他们只有您描述的私有 IPv4 地址。
其他互联网服务提供商使用您所描述的“CGNAT”(没有 IPv6)。
我的理解有什么问题?
您必须查看使用 NAT无法实现的功能:
如果您想操作某些服务器,您肯定需要一个唯一的 IP 地址。请注意,您可以通过智能手机访问家中的某些设备是“服务器”。
Facebook Inc. 还进行了一项研究,表明当多个客户共享一个 IP 地址时,连接速度会受到影响。
还有一个问题:
由于端口号的原因,一个 IP 地址可以同时与某个服务器建立的连接数限制在 60000 左右。
我见过同时打开 10 个连接的视频流页面。6000 人使用同一页面,达到 60000 的限制。
而60000是理论极限;真正的限制更少。
那么这个城市将能够分配从 0.0.0.1 到 255.255.255.254 范围内的地址。
这绝对行不通:
假设你想访问这个网站(networkengineering.stackexchange.com)。然后您必须建立到 151.101.129.69 的连接。
如果在城市范围的本地网络中有一台地址为 151.101.129.69 的计算机,则与“networkengineering.stackexchange.com”的连接可能无法正常工作,因为不清楚具有相同 IP 地址的两台计算机中的哪一台:是市网内的还是网外的?
这意味着城市范围的网络必须知道 151.101.129.69 是该网络之外的地址。
因此,只能使用未在全球互联网中使用的地址。
顺便一提:
即使在未连接到互联网的专用网络中,我们也不能使用整个范围 0.0.0.1-255.255.255.254:
在这样的网络中,我们可以使用像 151.101.129.69 这样的地址。
然而,范围 0、127 和 224-255 不能使用,因为这些范围是由几乎所有操作系统和设备专门处理的。因此,没有通用的操作系统会允许计算机具有例如地址 127.10.11.12。
有一些客观原因和一些基于意见的原因,当然还有最重要的原因——金钱——。
首先,IP 被设计为端到端,主机具有唯一地址。这基本上意味着——理论上——每个设备(服务器、电脑、电话)都需要有自己的独立 IP 地址。
有 40 亿个地址可用,原则上这对每个人来说都足够了,因为尽管地球上的人口几乎是地球上的两倍,但绝大多数人正在努力获得足够的食物,而且无论如何都买不起电脑. 然而,在能够负担得起的少数人中,更像是人均 15-20 台设备始终在线,包括一些相机、冰箱、遥控照明和暖气,以及……你的烤面包机。出于我不知道的原因,其中必须连接到互联网。
物联网并不是真正必要的东西,但它在过去十年中非常成功地营销和广泛采用,所以它是一个现实,因此是一个真正的问题。此外,由于技术原因,大量地址被浪费了,而大量地址则毫无理由地被浪费了(我稍后会再讲)。
在实践中,有一种叫做 NAT 的东西,它完全(或几乎如此)按照您的建议执行。从技术上讲,它违反了 IP 的设计原则,但这并不是什么大问题。尽管如此,虽然 NAT 工作正常并且在许多方面实际上是一件好事,但它也有其局限性(值得注意的是,它理论上最多只能将地址数量扩展 65535 倍,而在实践中要少得多)是希望 NAT 消失的强烈愿望。最紧迫的是NAT掩盖了地址和设备之间的1:1关系。这实际上是一件好事,因为哦,见鬼,你实际上不想要那个,但对于某些有发言权的人(例如执法人员)来说就不是那么好了。另一个原因是 NAT(通常也有防火墙)使某些应用程序变得更难。特别是,NAT 后面的一台主机与 NAT 后面的另一台主机通信很麻烦(并非不可能,只是比绝对必要更难实现)。
现在,对于一个“典型的”企业(或其他组织),有些人坐在隔间里,在公司网络或通过 VPN 进行通信,并且可能有各种互联网访问,例如每层有一个 IP 地址是非常有意义的并将它们全部通过 NAT。它不仅会便宜得多,而且还会让外部观察者不那么明显。另外,它会使网络管理员更加明显。这两者都是好事。唉,现实情况是,几家大公司和美国大学保留了大量的 IP 地址,以便他们可能拥有的每台机器都有自己的单独地址。问为什么?我说不出来。
我们之所以“用完”,最重要的原因是有强烈的推动IPv6的动机。虽然 IPv6 不仅消除了一些麻烦并带来了一些(尽管很少)理想的特性,但它还增加了线路上的可测量开销(特别是如果涉及多个层,例如 IP-over-PPPoE-over-ATM,例如许多家庭互联网连接),客户为带宽付费(以每秒字节数为单位)或为每字节流量付费。所以...无论采用哪种方式远离 IPv4 都是非常可取的,因为作为提供商,您要么需要更少的主干网,要么可以为相同的东西向客户收取更高的费用。
这导致危机被积极宣传,发出像糖果一样的地址(直到几乎没有人留下)。我记得,不久前,几年前,租用 50 美元的服务器时,您会得到 5 个类似的地址。