浏览器不兼容

由于本站使用了较新的技术(如 CSS 值函数 oklch),您的浏览器版本过低,可能无法正确渲染本站内容。请先更新您的浏览器。
至少需要 Chrome/Edge 111,Firefox 113,Opera 97,或 Safari 15.4。
更新浏览器

2059 字
10 分钟
对于给定网络地址划分指定数量子网及计算子网的详细信息的保姆级教程

来看下面这道题目:

IP 地址 192.168.10.0/24
划分 4 个子网
分别写出第一个、第二个、第三个、第四个子网的掩码、网络地址、广播地址、可用地址范围、可用地址数量

先把 IP 地址转换成二进制:

1100 0000.1010 1000.0000 1010.0000 0000

上面二进制里的空格只是为了方便阅读

删掉小数点,这东西只会影响你计算

1100 0000 1010 1000 0000 1010 0000 0000

接下来看子网掩码:

题中 “24” 是网络前缀,同样也是在描述子网掩码,只是方法不一样:

24 是指从前往后有 24 个二进制的 1

IP(IPv4)地址和子网掩码都是 32 位(二进制数)的长度

因此,“24” 写出来也就是:

1111 1111 1111 1111 1111 1111 0000 0000

如果你想看 255.255.255.0 这种形式,可以把上面的二进制每八位加一个小数点

1111 1111.1111 1111.1111 1111.0000 0000

再每段分别转成十进制

255.255.255.0

这样就能互相转换了

接下来回到正题:

IP 地址:1100 0000 1010 1000 0000 1010 0000 0000
子网掩码:1111 1111 1111 1111 1111 1111 0000 0000

根据题目,我们需要在这个 /24 里划分 4 个子网,因此借用一点主机位。

主机位是啥:

看子网掩码:

1111 1111 1111 1111 1111 1111 0000 0000
++++ ++++ ++++ ++++ ++++ ++++ ==== ====

其中,1(也就是下面有“+”的位)代表网络位,0 代表主机位(也就是下面有“=”的位)

如何在 IP 地址中体现出来?

将 IP 地址和子网掩码两者逐位进行与运算。与运算是啥?

A AND B = C

若 A 和 B 都是 1,则 C 为 1

否则(A 或 B 任意一个为 0),C 为 0

例如:

1 AND 1 = 1
0 AND 1 = 0
1 AND 0 = 0
0 AND 0 = 0

那么,我们把 IP 和掩码列出来,逐位进行与运算

(第一行为 IP,第二行为掩码,第四行是与运算的结果)

1100 0000 1010 1000 0000 1010 0000 0000
1111 1111 1111 1111 1111 1111 0000 0000
==== ==== ==== ==== ==== ==== ==== ====
1100 0000 1010 1000 0000 1010 0000 0000

不要关心结果,自己算一下,注意过程。不难发现,只要子网掩码里有 0,结果就一定是 0;子网掩码里是 1,结果就取决于 IP。这样子网掩码就成功地“掩”上了主机位,只剩下了网络位

也就是无论主机位怎么变化,都能被“掩”上,不会影响网络位

如果你还是没注意到,看这(这个例子的 IP 是我随便写的,不用关心):

