@blueking/ip_subnet_divider

1.0.4 • Public • Published

@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

Package Sidebar

Install

npm i @blueking/ip_subnet_divider

Weekly Downloads

2

Version

1.0.4

License

MIT

Unpacked Size

11.1 kB

Total Files

4

Last publish

Collaborators

  • blueking