来看下面这道题目:
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 |