上一篇已经用子网掩码和 CIDR 前缀长度划清了网络部分与主机部分:已知地址和/前缀长度,我们可以求出网络地址、广播地址、地址范围,也能判断两台主机是否位于同一子网。本篇仍在 TCP/IP 五层模型的网络层,把这些计算真正用起来:一个单位拿到一段地址后,怎样按网络数量或主机数量,把它划成多个大小合适的子网?
子网划分的本质是:把原地址块的一部分主机位固定下来,使网络前缀变长。前缀变长后,子网数量增加;可留给每个子网的主机位减少,每网容量也随之缩小。
一、为什么一个网段还要继续划分?
假设公司获得了192.168.4.0/22。这个地址块一共有 1024 个地址,范围是192.168.4.0到192.168.7.255。
你可以把它直接理解成:192.168.[4 ~ 7].[0 ~ 255]
如果把它直接作为一个大局域网,所有设备都在同一个二层广播域中:ARP 广播会扩散到所有设备,部门之间也没有明确的网络边界。
现实中往往需要按楼层、部门、业务区域或安全要求分开,例如研发、财务、访客 Wi-Fi 和服务器区各自使用一个子网。不同子网之间必须经由路由器或三层交换设备转发,因此可以分别配置网关、访问控制和路由策略。
对外部网络而言,这些内部子网仍可汇总为原来的大地址块;对内部网络而言,它们是边界清楚、可独立管理的小网络。
早期教材把这一过程描述为“从主机号借位,形成子网号”。从 CIDR 的视角看,不必在地址中固定划出一个子网号字段:只要把原块的前缀加长,得到的每个更长前缀地址块就是一个子网。
二、先掌握三条计算关系
设原地址块前缀为/p,划分后的每个子网前缀为/q,且 q 大于 p。
借用的主机位数 = q - p 可划分的等大子网数 = 2 的 (q - p) 次方 每个子网的地址总数 = 2 的 (32 - q) 次方若子网直接作为普通 IPv4 广播子网使用,通常可用的主机地址数为:
可用主机地址数 = 2 的 (32 - q) 次方 - 2减去的两个地址分别是主机位全 0 的网络地址和主机位全 1 的广播地址。这里的“主机数”应理解为能配置的接口地址数;实际规划时,还应为网关、服务器等保留地址。
| 已知需求 | 计算方式 |
|---|---|
| 至少需要 N 个等大的子网 | 找最小的 k,使 2 的 k 次方不小于 N;借 k 位,新前缀为/p+k |
| 每个子网至少需要 H 个可用主机地址 | 找最小的 h,使 2 的 h 次方减 2 不小于 H;保留 h 位主机位,新前缀为/32-h |
若两个条件同时存在,必须同时满足子网数量和每个子网容量,不能只计算其中一个。
三、实战一:把/22等分为 4 个子网
把192.168.4.0/22划成 4 个大小相同的子网。
1. 确定新前缀
4 个子网需要 2 位不同的组合:
2 的 2 次方 = 4原前缀是/22,借 2 位后,新前缀就是/24。原来有 10 位主机位;划分后每个子网剩下 8 位主机位,所以每个子网有 256 个地址,通常可使用 254 个主机地址。
192.168.4.0/22 前 22 位:原地址块共同的网络前缀 再借 2 位:区分 4 个子网 剩余 8 位:每个子网自己的主机部分2. 列出子网边界
/24的地址块大小为 256 个地址。原/22覆盖四个连续的/24,因此得到:
| 子网 | 网络地址 | 广播地址 | 常见可用主机范围 |
|---|---|---|---|
192.168.4.0/24 | 192.168.4.0 | 192.168.4.255 | 192.168.4.1到192.168.4.254 |
192.168.5.0/24 | 192.168.5.0 | 192.168.5.255 | 192.168.5.1到192.168.5.254 |
192.168.6.0/24 | 192.168.6.0 | 192.168.6.255 | 192.168.6.1到192.168.6.254 |
192.168.7.0/24 | 192.168.7.0 | 192.168.7.255 | 192.168.7.1到192.168.7.254 |
四个子网首尾相接,不重叠,也没有越出192.168.4.0/22的范围。它们可以分别分配给四个楼层;公司出口路由器对外仍可用一条192.168.4.0/22汇总这四条连续路由。
3. 每个小子网都有自己的边界
未划分时,192.168.4.0/22的网络地址是192.168.4.0,广播地址是192.168.7.255。划成/24后,每个小子网都有自己的网络地址和广播地址,192.168.5.0、192.168.6.0这些中间边界也不能再分配给各自子网中的主机。
所以,地址是否可用取决于实际配置的子网前缀,而不取决于它表面上是否以.0或.255结尾。
四、实战二:每个子网至少需要 50 台主机
假设仍拥有192.168.4.0/22,但需求换成“每个部门至少需要 50 个可用主机地址”。这次应从保留多少主机位开始计算:
保留 5 位主机:2 的 5 次方 - 2 = 30,不够 保留 6 位主机:2 的 6 次方 - 2 = 62,够用因此每个子网要保留 6 位主机位,新前缀为/26,掩码为255.255.255.192。每个/26块总共 64 个地址,通常可分配 62 个主机地址。
在192.168.4.0/24范围内,/26的块大小为 64,网络地址的最后一段每次递增 64:
| 子网 | 网络地址 | 广播地址 | 常见可用主机范围 |
|---|---|---|---|
192.168.4.0/26 | 192.168.4.0 | 192.168.4.63 | 192.168.4.1到192.168.4.62 |
192.168.4.64/26 | 192.168.4.64 | 192.168.4.127 | 192.168.4.65到192.168.4.126 |
192.168.4.128/26 | 192.168.4.128 | 192.168.4.191 | 192.168.4.129到192.168.4.190 |
192.168.4.192/26 | 192.168.4.192 | 192.168.4.255 | 192.168.4.193到192.168.4.254 |
从/22到/26一共借了 4 位,因此整个/22最多可以划出 16 个等大的/26子网。上表只列出了192.168.4.*这一段的 4 个,后面还可以按相同规则继续划分。
五、怎样快速检查子网边界?
子网列表最容易错在“步长”。地址块大小就是每个子网占用的地址数量;在发生变化的那个字节中,网络地址必须落在这个步长的整数倍位置。
例如/26有 6 位主机位,块大小为 64,因此最后一段的合法网络起点只有:
0、64、128、192所以192.168.4.64/26是正确的网络地址;192.168.4.70/26不是子网起点,而是属于192.168.4.64/26的普通地址。把192.168.4.70与/26掩码按位与,得到的网络地址仍是192.168.4.64。
当边界跨字节时,更不能只看最后一段。例如/22的块大小体现在第三段:第三段会从 0、4、8、12……开始。192.168.4.0/22就覆盖第三段为 4、5、6、7 的连续地址范围。
六、子网数与主机数的取舍
地址块固定时,借的位数越多,子网越多;但每个子网保留的主机位越少:
从/22划分后的前缀 | 等大子网数 | 每个子网地址总数 | 常见可用主机地址数 |
|---|---|---|---|
/23 | 2 | 512 | 510 |
/24 | 4 | 256 | 254 |
/25 | 8 | 128 | 126 |
/26 | 16 | 64 | 62 |
子网不是切得越细越好。切得过细,某个部门会很快没有可用地址;切得过粗,广播域可能过大、隔离也不足。合理做法是先统计各区域所需接口数,再选择有适当余量的前缀。
如果区域规模差异很大,可以按需划分出不同大小的子网:先为主机数最多的区域分配较大的块,再依次分配较小的块。这种做法常称为可变长子网掩码(VLSM)。无论子网大小是否相同,都要保证边界对齐、彼此不重叠,并且完全包含在原地址块中。
七、常见误区
| 误区 | 更准确的理解 |
|---|---|
| 切成 4 个子网,就是把范围随意分成 4 份 | 子网必须是更长的连续网络前缀,边界必须按块大小对齐 |
| 借 3 位后,每网仍有原来的主机数 | 借出的位来自原主机位;每网地址数变为原来的八分之一 |
| 只需保留大地址块的第一个和最后一个地址 | 划分后每个小子网都有各自的网络地址和广播地址 |
.0一律不能配置给主机 | 只有当前前缀下主机位全为 0 时,它才是网络地址 |
| CIDR 没有子网号字段,就不能划分子网 | CIDR 仍可通过延长前缀划分出更小的地址块 |
八、总结
子网划分就是从已有地址块的主机位中借出若干位,使网络前缀变长。借 k 位能得到 2 的 k 次方个等大的子网;每个子网剩余的主机位决定地址总数和可用主机数。实际规划时,应先明确要多少个网段、每个网段要容纳多少接口,再计算前缀、列出网络地址和广播地址,并检查边界是否对齐、是否重叠。
至此,IPv4 地址、掩码、CIDR 和子网划分已经形成一条完整的计算链。接下来会回到 IP 数据报本身,看看它在路由器之间转发时,TTL 为什么递减、过大的数据报为什么可能需要分片,以及首部校验和究竟校验什么。
如果这篇文章对你有帮助,欢迎点赞、评论、关注、收藏。你们的支持是我前进的动力!