子网划分不会?瑞哥带你深入理解 IP 地址,手把手教你子网划分!
1. 什么是 IP 地址
IP 地址在网络中用于标识一个节点(例如一台主机,或者一个网络设备的接口)。
在 IP 网络中,数据包的寻址是基于 IP 地址来进行的,因此 IP 地址就像是现实生活中的地址一样。
IP 协议定义了 IP 数据报文的格式,也定义了数据报文寻址的方式。目前我们在业务环境中常见的 IP 主要是两个版本:IPv4 及 IPv6,而现阶段网络主体仍然是 IPv4,但是在可预见的未来,会逐渐向 IPv6 过渡。本文只介绍 IPv4。
一个 IPv4 地址有 32bit。当然,我们不可能用二进制来书写 IPv4 地址,那是低效的,我们通常采用十进制格式来书写 IP 地址,但是计算机在进行 IP 地址的相关计算工作时,无疑是通过二进制的形式来进行。因此掌握十进制到二进制的数制转换是必备的技能。
IPv4 地址通常采用“点分十进制”表示,以适应人类的读写习惯,例如192.168.1.1
。
2. 十进制与二进制的转换
“点分十进制”IP 地址表现形式能够帮助我们更好的使用网络,但网络设备在对 IP 进行计算时使用的是二进制的操作方式,例如:
以下是 192 这个数字,对应的二进制算法,这里就不再赘述了,这是基本技能。
3. IP 地址的分类
IPv4 地址的长度为 32bit,如上图所示,IPv4 地址的空间从0.0.0.0
一直到 255.255.255.255
,这么庞大的空间,如果不加以区分和规划,势必不便于统筹管理。因此我们对整个 IPv4 地址空间进行类别上的划分,一共分为 5 类:
地址的类别上的区分主要体现在第一个八位组(一个 IP 地址拥有 4 个八位组)上:
第一个八位组首位恒定为 0,那么我们就得到一个区间:
0.0.0.0
一直到127.255.255.255
。这是 A 类地址,其中 127.0.0.0/8 作为本地回环使用,例如你 ping 127.0.0.1 实际上 ping 的是本机。所以如果看到一个 IP 地址,它的首个八位组掉落在 1-126 区间内,那么这是一个 A 类地址第一个八位组的最高两位恒定为二进制的 10,就得到一个区间:
128.0.0.0
-191.255.255.255
,这是 B 类地址。第一个八位组的最高三位恒定为 110,就得到一个区间:
192.0.0.0
–223.255.255.255
,这是 C 类地址。第一个八位组的最高四位恒定为 1110,就得到一个区间:
224.0.0.0
–239.255.255.255
,这是 D 类地址,这个类别的地址专门用于组播剩下的是 E 类地址,这类地址保留作为研究使用。
4. 网络掩码(Network Mask)
一个 IP 地址包含两部分:网络部分以及主机部分。网络部分用于表示这个 IP 地址所处的“空间”,对于一台路由器而言,当它在为数据包寻址时,通常只关心 IP 地址的网络部分。那么如何区分一个 IP 地址中的网络与主机部分呢——网络掩码(Network Mask,简称 netmask)用于和 IP 地址进行对应,从而标识出 IP 地址中的网络与主机部分。
网络掩码为 32bit,与 IPv4 地址的位数是一样的。
网络掩码在二进制的表示上是一堆连续的 1,后面接连续的 0。
网络掩码值为 1 的 bit 对应 IP 地址中的网络位;为 0 的 bit 对应 IP 地址中的主机位,以此来识别一个 IP 地址中的网络与主机位,如下图:
为了方便书写,我们往往使用掩码长度的方式来表示一个 IP 地址+掩码组合,例如192.168.1.1255.255.255.0
等同于192.168.1.1/24
。因为255.255.255.0
写成二进制的话,从左往右数就是 24 个 1,所以我们也说,它的掩码长度为 24。
默认情况下,A 类 IP 地址的首个八位组为网络位,其他位为主机位,因此 A 类地址的默认掩码就是255.0.0.0
,或者说掩码长度为/8
。B 类 IP 地址前两个八位组为网络位,后两个八位组为主机位,因此 B 类地址的默认掩码就是255.255.0.0
或者掩码长度/16
。C 类地址的前三个八位组为网络位,最后一个八位组是主机位,因此 C 类地址的默认掩码就是255.255.255.0
,或者掩码长度为/24
。从这里可以看出,如果申请到一个 A 类地址段123.0.0.0/8
,那么这是一个相当庞大的地址空间,因为这个空间有 2 的 24 次方个 IP 地址。相对的,一个 B 类的 IP 网络地址空间默认有 2 的 16 次方个 IP 地址,而每个 C 类地址段所拥有的主机数量则更少。
5. IP 地址类型
网络地址
用于标识一个网络,相当于一个“面”的概念。网络地址是一个 IP 地址中主机位为全 0 的地址。例如192.168.10.0/24
,该地址标识了一个网络,在这个网络中,存在多个 IP 地址,可用于分配给各种设备,例如192.168.10.1
、192.168.10.2
、…、192.168.10.254
,这些地址都属于192.168.10.0/24
网络。网络地址不能够被分配给主机。
广播地址
用于向网络中的所有节点发送数据的特殊地址。广播地址即主机部分的各比特位全部为 1 的地址。例如192.168.10.255/24
,该地址是192.168.10.0/24
这个网络的广播地址。
节点地址
可分配给网络中的设备的地址。例如92.168.10.1/24
至192.168.1.254/24
。网络地址及广播地址是不能够直接被分配给某个设备(的网卡)或者网络设备(的接口)的,因为它们有特殊用途。
例:192.168.1.0
这个 C 类地址对应的网络地址、广播地址及可分配 IP 地址分别是?
6. 为什么要划分子网
假设你有一个 B 类地址段172.16.0.0/16
,由于 B 类地址的默认掩码是255.255.0.0
,这就意味着这个网络内有 2 的 16 次方个 IP 地址,而可分配给设备使用的 IP 地址就有 2 的 16 次方-2 这么多个,为什么要减去 2?因为广播地址及网络地址是不能分配给设备使用的。
设想一下,如果一个网络中真有这么多台 PC,这么多个 IP 地址处于同一个网段中、同一个广播域中,如上图所示,那么一旦网络中发生广播,影响可就大了。再者,在实际的业务环境中,我们往往会给一个业务单元(例如一个公司内的各个部门),划分一个独立的 IP 网段,不同的业务单元不同的 IP 网段,那么如果有 10 个业务单元,每个业务单元才几十近百台设备,一个业务单元就耗费一个 B 类地址段,这就会造成 IP 地址的浪费。
因此,我们提出子网划分的概念,子网划分所使用的思维是 VLSM(Variable Length Subnet Mask,可变长子网掩码),事实上是拿网络掩码变戏法。在下图中有五个网段,需要五个 IP 地址段,如果只有一个 B 类地址(172.16.0.0/16
)可用,那么通过子网划分,可以将这个 B 类地址划分成一个个小一点的子网。这样一来,一个庞大的网络就可以被分割成小的单元,另外 IP 地址的使用也更为科学更为合理。
7. 如何划分子网
现在假设我们有一个 B 类地址段172.16.0.0/16
,默认情况下,这个 B 类地址的掩码为255.255.0.0
,前两个八位组是网络位,后两个八位组是主机位。那么这个单一的网络中,有 2 的 16 次方个 IP 地址,如上图所示,非常庞大。
现在,在原有网络位的基础上,再向主机位借一个 bit 作为网络位的补充,网络位就扩充到了 17bit,相对的主机位就变成了 15bit。那么借过来的这一位,就是子网位了,如上图所示。由于我们借了这一位,因此网络掩码就从默认的255.255.0.0
变成了255.255.128.0
或者说从/16
变成了/17
。
于是从原来的只有172.16.0.0/16
的一个大网段,变成现在拥有172.16.0.0/17
及172.16..128.0/17
这两个小一点的网段,这就是子网划分。务必要关注网络掩码在这个过程中发挥的作用。
8. 子网划分例子一
现在有一个 IP 地址:192.168.1.0
,这是一个 C 类地址,默认的掩码是/24,我要对它做子网划分,向主机位借一位作为子网位,也就是掩码长度变成/25
,那么我能得到几个子网?每个子网的网络地址是多少?每个子网的广播地址是多少?每个子网的可用 IP 地址范围是多少?
步骤如下:
A.判断类别,找默认掩码:
首先这是一个 C 类地址,因此默认的掩码长度为/24
,你可以划一条竖线帮助计算。线的左边为网络位,右边为主机位,如上图所示。
B.变更掩码,找子网:
在原有的/24 掩码基础上,向主机位借一位,掩码变成/25。借出来的这一位就是子网位,如上图所示,我们只要将虚线往右移动一格就行。这个子网位的值要么为 0,要么为 1,也就是存在两种可能性,这就创造了两个子网(2 的 1 次方),子网位为 0 时,得到的子网地址是192.168.1.0/25
,子网位为 1 时,得到另一个子网的网络地址192.168.1.128/25
,如下图所示:
C.得出广播地址:
上面分别列出了子网 1 及子网 2 的广播地址,其实很简单,就是把各个子网的主机位全部置 1 即可。因此子网192.168.1.0/25
的广播地址为192.168.1.127
;子网192.168.1.128/25
的广播地址为192.168.1.255
;
D.得出每个子网的可用 IP 地址数量:
经过上面的计算,得出了子网 1 及子网 2 的网络地址和广播地址,那么每个子网可用的 IP 地址也就出来了,因为可用 IP 地址实际上就是该子网的网络地址与广播地址之间夹着的那些个 IP 地址。所以实际上我们对192.168.1.0/24
这个 C 类地址段,用了一个变长后的子网掩码长度:/25
,也就是向主机位借 1 位后产生出了 2 个子网,每个子网有 126 个可用 IP 地址。这里有个公式:
9. 子网划分例子二
假设现在有一个 IP 地址:192.168.1.64/27
,想把这个地址配置在一台 PC 上,是否可行?
由于该地址的默认掩码长度为/24,而新掩码长度为/27
,因此网络位向主机位借了 3 位,产生了 8 个子网,每个子网内包含的所有 IP 地址数量为 32,也就是 2 的 5 次方(5 是剩余的主机位数)。现在开始把每个子网罗列一下,结果发现192.168.1.64/27
这个 IP 地址,其实是其中一个子网的网络地址,既然是网络地址,当然是不能分配给 PC 用的了。
评论