这些(%)下面的数字,
全部都是原样搬到结果里面 ↓ ↓ 这里无论是什么,都不会在结果里
%%%% %%%% %%%% %%%% %%%% %%%% ↓↓↓↓ ↓↓↓↓
1100 0000 1010 1000 0000 1010 1010 0101
1111 1111 1111 1111 1111 1111 0000 0000 ← 这里是 0
==== ==== ==== ==== ==== ==== ==== ====
1100 0000 1010 1000 0000 1010 0000 0000
#### #### #### #### #### #### ↑↑↑↑ ↑↑↑↑
这些(#)上面的数字, ↑ 结果永远是 0
全部都是原样来自于 IP 里面

那主机位是啥?

就是被掩上的部分,比如最开始的题目里,被掩上的就是 0000 0000;上一个例子里,是 1010 0101

我知道你现在很想把它们都写成点分十进制,但你别写,用二进制算。

回到最开始的题目:

我们需要在这个 /24 里划分 4 个子网,因此需要借用一点主机位来划分子网。

如何确定要借用多少位?

先来看:如果借用 1 位(二进制位),则只有:

0
1

那么只有两个子网,显然不够,继续:

借用 2 位:

00
01
10
11

有四个子网了,够了

假设我们要划 7 个子网,还不够咋办?接着划。此时借用 3 位:

000
001
010
011
100
101
110
111

现在有 8 个子网,够了。

可以注意到,借用 n 位得到的可用子网数量就是 2 的 n 次方

比如借用 1 位,数量是 2 的 1 次方,就是 2;

借用 2 位,2 的 2 次方,就是 4;

借用 3 位,2 的 3 次方,就是 8。以此类推

回到借用 2 位:

那么我们的子网掩码就由

1111 1111 1111 1111 1111 1111 0000 0000

变成了

1111 1111 1111 1111 1111 1111 1100 0000
↑↑

因此借用完成后的子网掩码转换成点分十进制就是

255.255.255.192

好了,忘掉这个点分十进制吧,用二进制

可以注意到,我们借用了两位主机位,用来划分子网:

1111 1111 1111 1111 1111 1111 1100 0000
↑↑

那么放到 IP 地址里看就是这样:

↓ 这两位
↓↓
1100 0000 1010 1000 0000 1010 0000 0000

两个空位,0 和 1 排列组合:

00
01
10
11

也套到 IP 地址里:

↓ 这两位
↓↓
1100 0000 1010 1000 0000 1010 0000 0000
1100 0000 1010 1000 0000 1010 0100 0000
1100 0000 1010 1000 0000 1010 1000 0000
1100 0000 1010 1000 0000 1010 1100 0000

这就是我们划分出的四个子网了。

如果你就是想看点分十进制,它们依次是:

192.168.10.0
192.168.10.64
192.168.10.128
192.168.10.192

接下来来看网络地址、广播地址、可用地址范围

首先,网络地址就是主机位全是 0 的地址:

↓ 这六位是主机位
↓↓ ↓↓↓↓
1100 0000 1010 1000 0000 1010 0000 0000
1100 0000 1010 1000 0000 1010 0100 0000
1100 0000 1010 1000 0000 1010 1000 0000
1100 0000 1010 1000 0000 1010 1100 0000
↑↑
↑ 这两位是刚才借走拿去划子网的主机位,
现在它们不属于主机位了,叫做子网位

如上,“这六位是主机位” 的箭头所指向的就是主机位,下面的箭头是我们借用了原来的 2 位主机位,这两位现在不再代表主机,而是用来标识子网,我们称之为”子网位”

因此,新的网络前缀是 24(原网络位) + 2(子网位) = 26 位。剩下的 6 位才是新的主机位

主机位全 0 就是网络地址,因此,它们的网络地址就是

1100 0000 1010 1000 0000 1010 0000 0000
1100 0000 1010 1000 0000 1010 0100 0000
1100 0000 1010 1000 0000 1010 1000 0000
1100 0000 1010 1000 0000 1010 1100 0000

点分十进制:

192.168.10.0
192.168.10.64
192.168.10.128
192.168.10.192

请注意,第一个子网的网络地址(192.168.10.0)和原始网络的网络地址是相同的,这是正常现象

广播地址是主机位全是 1 的 IP 地址:

↓ 这六位是主机位
↓↓ ↓↓↓↓
1100 0000 1010 1000 0000 1010 0011 1111
1100 0000 1010 1000 0000 1010 0111 1111
1100 0000 1010 1000 0000 1010 1011 1111
1100 0000 1010 1000 0000 1010 1111 1111
↑↑
↑ 这两位是刚才借走拿去划子网的主机位,
现在它们不属于主机位了

因此,它们的广播地址写成点分十进制就是:

192.168.10.63
192.168.10.127
192.168.10.191
192.168.10.255

接下来来看可用地址范围。一个网段除了全 0(网络地址)和全 1(广播地址),其余均可使用

因此,以

1100 0000 1010 1000 0000 1010 0000 0000

(192.168.10.0)为例,它的可用范围就是

↓ 注意这里
↓↓ ↓↓↓↓
1100 0000 1010 1000 0000 1010 0000 0000 ← 这个主机位全 0,是网络地址,用不了
1100 0000 1010 1000 0000 1010 0000 0001 ← (注意看主机位:000001) 从这开始
1100 0000 1010 1000 0000 1010 0000 0010
太多了列不完省略部分...
1100 0000 1010 1000 0000 1010 0011 1101
1100 0000 1010 1000 0000 1010 0011 1110 ← (注意看主机位:111110) 一直到这,都可以用
1100 0000 1010 1000 0000 1010 0011 1111 ← 这个主机位全 1,是广播地址,用不了

因此,可用地址数量就是 6 位二进制数不重复的情况下能排列组合出的所有数字减掉 2(全 0 和全 1),也就是 2 的六次方减 2 = 64 - 2 = 62

可用地址范围(转成点分十进制)就是

192.168.10.1 ~ 192.168.10.62

以此类推,四个子网的可用地址范围就是

192.168.10.1 ~ 192.168.10.62
192.168.10.65 ~ 192.168.10.126
192.168.10.129 ~ 192.168.10.190
192.168.10.193 ~ 192.168.10.254

所以题目最终的答案就是:

子网子网掩码网络地址广播地址可用地址范围可用地址数量
子网 1255.255.255.192192.168.10.0192.168.10.63192.168.10.1 ~ 192.168.10.6262
子网 2255.255.255.192192.168.10.64192.168.10.127192.168.10.65 ~ 192.168.10.12662
子网 3255.255.255.192192.168.10.128192.168.10.191192.168.10.129 ~ 192.168.10.19062
子网 4255.255.255.192192.168.10.192192.168.10.255192.168.10.193 ~ 192.168.10.25462
对于给定网络地址划分指定数量子网及计算子网的详细信息的保姆级教程
https://blog.duckburnincense.com/posts/step-by-step-guide-to-subnetting-a-network-into-a-specified-number-of-subnets/
作者
DuckBurnIncense
发布于
2025-09-18
许可协议
CC BY-NC 4.0