来看下面这道题目:
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 = 10 AND 1 = 01 AND 0 = 00 AND 0 = 0
那么,我们把 IP 和掩码列出来,逐位进行与运算
(第一行为 IP,第二行为掩码,第四行是与运算的结果)
1100 0000 1010 1000 0000 1010 0000 00001111 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 01011111 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 位(二进制位),则只有:
01
那么只有两个子网,显然不够,继续:
借用 2 位:
00011011
有四个子网了,够了
假设我们要划 7 个子网,还不够咋办?接着划。此时借用 3 位:
000001010011100101110111
现在有 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 排列组合:
00011011
也套到 IP 地址里:
↓ 这两位 ↓↓1100 0000 1010 1000 0000 1010 0000 00001100 0000 1010 1000 0000 1010 0100 00001100 0000 1010 1000 0000 1010 1000 00001100 0000 1010 1000 0000 1010 1100 0000
这就是我们划分出的四个子网了。
如果你就是想看点分十进制,它们依次是:
192.168.10.0192.168.10.64192.168.10.128192.168.10.192
接下来来看网络地址、广播地址、可用地址范围
首先,网络地址就是主机位全是 0 的地址:
↓ 这六位是主机位 ↓↓ ↓↓↓↓1100 0000 1010 1000 0000 1010 0000 00001100 0000 1010 1000 0000 1010 0100 00001100 0000 1010 1000 0000 1010 1000 00001100 0000 1010 1000 0000 1010 1100 0000 ↑↑ ↑ 这两位是刚才借走拿去划子网的主机位, 现在它们不属于主机位了,叫做子网位
如上,“这六位是主机位” 的箭头所指向的就是主机位,下面的箭头是我们借用了原来的 2 位主机位,这两位现在不再代表主机,而是用来标识子网,我们称之为”子网位”
因此,新的网络前缀是 24(原网络位) + 2(子网位) = 26 位。剩下的 6 位才是新的主机位
主机位全 0 就是网络地址,因此,它们的网络地址就是
1100 0000 1010 1000 0000 1010 0000 00001100 0000 1010 1000 0000 1010 0100 00001100 0000 1010 1000 0000 1010 1000 00001100 0000 1010 1000 0000 1010 1100 0000
点分十进制:
192.168.10.0192.168.10.64192.168.10.128192.168.10.192
请注意,第一个子网的网络地址(192.168.10.0)和原始网络的网络地址是相同的,这是正常现象
广播地址是主机位全是 1 的 IP 地址:
↓ 这六位是主机位 ↓↓ ↓↓↓↓1100 0000 1010 1000 0000 1010 0011 11111100 0000 1010 1000 0000 1010 0111 11111100 0000 1010 1000 0000 1010 1011 11111100 0000 1010 1000 0000 1010 1111 1111 ↑↑ ↑ 这两位是刚才借走拿去划子网的主机位, 现在它们不属于主机位了
因此,它们的广播地址写成点分十进制就是:
192.168.10.63192.168.10.127192.168.10.191192.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 11011100 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.62192.168.10.65 ~ 192.168.10.126192.168.10.129 ~ 192.168.10.190192.168.10.193 ~ 192.168.10.254
所以题目最终的答案就是:
子网 | 子网掩码 | 网络地址 | 广播地址 | 可用地址范围 | 可用地址数量 |
---|---|---|---|---|---|
子网 1 | 255.255.255.192 | 192.168.10.0 | 192.168.10.63 | 192.168.10.1 ~ 192.168.10.62 | 62 |
子网 2 | 255.255.255.192 | 192.168.10.64 | 192.168.10.127 | 192.168.10.65 ~ 192.168.10.126 | 62 |
子网 3 | 255.255.255.192 | 192.168.10.128 | 192.168.10.191 | 192.168.10.129 ~ 192.168.10.190 | 62 |
子网 4 | 255.255.255.192 | 192.168.10.192 | 192.168.10.255 | 192.168.10.193 ~ 192.168.10.254 | 62 |