不喜欢广告? 无广告 今天

IPv4子网划分——当二进制数学让你质疑自己的职业选择

更新于

IPv4子网划分详解,无需痛苦。理解CIDR表示法、子网掩码、主机范围,以及为何/24和/16是截然不同的概念——并附带参考表格和在线IPv4计算器,帮助您完成计算。

IPv4子网划分——当二进制数学让你质疑职业选择 1
广告 移除?

在你的职业生涯中,有人会要求你“简单地设置一个VPC、Kubernetes集群或Docker网络的网络配置”。你打开AWS控制台,看到一个字段写着 CIDR block,并自信地输入 10.0.0.0/24 ,就像一个绝对清楚自己在做什么的人一样。

然后你接下来的45分钟都在一个子网计算器上,困惑为什么无法添加超过254个主机。

你并不孤单。IPv4子网划分是一个话题,其实际数学运算很简单,但教学方式——使用二进制表示法和“按位与操作”这类术语——让理性的人考虑转行去学陶艺。本指南将消除这些噪音。最终,你将理解子网掩码、CIDR表示法,明白 /24/16 是完全不同的概念,并学会如何在不转换为二进制的情况下计算主机范围。当你需要验证工作时, IPv4 转换器 会为你处理繁琐的网络地址计算。

IPv4地址实际上是什么

一个IPv4地址是一个32位的数字,以四个十进制组(称为八位组)的形式书写。 192.168.1.100 表示第一个八位组为192,第二个为168,第三个为1,第四个为100。每个八位组的范围是0到255,因为每个八位组有8位(2⁸ = 256个可能的值)。

你需要理解的是——无需接触二进制——每个IPv4地址都包含两个逻辑部分: 网络 部分和 主机 部分。子网掩码就是告诉你哪一部分是网络,哪一部分是主机。

子网掩码:划分线

子网掩码看起来和IP地址完全一样: 255.255.255.0 是最常见的你可能会看到的。在底层,它始终是二进制中一连串的1后跟0——这些1覆盖地址的网络部分,这些0覆盖主机部分。

255.255.255.0 在二进制中是 11111111.11111111.11111111.00000000 ——这是24个1。将其应用于 192.168.1.100 ,你就是在说:前24位(192.168.1)是网络部分。后8位(.100)标识该网络中的具体主机。这正是 /24 在CIDR表示法中的含义。你只是在数1的数量。

CIDR表示法:同样的内容,更少的书写

CIDR(无类别域间路由),你很快就会忘记,也永远不需要大声说出——是网络地址及其掩码的简写。

192.168.1.0/24 表示:

  • 网络地址: 192.168.1.0
  • 子网掩码: 255.255.255.0 (24位设置为1)
  • 可用主机范围: 192.168.1.1192.168.1.254
  • 总可用主机数: 254(256减去2——网络地址和广播地址被保留)

10.0.0.0/16 表示:

  • 网络地址: 10.0.0.0
  • 子网掩码: 255.255.0.0 (16位设置为1)
  • 可用主机范围: 10.0.0.110.0.255.254
  • 总可用主机数: 65,534

/ 数字告诉你有多少位被锁定为“网络”。剩下的位可以用于主机。锁定的位越少,主机越多,子网越大。

为什么/24不是/16:一个实际例子

你在AWS上创建一个VPC。你选择 10.0.0.0/24 因为它看起来正常。你获得了254个可用IP地址。你有四个团队,每个团队最多需要50个主机的子网。你尝试将其划分为 /26 个子网,结果比预期更快地耗尽空间。

然后你的同事说“为什么不使用 /16?”然后消失不见。

10.0.0.0/16 提供了65,534个可用IP地址,你可以将其划分为256个每个254个主机的子网,或1,024个每个62个主机的子网。 /16 是你的主网络; /24是嵌入其中的子网。

思维模型:较大的CIDR前缀数字(/24, /26, /28)意味着一个 较小 的网络,主机更少。较小的CIDR前缀数字(/8, /16)意味着一个 更大的 网络,主机更多。直到它变得直观,然后它就永远清晰了。

主机数量公式(无需二进制)

公式很简单:

可用主机数 = 2^(32 − 前缀) − 2

