判断两个无类(CIDR)地址是否属于同一个子网
🎯 问题本质:
判断两个 IP 地址是否属于同一个子网,其实就是 对比它们的"网络地址"是否相同。
🔍 原理步骤(通用方法)
我们按步骤来判断:
✅ 步骤 1:将两个 IP 地址转换为二进制
✅ 步骤 2:根据它们的 CIDR 前缀提取"网络位"
✅ 步骤 3:对比网络位是否一致
→ 一致:同一子网
→ 不一致:不同子网
🧠 举个例子
假设你有两个无类地址:
IP1: 192.168.1.65/26
IP2: 192.168.1.70/26
我们来判断它们是不是属于同一个子网。
✅ 第一步:看前缀 /26 → 表示前 26 位是网络位
- IP 地址是 32 位的
- /26 意味着:前 26 位用于网络,后 6 位用于主机
✅ 第二步:转换为二进制
IP1: 192.168.1.65
192 = 11000000
168 = 10101000
1 = 00000001
65 = 01000001
合并:11000000.10101000.00000001.01000001
IP2: 192.168.1.70
70 = 01000110
→ 合并:11000000.10101000.00000001.01000110
✅ 第三步:取前 26 位作为"网络位"
我们看前 26 位是否一样:
IP1: 11000000.10101000.00000001.01**000001**
IP2: 11000000.10101000.00000001.01**000110**
↑ 前 26 位完全一致
所以:这两个 IP 属于 同一个子网(192.168.1.64/26)
🔢 快速简化方法(不转二进制)
我们不想每次都手动写二进制,可以用掩码与运算法快速判断:
🔧 使用 AND 运算方法(更通用)
公式:
网络地址 = IP地址 & 子网掩码
对两个 IP 都执行与运算后,比较结果是否相同即可。
🛠 工具人方式(用十进制做):
子网掩码 /26
= 255.255.255.192
即:
11111111.11111111.11111111.11000000
→ 最后一个字节是 192,表示步长是 64:
子网范围 | 广播地址 |
---|---|
192.168.1.0/26 | 192.168.1.63 |
192.168.1.64/26 ✅ | 192.168.1.127 |
192.168.1.128/26 | 192.168.1.191 |
所以:
- 192.168.1.65 属于 192.168.1.64/26
- 192.168.1.70 也属于 192.168.1.64/26
结论 ✅:它们在同一子网
✨ 一句话总结法
两个 IP + 相同前缀下,只要 IP 地址处在同一个"子网范围",就是同一子网。
附加
第一项: 如何划分出主机数大于 254 的子网 ,这是理解 CIDR 无类划分的 进阶应用
🧠 一、CIDR 的主机数计算规律
主机数取决于"主机位"的数量(32位 IP 减去网络位数):
✨ 计算公式:
主机数 = 2^(32 - 前缀位数) - 2
(减2是因为要去掉 网络地址 和 广播地址)
🚀 二、主机数 > 254 的 CIDR 范围
我们来看看每个前缀下的主机数:
CIDR 前缀 | 主机位数 | 可用主机数 | 子网掩码 |
---|---|---|---|
/24 | 8 位 | 254 台 | 255.255.255.0 |
/23 | 9 位 | 510 台 | 255.255.254.0 |
/22 | 10 位 | 1022 台 | 255.255.252.0 |
/21 | 11 位 | 2046 台 | 255.255.248.0 |
✅ 所以:
如果你想支持「大于 254 台主机」,你就得使用 前缀更小于 /24 的 CIDR 子网 ,比如
/23
,/22
,/21
等。
🧪 举个例子
你想划分一个子网,至少容纳 1000 台主机:
- 试
/22
:2¹⁰ = 1024 → 可用主机数 = 1024 - 2 = 1022 ✔️ - 所以你可以使用:
192.168.0.0/22
该子网范围是:
起始地址:192.168.0.0
结束地址:192.168.3.255
可用主机地址范围:192.168.0.1 ~ 192.168.3.254
它覆盖了 192.168.0.0 ~ 192.168.3.255,整整 4 个 /24 网段!
🔧 如何选取更大的主机数子网(思维方式)
- 你有多少主机?👉 算出最小能满足的 2^n ≥ 主机数 + 2(包含广播和网络地址)
- 计算主机位数 n 👉 得出 CIDR 前缀 = 32 - n
- 子网掩码 = 把前缀转换成十进制形式
- 划出地址范围,用来配置 DHCP、静态分配等
💡 一个反常识点(容易忽略)
很多人以为
/24
是最大的子网,其实不是!CIDR 是可以让网络变大也可以变小的。
比如:
/16
子网可容纳 65534 台主机(如 192.168.0.0/16)/8
子网最多可容纳 16777214 台主机(比如 10.0.0.0/8)
🎓 总结一张表
目标主机数量 | 选择的 CIDR 前缀 | 子网掩码 | 可用主机数 |
---|---|---|---|
≤ 254 | /24 | 255.255.255.0 | 254 |
≤ 510 | /23 | 255.255.254.0 | 510 |
≤ 1022 | /22 | 255.255.252.0 | 1022 |
≤ 2046 | /21 | 255.255.248.0 | 2046 |
≤ 4094 | /20 | 255.255.240.0 | 4094 |
≤ 65534 | /16 | 255.255.0.0 | 65534 |