IP 段计算

CIDR/子网掩码/主机数/网段拆分

419 次访问
CIDR CALCULATOR

CIDR / 子网计算器

输入 IP/掩码 → 网络地址 / 广播 / 范围 / IP 数量 / 子网掩码

输入

计算结果

CIDR 速查表

前缀子网掩码IP 数量可用主机典型用途

关于本工具

了解工具定位 · 使用场景 · 对比优势

输入CIDR地址或子网掩码,一键计算网络地址、广播地址、可用主机范围、子网掩码与主机数量。网络工程师做网段规划、运维排查IP冲突、开发配置防火墙规则时,无需手动换算。所有计算在浏览器内完成,IP数据不上传任何服务器。

使用场景

🏢

企业网络规划

IT 管理员为 500 人公司分配办公、访客、监控三个网段时,需要确保每个子网有足够主机位,同时避免 IP 浪费。本工具输入总网段 /24,按部门人数拆分出 /25(126 主机)、/26(62 主机)、/27(30 主机),即时得到各子网的网络地址、广播地址和可用 IP 范围,省去手动二进制换算的出错风险。

☁️

云 VPC 子网划分

在 AWS 或阿里云创建 VPC 时,需将 /16 的大网段拆成多个 /24 子网分配给不同可用区。本工具输入父网段 10.0.0.0/16 和目标掩码长度 /24,一键列出所有 256 个子网的 CIDR 块,避免手动算错导致子网重叠或 IP 不足,直接复制结果到云控制台即可部署。

🔐

防火墙规则配置

安全工程师在防火墙上放行特定子网流量时,需要知道 192.168.1.0/28 的广播地址是 192.168.1.15,防止误封广播流量。本工具输入任意 CIDR 或 IP+掩码,立即显示网络地址、广播地址和可用主机范围,确保规则精确匹配业务网段,不阻断正常广播通信。

🎓

CCNA 考试练习

备考网络工程师认证时,常遇到“将 172.16.0.0/16 拆成 8 个等长子网,写出每个子网的掩码和可用主机数”这类题目。本工具输入父网段和子网数量,自动计算每个子网的 CIDR、掩码、主机数,并展示二进制位变化过程,帮助理解 VLSM 原理,比手算快 10 倍。

🏠

家庭网络隔离

智能家居用户想将摄像头、IoT 设备、主力电脑分到不同 VLAN,避免智能灯泡被外网攻击。本工具输入家用路由器分配的 /24 网段(如 192.168.1.0/24),按设备数量拆成 /26 和 /27 子网,得到每个 VLAN 的网关地址和 DHCP 池范围,直接填入路由器即可实现隔离。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具竞品 A (subnet-calculator.com)传统方法
数据隐私纯浏览器端计算,输入不离开设备提交至服务器处理,受服务商隐私政策约束依赖人工查阅文档或自行计算,数据不涉及网络传输
处理速度毫秒级响应,输入即出结果受网络延迟和服务器负载影响,通常 1-3 秒手动计算或查阅表格,耗时数分钟至数小时,且易出错
离线可用完全离线,无需网络连接必须联网访问网页完全离线,依赖纸质资料或本地软件
网段拆分支持自定义子网掩码拆分,结果列表清晰通常提供拆分功能,但输出格式固定需手动计算每个子网的网络地址和广播地址,过程繁琐
主机数计算自动计算有效主机数,排除网络地址和广播地址自动计算,部分工具会额外显示可用主机范围手动计算 2^(32-掩码位数) - 2,需注意二进制运算
使用门槛打开即用,无需安装或注册打开即用,部分网站有广告或注册提示需理解二进制、子网掩码等网络基础知识

使用指南

上手步骤 · 输入输出 · 避坑提示

使用步骤

  1. 在「IP 地址」输入框填写起始 IP,例如 192.168.1.0
  2. 在「前缀长度」或「子网掩码」字段输入 CIDR 值(如 24)或掩码(如 255.255.255.0)
  3. 点击「计算」按钮,页面立即显示网络地址、广播地址、可用主机范围及主机总数
  4. 如需拆分网段,在「子网数量」或「新前缀长度」输入目标值,再次点击「计算」
  5. 复制结果区中的 CIDR 列表或 IP 范围,直接用于网络配置或文档

输入输出示例8 个典型场景,覆盖常规、边界与易错

