我知道我们的 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(互联网号码分配机构)用完了 IPv4 地址块来分配给要在各自区域分配的 RIR(区域互联网注册管理机构),而且 RIR 现在也用完了要在每个区域分配的 IPv4 地址。想要或需要 IPv4 地址的 ISP(互联网服务提供商)和公司无法再从其 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 报头的完整性,并且对 IPv4 报头进行的任何更改都需要重新计算该字段,并且数据包有效负载中的一些传输协议也有自己的计算必须使用 NAT 设备中可用于数据包转发的计算资源重新计算的字段。
在基本 NAT 中,NAT 设备有一个 IPv4 地址池,用于替换从内部网络发送到外部网络的 IPv4 数据包的数据包标头的源 IPv4 地址,并且它维护一个转换表以转换从外部网络返回的流量的目标 IPv4 地址,以便将数据包传送回内部网络上的正确主机。这也需要 NAT 设备上的资源来构建和维护转换表,并执行表查找。这种资源利用会减慢数据包的转发速度,因为 NAT 使用的资源取自可用于数据包转发的资源。
NAPT 通过转换 TCP 和 UDP 的传输协议地址(端口)以及 ICMP 的查询 ID 进一步提升了 Basic 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 undecillion) 可能的 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 年。目前,只有 1/8 的总 IPv6 地址空间分配给全球 IPv6 地址,这适用于 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 也有事后诸葛亮的优势,它通过删除 IPv4 中无法正常工作的特性、改进一些 IPv4 特性并添加 IPv4 没有的特性来改进 IP(在 IPv6 中),创建一个新的和改进的 IP . 由于 IPv6 是与 IPv4 完全分离的协议,因此它可以与 IPv4 并行运行,因为从 IPv4 过渡到 IPv6。主机和网络设备可以同时在同一个接口上同时运行 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 个地址。