32 − prefix 给出主机位的数量。将2提升到该幂次得到总地址数。减去2以扣除网络地址和广播地址。

  • /24: 2⁸ − 2 = 254个主机
  • /25: 2⁷ − 2 = 126个主机
  • /26: 2⁶ − 2 = 62个主机
  • /28: 2⁴ − 2 = 14个主机
  • /16: 2¹⁶ − 2 = 65,534个主机

你可以用头脑快速计算常见前缀,或者完全跳过它,直接使用 IPv4 转换器 来立即获得完整分解。

常见子网参考表

收藏这个表格。每次配置VPC或Docker网络时,你都会回来查看它。

CIDR子网掩码总地址数可用主机数常见用途
/8255.0.0.016,777,21616,777,214大型私有网络
/16255.255.0.065,53665,534VPC主网络
/20255.255.240.04,0964,094大型AWS/GCP子网
/24255.255.255.0256254标准局域网,小型子网
/25255.255.255.128128126一半的/24
/26255.255.255.1926462小型团队子网
/27255.255.255.2243230非常小的子网
/28255.255.255.2401614防火墙、NAT网关
/30255.255.255.25242点对点链路
/32255.255.255.25511(本身)单主机路由

实际应用场景:VPC、Docker、Kubernetes

AWS VPC

标准模式是将一个 /16 主VPC(10.0.0.0/16)划分为 /24 个子网,每个可用区和用途(公共、私有、数据)一个子网。这能提供最多256个子网,每个子网有254个可用主机,足以满足大多数应用需求。如果工作负载较大,使用 /20 子网,每个子网可提供4,094个主机。

一个AWS特有的陷阱:AWS每个子网保留5个IP地址,而不是标准的2个。前四个地址和最后一个地址分别被保留用于网络地址、VPC路由器、DNS、未来用途和广播。因此,一个 /24 在AWS中提供251个可用IP地址,而不是254个。

Docker网络

Docker的默认桥接网络使用 172.17.0.0/16。当你创建自定义网络时,Docker默认从 172.16.0.0/12 范围内分配。你可以明确覆盖它:

docker network create --subnet=10.10.0.0/24 my-network

/24 是故意设置的——你不希望Docker用一个内部网络消耗整个地址空间。如果你运行多个需要互相通信或与VPN连接主机通信的Docker网络,请确保它们的范围不重叠。

Kubernetes

Kubernetes有两个独立的CIDR范围: Pod网络 (通常为 10.244.0.0/16 使用Flannel,或 192.168.0.0/16 使用Calico) 和 服务网络 (通常为 10.96.0.0/12)。这些范围不能相互重叠,也不能与你的节点网络重叠。如果重叠,你将花费大量时间调试为什么Pod无法访问服务,以及DNS解析不一致。

在规划Kubernetes网络时,请使用 IPv4 转换器 来验证你的Pod CIDR、服务CIDR和节点子网之间不重叠,然后再编写那个Helm值文件。提前五分钟的网络地址计算,胜过事后一小时的 kubectl exec 调试。

无需痛苦的IPv4子网划分

上述概念足以让你自信地配置网络。实现细节——“ 172.31.32.0/20的主机范围是什么?”——是大多数人遇到障碍并求助于子网计算器的地方。这是正确的直觉。

IPv4 转换器 能从单一输入中提供网络地址、广播地址、主机范围、子网掩码和CIDR表示法。输入你的IP和前缀,即可获得你VPC配置、安全组规则或防火墙允许列表所需的一切。无需账户,无需繁琐操作。

将其保存在标签页中。你将比想象中使用得更多。

想要享受无广告的体验吗? 立即无广告

安装我们的扩展

将 IO 工具添加到您最喜欢的浏览器,以便即时访问和更快地搜索

添加 Chrome 扩展程序 添加 边缘延伸 添加 Firefox 扩展 添加 Opera 扩展

记分板已到达!

记分板 是一种有趣的跟踪您游戏的方式,所有数据都存储在您的浏览器中。更多功能即将推出!

广告 移除?
广告 移除?
广告 移除?

新闻角 包含技术亮点

参与其中

帮助我们继续提供有价值的免费工具

给我买杯咖啡
广告 移除?