输入输出说明
192.168.1.0/24网络地址:192.168.1.0 广播地址:192.168.1.255 可用主机范围:192.168.1.1 - 192.168.1.254 子网掩码:255.255.255.0 可用主机数:254典型场景:最常见的家庭/小型办公局域网
10.0.0.0/8网络地址:10.0.0.0 广播地址:10.255.255.255 可用主机范围:10.0.0.1 - 10.255.255.254 子网掩码:255.0.0.0 可用主机数:16,777,214典型场景:大型私有网络(A 类地址段)
172.16.0.0/12网络地址:172.16.0.0 广播地址:172.31.255.255 可用主机范围:172.16.0.1 - 172.31.255.254 子网掩码:255.240.0.0 可用主机数:1,048,574典型场景:中型企业私有网络(B 类地址段)
192.168.1.0/30网络地址:192.168.1.0 广播地址:192.168.1.3 可用主机范围:192.168.1.1 - 192.168.1.2 子网掩码:255.255.255.252 可用主机数:2边界 case:点对点链路(仅需 2 个可用 IP)
192.168.1.0/32网络地址:192.168.1.0 广播地址:192.168.1.0 可用主机范围:无 子网掩码:255.255.255.255 可用主机数:1(仅本机)边界 case:单个主机路由(CIDR 最小前缀)
0.0.0.0/0网络地址:0.0.0.0 广播地址:255.255.255.255 可用主机范围:0.0.0.1 - 255.255.255.254 子网掩码:0.0.0.0 可用主机数:4,294,967,294边界 case:默认路由(匹配所有 IPv4 地址)
192.168.1.0/23网络地址:192.168.1.0 广播地址:192.168.2.255 可用主机范围:192.168.1.1 - 192.168.2.254 子网掩码:255.255.254.0 可用主机数:510易错 case:跨越 .1 和 .2 网段,新手常误以为只有 .1.x
10.0.0.1/24网络地址:10.0.0.0 广播地址:10.0.0.255 可用主机范围:10.0.0.1 - 10.0.0.254 子网掩码:255.255.255.0 可用主机数:254易错 case:输入了主机 IP 而非网络地址,工具自动归零

常见错误对照8 个常踩的坑 · 错误 → 修复

1. 子网掩码写成 IP 格式但位数不对

错误
255.255.255.0/24
修复
192.168.1.0/24

CIDR 表示法要求斜杠后跟网络前缀长度(0-32),而非子网掩码的十进制点分形式。255.255.255.0 对应 /24,但写成 192.168.1.0/255.255.255.0 工具无法解析

2. 误把广播地址当作可用主机

错误
192.168.1.255(认为这是可用 IP)
修复
192.168.1.1 - 192.168.1.254(/24 网段可用范围)

每个网段第一个地址是网络地址,最后一个地址是广播地址,两者不可分配给主机。工具输出结果时已排除这两个地址,但用户手动计算时常忽略

3. /31 和 /32 网段认为没有可用主机

错误
/31 网段主机数为 0
修复
/31 网段有 2 个可用地址(RFC 3021 点对点链路)

传统公式 2^(32-前缀)-2 对 /31 和 /32 失效。RFC 3021 允许 /31 用于点对点链路,两个地址均可分配;/32 用于单播路由,主机数为 1

4. 输入 IP 时带了端口号或协议前缀

错误
http://192.168.1.0/24 或 192.168.1.0:8080/24
修复
192.168.1.0/24

工具只解析纯 IP/CIDR 格式。http:// 是 URL 协议头,:8080 是端口号,两者都会被解析器当作非法字符导致报错

5. 把私有地址段和公网地址段混淆

错误
认为 10.0.0.0/8 能在公网路由
修复
10.0.0.0/8 是 RFC 1918 私有地址,仅限内网使用

工具只做数学计算不判断路由策略,但用户常拿私有段去查公网路由表或配置 NAT 时出错。需自行区分地址用途

6. 拆分网段时子网数量计算错误

错误
把 /24 拆成 4 个 /26,认为每个 /26 有 64 个可用主机
修复
/24 拆成 4 个 /26,每个 /26 有 62 个可用主机(2^(32-26)-2=62)

子网划分后每个子网仍要扣除网络地址和广播地址。用户常只算 2^(32-前缀) 而忘记减 2,导致可用 IP 数多算 2 个

7. 用十进制小数表示子网掩码

错误
255.255.255.192 写成 255.255.255.0.64
修复
255.255.255.192 或 /26

子网掩码是连续的 1 和 0 组成的 32 位二进制数,不允许出现非 255/0 之外的中间值(如 255.255.255.0.64 不是合法掩码格式)

