CIDR / 子网计算器
输入 IP/掩码 → 网络地址 / 广播 / 范围 / IP 数量 / 子网掩码
CIDR/子网掩码/主机数/网段拆分
输入 IP/掩码 → 网络地址 / 广播 / 范围 / IP 数量 / 子网掩码
| 前缀 | 子网掩码 | IP 数量 | 可用主机 | 典型用途 |
|---|
了解工具定位 · 使用场景 · 对比优势
输入CIDR地址或子网掩码,一键计算网络地址、广播地址、可用主机范围、子网掩码与主机数量。网络工程师做网段规划、运维排查IP冲突、开发配置防火墙规则时,无需手动换算。所有计算在浏览器内完成,IP数据不上传任何服务器。
IT 管理员为 500 人公司分配办公、访客、监控三个网段时,需要确保每个子网有足够主机位,同时避免 IP 浪费。本工具输入总网段 /24,按部门人数拆分出 /25(126 主机)、/26(62 主机)、/27(30 主机),即时得到各子网的网络地址、广播地址和可用 IP 范围,省去手动二进制换算的出错风险。
在 AWS 或阿里云创建 VPC 时,需将 /16 的大网段拆成多个 /24 子网分配给不同可用区。本工具输入父网段 10.0.0.0/16 和目标掩码长度 /24,一键列出所有 256 个子网的 CIDR 块,避免手动算错导致子网重叠或 IP 不足,直接复制结果到云控制台即可部署。
安全工程师在防火墙上放行特定子网流量时,需要知道 192.168.1.0/28 的广播地址是 192.168.1.15,防止误封广播流量。本工具输入任意 CIDR 或 IP+掩码,立即显示网络地址、广播地址和可用主机范围,确保规则精确匹配业务网段,不阻断正常广播通信。
备考网络工程师认证时,常遇到“将 172.16.0.0/16 拆成 8 个等长子网,写出每个子网的掩码和可用主机数”这类题目。本工具输入父网段和子网数量,自动计算每个子网的 CIDR、掩码、主机数,并展示二进制位变化过程,帮助理解 VLSM 原理,比手算快 10 倍。
智能家居用户想将摄像头、IoT 设备、主力电脑分到不同 VLAN,避免智能灯泡被外网攻击。本工具输入家用路由器分配的 /24 网段(如 192.168.1.0/24),按设备数量拆成 /26 和 /27 子网,得到每个 VLAN 的网关地址和 DHCP 池范围,直接填入路由器即可实现隔离。
| 维度 | 本工具 | 竞品 A (subnet-calculator.com) | 传统方法 |
|---|---|---|---|
| 数据隐私 | 纯浏览器端计算,输入不离开设备 | 提交至服务器处理,受服务商隐私政策约束 | 依赖人工查阅文档或自行计算,数据不涉及网络传输 |
| 处理速度 | 毫秒级响应,输入即出结果 | 受网络延迟和服务器负载影响,通常 1-3 秒 | 手动计算或查阅表格,耗时数分钟至数小时,且易出错 |
| 离线可用 | 完全离线,无需网络连接 | 必须联网访问网页 | 完全离线,依赖纸质资料或本地软件 |
| 网段拆分 | 支持自定义子网掩码拆分,结果列表清晰 | 通常提供拆分功能,但输出格式固定 | 需手动计算每个子网的网络地址和广播地址,过程繁琐 |
| 主机数计算 | 自动计算有效主机数,排除网络地址和广播地址 | 自动计算,部分工具会额外显示可用主机范围 | 手动计算 2^(32-掩码位数) - 2,需注意二进制运算 |
| 使用门槛 | 打开即用,无需安装或注册 | 打开即用,部分网站有广告或注册提示 | 需理解二进制、子网掩码等网络基础知识 |
上手步骤 · 输入输出 · 避坑提示
| 输入 | 输出 | 说明 |
|---|---|---|
| 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 而非网络地址,工具自动归零 |
255.255.255.0/24192.168.1.0/24CIDR 表示法要求斜杠后跟网络前缀长度(0-32),而非子网掩码的十进制点分形式。255.255.255.0 对应 /24,但写成 192.168.1.0/255.255.255.0 工具无法解析
192.168.1.255(认为这是可用 IP)192.168.1.1 - 192.168.1.254(/24 网段可用范围)每个网段第一个地址是网络地址,最后一个地址是广播地址,两者不可分配给主机。工具输出结果时已排除这两个地址,但用户手动计算时常忽略
/31 网段主机数为 0/31 网段有 2 个可用地址(RFC 3021 点对点链路)传统公式 2^(32-前缀)-2 对 /31 和 /32 失效。RFC 3021 允许 /31 用于点对点链路,两个地址均可分配;/32 用于单播路由,主机数为 1
http://192.168.1.0/24 或 192.168.1.0:8080/24192.168.1.0/24工具只解析纯 IP/CIDR 格式。http:// 是 URL 协议头,:8080 是端口号,两者都会被解析器当作非法字符导致报错
认为 10.0.0.0/8 能在公网路由10.0.0.0/8 是 RFC 1918 私有地址,仅限内网使用工具只做数学计算不判断路由策略,但用户常拿私有段去查公网路由表或配置 NAT 时出错。需自行区分地址用途
把 /24 拆成 4 个 /26,认为每个 /26 有 64 个可用主机/24 拆成 4 个 /26,每个 /26 有 62 个可用主机(2^(32-26)-2=62)子网划分后每个子网仍要扣除网络地址和广播地址。用户常只算 2^(32-前缀) 而忘记减 2,导致可用 IP 数多算 2 个
255.255.255.192 写成 255.255.255.0.64255.255.255.192 或 /26子网掩码是连续的 1 和 0 组成的 32 位二进制数,不允许出现非 255/0 之外的中间值(如 255.255.255.0.64 不是合法掩码格式)
在 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,不适用此公式。
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 个高频疑问
「HTTP / 网络」下的其他工具