Subnetting

子网划分是一种用于网络的组织技术,用于将网络划分为子网。子网划分的工作原理是利用 CIDR 表示法 重新委派 IP 地址中的位来为主机或网络提供服务。

Subnet Mask

子网掩码告诉您 IP 地址的哪些部分是网络位,哪些部分是主机位。子网掩码中设置为 255 的每个八位字节表示属于网络的整个字节。子网掩码中的每个 0 表示属于主机的位:

1
2
3
4
5
6
7
IP Address    : 192.168.32.5
Subnet Mask : 255.255.255.0
CIDR Notation : 192.168.32.5/24

# According to the Subnet mask:
Network Bits : 192.168.32.x (total of 24 bits)
Host bits : x.x.x.5 (total of 8 bits)

主机位

IP 地址中为主机保留的位数告诉我们网络可以支持多少主机(网络上可以有多少设备拥有自己唯一的 IP 地址)。

在为主机保留 8 位的 /24 网络中,该网络上可以有 2^8 (256) 个主机/设备(负 2,因为 0 地址被保留,通常用于路由器并计为第一个地址)。

通配符掩码

通配符掩码是反转的子网掩码。要创建通配符掩码,您必须获取二进制子网掩码的“按位补码”(即所有 1 位都变为 0,所有 0 位都变为 1):

1
2
3
4
5
IP Address (CIDR)    : 192.168.0.0/23
Subnet Mask : 255.255.254.0
Subnet Mask (binary) : 11111111.11111111.11111110.00000000
Wildcard (binary) : 00000000.00000000.00000001.11111111
Wildcard Mask : 0.0.1.255

查找子网的地址范围时,通配符掩码非常有用。例如,对于 /23 网络,您知道子网掩码为 255.255.254.0,因此通配符掩码为 0.0.1.255

第三个八位字节中,唯一可以翻转以形成唯一地址的位是第一位 (0000000(1))。它可以是 10。第三个八位位组中的其余位对于地址空间“不可用”(就像前两个八位位组中的位一样)。

第四个八位位组中的每一位都可以翻转为 10 ,总共提供 2^8 (256) 个组合,从而获得 256 个唯一地址。

这意味着第三个八位位组设置为 0 时有 256 个可能的地址,第三个八位位组设置为 1 时还有 256 个附加可能的地址。因此地址 192.168.0.0/23 的 IP 地址范围是:

1
2
3
4
Third octet set to 0 :
Range : 192.168.0.0 - 192.168.0.255
Third octet set to 1 :
Range : 192.168.1.0 - 192.168.1.255

总共 512 个唯一的 IP 地址。

更改子网掩码

子网划分只是“更改子网掩码”以允许 IP 地址支持更多网络。要在 IP 地址中创建子网,需要从地址的主机部分获取位并“赋予”网络部分。

位只能从最低有效位到最高有效位获取:

1
2
3
4
5
6
7
8
9
10
IP Address  : 192.168.32.5
Subnet Mask : 255.255.255.0 --> in binary: 11111111.11111111.11111111.00000000
# Bits cannot be taken from just anywhere in the subnet mask:
Wrong : 11111111.11111111.11111111.00000(0)00
# Bits have to be taken starting on the left side (the left-most host bit):
Correct : 11111111.11111111.11111111.(0)0000000
# The new subnet mask becomes:
Binary : 11111111.11111111.11111111.10000000
Decimal : 255.255.255.192
CIDR : 192.168.32.5/25

决定采用多少位

从网络中获取的位数决定了可以创建多少个子网络。可能的子网数量 = 2^(占用了多少位)。

例如:创建 4 个子网 = 2^x。求解 x 得到 2,这意味着需要从主机位中取出 2 位来创建 4 个子网。

示例 2:创建 17 个子网 = 2^x。 2^4 = 16(不够,需要多一位)==> 2^5 = 32,因此需要占用 5 位来创建 17 个子网络。

子网

一旦更改子网掩码以支持子网,就可以确定每个子网的范围。要计算出范围,您需要增量。

增量

增量(或每个网络所属的地址范围)可以通过查看子网掩码找到:

1
2
3
4
5
6
7
IP Address           : 192.168.32.5
Subnet Mask : 255.255.255.192
Subnet Mask (binary) : 11111111.11111111.11111111.11000000
# The increment = the least significant network bit:
Forth Octet : 1 1 0 0 0 0 0 0
128 (64) 32 16 8 4 2 1
# the least sig network bit = 64 = the increment

一旦获得增量,您就知道每个子网跨越增量数量的地址。本示例中的子网范围为:

1
2
3
4
Subnet 1 : 192.168.32.0 - 192.168.32.63
Subnet 2 : 192.168.32.64 - 192.168.32.127
Subnet 3 : 192.168.32.128 - 192.168.32.191
Subnet 4 : 192.168.32.192 - 192.168.32.255

带子网的保留 IP

在子网中,可用主机的数量始终是子网中可能的地址总数的 -2。这是为了说明该范围中的第一个和最后一个地址,这些地址是为网络 ID 和广播 ID 保留的:

网络 ID

这通常是子网范围中的第一个地址。

广播 ID

通常是范围中的最后一个地址(但并非总是如此)

1
2
3
4
5
6
7
IP Address       : 192.168.1.32/27
Subnet mask : 255.255.255.224
Wildcard : 0.0.0.31 <-- 32 possible addresses
Range : 192.168.1.32 - 192.168.1.63
Network ID : 192.168.1.32
Broadcast ID : 192.168.1.63
Num of available addresses for hosts : 29

[!资源:]

[!我之前的笔记(在文中链接):]