8. IPv6 地址误用 CIDR 计算工具

错误
在 IPv4 CIDR 工具中输入 2001:db8::/32
修复
使用专门的 IPv6 子网计算工具

本工具仅支持 IPv4 地址计算。IPv6 地址 128 位,前缀长度、地址格式、可用主机数计算逻辑完全不同,混用会导致结果无效

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

2^(32 - prefix_length) - 2

变量说明

  • prefix_length — CIDR 前缀长度(0-32)

示例

CIDR 段 192.168.1.0/24,prefix_length=24。主机数 = 2^(32-24) - 2 = 2^8 - 2 = 256 - 2 = 254。该网段可用主机地址为 192.168.1.1 至 192.168.1.254,网络地址 192.168.1.0 和广播地址 192.168.1.255 不可分配。

适用范围

适用于 IPv4 标准 CIDR 子网划分(RFC 4632)。/31 和 /32 网段因无广播地址,实际可用主机数分别为 2 和 1,不适用此公式。

原理图

输入 CIDR如 192.168.1.0/24输入子网掩码如 255.255.255.0或前缀长度 24指定拆分数量如 4 个子网浏览器内本地计算(JavaScript)解析 CIDR → 计算网络地址/广播地址 → 计算可用主机数 → 按掩码拆分网段网络地址 / 广播地址可用主机数 / 掩码拆分后的子网列表
用户输入 本地处理 输出结果

开发者集成

3 种主流语言 · 复制即用

import ipaddress

# 解析 CIDR 并计算网络信息
cidr = "192.168.1.0/24"
net = ipaddress.ip_network(cidr, strict=False)

print(f"网络地址: {net.network_address}")
print(f"子网掩码: {net.netmask}")
print(f"可用主机数: {net.num_addresses - 2}")  # 减去网络地址和广播地址
print(f"第一个可用IP: {list(net.hosts())[0]}")
print(f"最后一个可用IP: {list(net.hosts())[-1]}")
print(f"广播地址: {net.broadcast_address}")

# 子网划分:将 /24 拆成 4 个 /26 子网
subnets = list(net.subnets(new_prefix=26))
for i, subnet in enumerate(subnets):
    print(f"子网{i+1}: {subnet}")
package main

import (
	"fmt"
	"net"
)

func main() {
	// 解析 CIDR
	_, ipnet, err := net.ParseCIDR("192.168.1.0/24")
	if err != nil {
		panic(err)
	}

	// 子网掩码
	mask := ipnet.Mask
	ones, bits := mask.Size()
	fmt.Printf("网络地址: %s\n", ipnet.IP)
	fmt.Printf("子网掩码: %s (/%d)\n", net.IP(mask), ones)

	// 计算可用主机数
	hosts := 1 << (bits - ones)
	fmt.Printf("总地址数: %d\n", hosts)
	fmt.Printf("可用主机数: %d\n", hosts-2)

	// 获取广播地址
	broadcast := make(net.IP, len(ipnet.IP))
	for i := range ipnet.IP {
		broadcast[i] = ipnet.IP[i] | ^mask[i]
	}
	fmt.Printf("广播地址: %s\n", broadcast)
}
// 使用 ip-cidr 库 (npm install ip-cidr)
const IPCIDR = require('ip-cidr');

const cidr = new IPCIDR('192.168.1.0/24');

console.log('网络地址:', cidr.toArray()[0]);
console.log('子网掩码:', cidr.subnetMask);
console.log('可用主机数:', cidr.size - 2);
console.log('广播地址:', cidr.broadcast);

// 子网划分:拆成 4 个 /26
const subnets = cidr.subnet(26);
subnets.forEach((sub, i) => {
  console.log(`子网${i+1}: ${sub.cidr}`);
});

// 检查 IP 是否在网段内
console.log('192.168.1.50 在网段内:', cidr.contains('192.168.1.50'));
console.log('10.0.0.1 在网段内:', cidr.contains('10.0.0.1'));

常见问题

8 个高频疑问

