@blueking/ip_subnet_divider
IPV4 CIDR 子网划分计算工具用于从给出的 IP 地址块 和 子网数,计算出 主机数、子网掩码、子网主机范围、子网主机数、子网网段 和 子网广播地址。
快速开始
安装
npm i @blueking/ip_subnet_divider
使用
import calculator from "@blueking/ip_subnet_divider";
const {
ipMask,
ipCIDR,
subnets
} = calculator('10.0.0.1/8', 8);
原理
下面举两个例子:
例1、要将网络地址块 10.0.0.0/8 划分成 8 个子网。
10.0.0.0/8 的主机号长度为 24,因此主机数有 2^24 = 16777216 个。
因为要划分成 8 个子网,因此需要拿出 3 位作为子网网段,因此子网掩码是 255.244.0.0/11。
子网网段的二进制表示可能性有:
111、110、101、011、100、010、001、000
因此,可以计算出对应的子网网络号
10.224.0.0 |
10.192.0.0 |
10.160.0.0 |
10.128.0.0 |
10.96.0.0 |
10.64.0.0 |
10.32.0.0 |
10.0.0.0 |
因为,最小的地址可以表示成 0000000.......0000001
最大的地址可以表示成 000(共11个0)...001111111.....111110
所以,只要用上述计算出的 8 个子网网络号与 最小地址 和 最大地址进行 按位或运算 就可以得到每个子网网段的主机地址范围了,
网络号 | 主机地址范围 | 广播地址 |
10.0.0.0 | 10.0.0.1 - 10.31.255.254 | 10.31.255.255 |
10.32.0.0 | 10.32.0.1 - 10.63.255.254 | 10.63.255.255 |
10.64.0.0 | 10.64.0.1 - 10.95.255.254 | 10.95.255.255 |
10.96.0.0 | 10.96.0.1 - 10.127.255.254 | 10.127.255.255 |
10.128.0.0 | 10.128.0.1 - 10.159.255.254 | 10.159.255.255 |
10.160.0.0 | 10.160.0.1 - 10.191.255.254 | 10.191.255.255 |
10.192.0.0 | 10.192.0.1 - 10.223.255.254 | 10.223.255.255 |
10.224.0.0 | 10.224.0.1 - 10.255.255.254 | 10.255.255.255 |
其中,可以顺便算出子网的网络号和广播地址,
主机号二进制位全0的地址是网络号,全1的地址是广播地址。
例2、要将网络地址块 192.168.1.0/24 划分成 4 个子网
借助上述思路,可以计算出结果:
网络号 | 主机地址范围 | 广播地址 |
192.168.1.192 | 192.168.1.193 - 192.168.1.254 | 192.168.1.255 |
192.168.1.128 | 192.168.1.129 - 192.168.1.190 | 192.168.1.191 |
192.168.1.64 | 192.168.1.65 - 192.168.1.126 | 192.168.1.127 |
192.168.1.0 | 192.168.1.1 - 192.168.1.62 | 192.168.1.63 |