我输入 192.168.1.0/24,结果里的网络地址、广播地址、可用主机数是怎么算出来的?
工具按标准 CIDR 算法计算:网络地址是 IP 与子网掩码按位与的结果(192.168.1.0),广播地址是网络地址的主机位全置 1(192.168.1.255)。可用主机数 = 2^(32 - 前缀长度) - 2,减去网络地址和广播地址。24 位前缀即 2^(32-24) - 2 = 254 台主机。所有计算在浏览器内用 JavaScript 完成,不涉及任何后端请求,结果与 RFC 4632 一致。
输入 10.0.0.1/23,为什么可用主机数显示 510,不是 512?
因为 /23 前缀对应子网掩码 255.255.254.0,主机位共 9 位(32-23),理论地址数 2^9 = 512。但每个子网必须保留网络地址(全 0)和广播地址(全 1),所以可用主机数 = 512 - 2 = 510。这是 IPv4 子网划分的通用规则,所有在线 CIDR 计算器都遵循此标准。如果发现其他工具显示 512,那它可能没有减去保留地址,属于错误实现。
输入 192.168.1.0/24,点拆分按钮后提示「网段长度必须是 2 的幂」,是什么意思?
拆分网段时,每个子网的地址数必须是 2 的整数次幂(如 2、4、8、16、32、64、128、256)。例如 /24 有 256 个地址,可以拆成 2 个 /25(各 128 地址),或 4 个 /26(各 64 地址),但不能拆成 3 个 /25(因为 3 不是 2 的幂,无法对齐 CIDR 边界)。工具只支持按标准 CIDR 块拆分,避免产生非法子网。如果需要非对齐拆分,建议手动计算或使用其他支持 VLSM(可变长子网掩码)的工具。
为什么计算 172.16.0.0/12 时,可用主机数显示 1048574,这个数字对吗?
对的。/12 前缀对应主机位 20 位(32-12),理论地址数 2^20 = 1,048,576。减去网络地址和广播地址后,可用主机数 = 1,048,576 - 2 = 1,047,574。注意这是单个子网的可用主机数,不是整个 172.16.0.0/12 大段的所有地址——实际中这个段通常被进一步拆分成多个 /16 或 /24 子网使用。如果输入了私有地址范围(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16),工具会标注「私有地址」。
和 ipcalc 命令相比,这个网页工具算出来的结果一样吗?
结果完全一致。ipcalc 是 Linux 下的经典命令行工具,本工具使用相同的 CIDR 算法(按位与 + 主机位全 1),并且同样遵循 RFC 4632 标准。唯一区别是输入格式:ipcalc 需要手动输入子网掩码(如 255.255.255.0),本工具支持 CIDR 前缀(如 /24)或子网掩码两种方式,自动互转。如果发现结果不一致,请检查 ipcalc 版本或是否使用了非标准掩码(如 255.255.255.254 这种点分十进制不常见的写法)。
输入 0.0.0.0/0 会出现什么结果?这个工具有没有输入限制?
0.0.0.0/0 表示「所有 IPv4 地址」,计算结果为:网络地址 0.0.0.0,广播地址 255.255.255.255,可用主机数 4,294,967,294(即 2^32 - 2)。工具接受合法的 CIDR 表示法(IP + / + 前缀长度 0-32),也接受不带前缀的 IP(自动当作 /32 单机地址)。但不接受非连续子网掩码(如 255.255.255.254 虽然合法但非常规),也不接受 IPv6 地址(本工具仅支持 IPv4)。输入框做了基本格式校验,非法格式会提示红色边框。
拆分网段时,工具能自动生成所有子网的列表吗?能不能导出?
可以。输入父网段(如 192.168.1.0/24)和目标子网前缀长度(如 /26),工具会列出所有子网的网络地址、广播地址、可用主机范围、可用主机数。列表在页面直接展示,也可以通过「复制」按钮以文本格式导出(每行一个子网,包含网络地址/前缀)。目前不支持 CSV 或 JSON 导出,但复制后可以粘贴到 Excel 或文本编辑器里自行处理。注意:如果父网段很大(如 /8),拆成 /24 会生成 65536 个子网,浏览器渲染可能会有延迟,建议用 /16 或更小粒度分步拆分。
为什么我输入 192.168.1.5/24,结果里的网络地址是 192.168.1.0,不是 192.168.1.5?
因为网络地址由 IP 与子网掩码按位与决定,与 IP 的主机部分无关。192.168.1.5/24 的子网掩码是 255.255.255.0,按位与后主机位(最后 8 位)全部归零,所以网络地址永远是 192.168.1.0。同理,广播地址是 192.168.1.255,可用主机范围是 192.168.1.1 到 192.168.1.254。IP 本身(192.168.1.5)只是该子网内的一个可用主机地址。如果希望计算的是 192.168.1.5/32(单机地址),需输入 192.168.1.5/32。
选择 打开 +新窗口 esc关闭