IP子网计算器

填入一个 IPv4 地址和前缀长度,得到网络地址、广播地址、可用主机数、子网掩码与通配符掩码,并把掩码的点分十进制、前缀长度、二进制三种写法并排列出。

掩码栏留空时用中间的前缀长度;如果你手头只有设备界面抄下来的掩码,填进掩码栏即可反推出 /26 这样的前缀长度。没有任何网络请求,全部按位运算在本地完成。

前缀长度、掩码与可用主机数对照表

默认展示 /32~/21 共 12 行,点「加载更多」逐批补全到 /0;「可用主机数」列在 /31 与 /32 两行按 RFC 3021 的点对点口径取值。

前缀子网掩码通配符掩码地址总数可用主机数二进制掩码
/32255.255.255.2550.0.0.011(RFC 3021 单主机)11111111.11111111.11111111.11111111
/31255.255.255.2540.0.0.122(RFC 3021 点对点)11111111.11111111.11111111.11111110
/30255.255.255.2520.0.0.34211111111.11111111.11111111.11111100
/29255.255.255.2480.0.0.78611111111.11111111.11111111.11111000
/28255.255.255.2400.0.0.15161411111111.11111111.11111111.11110000
/27255.255.255.2240.0.0.31323011111111.11111111.11111111.11100000
/26255.255.255.1920.0.0.63646211111111.11111111.11111111.11000000
/25255.255.255.1280.0.0.12712812611111111.11111111.11111111.10000000
/24255.255.255.00.0.0.25525625411111111.11111111.11111111.00000000
/23255.255.254.00.0.1.25551251011111111.11111111.11111110.00000000
/22255.255.252.00.0.3.2551024102211111111.11111111.11111100.00000000
/21255.255.248.00.0.7.2552048204611111111.11111111.11111000.00000000

提示:IP、前缀长度、掩码三个输入框里按 Enter 等同于点「计算子网」;改动任一输入框会自动重算。

使用方法

  1. 在「IPv4 地址」填 192.168.10.37(示例值)。必须是四段点分十进制,每段 0~255,不写前导零,也不带端口。
  2. 在「前缀长度」填 26(示例值)。这是 CIDR 斜杠后面的数字,允许 0~32 的整数,写成 26 或 /26 都可以。
  3. 「子网掩码」默认留空,表示以前缀长度为准。如果只有设备配置里的 255.255.255.192,把它填进来,工具会反推出 /26 并用它覆盖前缀长度一栏。
  4. 结果区立刻列出网络地址 192.168.10.0、广播地址 192.168.10.63、可用主机数 62、子网掩码与通配符掩码,并给出首个与末个可用地址。
  5. 下方对照表默认显示 12 行,点「加载更多」按每批 12 行补全到 /0;「复制对照表」把当前表格以 TSV 送进剪贴板,「导出 CSV」生成带 BOM 的表格文件,用 Excel 打开不乱码。

IP子网计算器能解决什么问题

一是划分网段前的容量核对。要把一个 /24 切成四个部门段,查 /26 这一行就够了:每段 64 个地址、62 个可分配、掩码 255.255.255.192,四段的起始地址依次是 .0、.64、.128、.192,正好铺满 256 个地址不重叠。

二是判断两台设备到底在不在同一个子网。同一网段的判据是「双方 IP 与自己的掩码做按位与之后相等」。10.1.1.200/25 与 10.1.1.130/25 的网络地址都是 10.1.1.128,属于同一段;如果两边的掩码都是 /26,200 落在 192~255、130 落在 128~191,网络地址分别是 10.1.1.192 与 10.1.1.128,就不通了。ping 不通时先算这一项,比反复重启设备有效得多。

三是从掩码反推前缀长度。很多交换机、防火墙的界面上只写「子网掩码 255.255.255.240」,不写 /28。把掩码粘进掩码栏,工具立刻给出前缀长度,再对着同一行的可用主机数 14 判断这个网段到底能挂几台机器。

四是写 ACL 与防火墙规则时的通配符掩码。Cisco 风格的 ACL 用通配符(掩码取反)而不是掩码:/26 的掩码 255.255.255.192 对应通配符 0.0.0.63。结果区把两个值并排给出,省去手写二进制再取反的步骤。

本页不做这些事:不算 IPv6 前缀(/64 有 264 个地址,完全超出本页的 32 位范围,需要 IPv6 请用页面底部的「IPv4转IPv6转换器」);不做路由汇总(把连续多个 /24 合并成一个 /22 这类超网运算);不扫描网段里哪些地址在线;不查 IP 归属地与 AS 号;不对回环、链路本地、组播等特殊段做语义过滤,只按位算。

计算原理:掩码位、主机位与 RFC 3021 特例

IPv4 地址在机器里就是一个 32 位无符号整数,192.168.10.37 等于 3232238117。前缀长度 p 对应的子网掩码是「高位连续 p 个 1、其余为 0」的 32 位数;p=26 时二进制是 11111111.11111111.11111111.11000000,写成点分十进制就是 255.255.255.192。剩下的 32 − p = 6 位叫主机位 h,一个子网能容纳 2h 个地址,本页共 26 = 64 个。

三个关键量都是位运算:网络地址 = IP 按位与(AND) 掩码,把主机位全部清零;通配符掩码 = 掩码按位取反,本页为 0.0.0.63;广播地址 = 网络地址按位或(OR) 通配符,把主机位全部置一,得到 192.168.10.63。可用主机数之所以是 2h − 2 而不是 2h,是因为主机位全 0 的那个地址(192.168.10.0)是网段标识、主机位全 1 的那个地址(192.168.10.63)是广播地址,两者都不能分配给主机。RFC 950 定下这条子网划分规则,所以 /26 是 64 − 2 = 62。

/31 和 /32 是两个必须单说的特例。按 2h − 2 套下去,/31 只剩 2 − 2 = 0 个可用地址,/32 只剩 1 − 2 = −1,看着像是没法用。RFC 3021《Using 31-Bit Prefixes on IPv4 Point-to-Point Links》专门规定:/31 用于点对点链路时,两个地址分别给链路两端,都能用,可用主机数为 2;/32 表示单主机路由,只有一个地址,可用主机数为 1。所以本页在 /31 与 /32 两行取的是 2 和 1,其余各档才是 2h − 2。如果你的设备不支持 RFC 3021,仍应避开 /31,改用 /30 的 2 个可用地址。

实现上最容易翻车的两处,本页都做了处理。第一处是 JavaScript 的位移次数按 32 取模:0xffffffff << (32 - p) 在 p=0 时变成 << 32,引擎按 << 0 处理,结果是 4294967295,也就是把 /0 的掩码算成 255.255.255.255;本页对 p=0 直接返回 0。第二处是位运算结果是有符号 32 位:0xffffffff 在 JS 里读出来是 −1,取反后的通配符也会是负数,不补 >>> 0 转无符号,广播地址就会打印成负数。拼接 IP 整数时用累加 n * 256 + 段值 而不是 (a<<24)|(b<<16)|…,是因为首段大于 127 时 a<<24 会溢出到符号位。

标准依据:无类别编址与前缀记法见 RFC 4632(CIDR),私网地址段见 RFC 1918,点对点 /31 特例见 RFC 3021,子网划分保留网络号与广播号的规则见 RFC 950。数值上限方面,IPv4 全部地址是 232 = 4294967296,小于 JavaScript 的安全整数上限 9007199254740991,所以整段算术用普通 Number 也不会丢精度,不需要 BigInt。

完整示例:192.168.10.37/26

IP子网计算器打开时的默认值就是这一组:IP 填 192.168.10.37、前缀长度填 26、掩码栏留空。逐步演算如下:

为什么 .37 落在 .0 这一段?因为 /26 的块大小是 64,地址按 0~63、64~127、128~191、192~255 四块划分,37 落在第一块里。把 IP 换成 192.168.10.70,网络地址就变成 192.168.10.64;换成 192.168.10.200,网络地址是 192.168.10.192。同一台机器的网关只要写错成 192.168.10.1 之外的另一块,就会出现「能 ping 通同段设备、出不了外网」的典型症状。

项目192.168.10.37/26 的结果怎么来的
网络地址192.168.10.0IP AND 掩码,主机位清零
广播地址192.168.10.63网络地址 OR 通配符,主机位置一
可用主机数6226 − 2,去掉网络地址与广播地址
子网掩码255.255.255.192前 26 位为 1
通配符掩码0.0.0.63掩码按位取反,ACL 用
地址总数64232−26
块大小64同一 /26 内第四段的变化步长

前缀长度、掩码与可用主机数对照表

下面这张表覆盖 /32 到 /0 全部 33 档,页面上默认展开 12 行。第四段为 0 的前缀,通配符直接就是第四段的全 1;跨到第三段以后(/23 及更短),通配符会逐段向左扩展,这也是判断「一个 /22 到底覆盖几个 /24」的捷径——通配符第三段是 3,说明它覆盖 4 个 /24。

前缀子网掩码地址总数可用主机数典型用途
/32255.255.255.25511单主机路由(RFC 3021)
/31255.255.255.25422点对点链路(RFC 3021)
/30255.255.255.25242路由器互联、不支持 /31 时的点对点
/29255.255.255.24886小型设备网段
/28255.255.255.2401614服务器带外管理口
/27255.255.255.2243230小型办公区
/26255.255.255.1926462部门网段(本页示例)
/25255.255.255.128128126一个 /24 对半分
/24255.255.255.0256254最常见的园区网段
/22255.255.252.0102410224 个 /24 汇总
/16255.255.0.06553665534192.168.0.0/16 私网
/8255.0.0.0167772161677721410.0.0.0/8 私网
/00.0.0.042949672964294967294默认路由,掩码必须是全 0

三个 RFC 1918 私网段单独列一次,方便直接对号入座:

私网段网络地址广播地址地址总数可用主机数掩码
10.0.0.0/810.0.0.010.255.255.2551677721616777214255.0.0.0
172.16.0.0/12172.16.0.0172.31.255.25510485761048574255.240.0.0
192.168.0.0/16192.168.0.0192.168.255.2556553665534255.255.0.0

输入范围、边界与取整规则

常见问题

为什么可用主机数是 2h − 2,而不是 2h?

因为主机位全 0 的那个地址是网段本身的标识(192.168.10.0),主机位全 1 的那个地址是广播地址(192.168.10.63),两者都不能分配给设备。RFC 950 定义的子网划分规则保留这两个地址,所以 /26 的 64 个地址里真正能用的只有 62 个。这也是 /30 只能接两台设备的点对点链路的原因。

/31 和 /32 为什么要单独处理?

按 2h − 2 算,/31 只有 0 个可用地址、/32 会算出 −1,看着都没法用。RFC 3021 规定:/31 用在点对点链路上时,两个地址分别给链路两端,可用数为 2;/32 表示单主机路由,可用数为 1。IP子网计算器对这两档取 2 和 1,并在对照表里标注了出处。

我在别处算 /31 得到 0 个可用地址,哪个对?

两种口径都存在,取决于链路是否支持 RFC 3021。/31 的省地址做法要求两端设备都支持点对点 /31,老式设备可能不支持,此时仍要用 /30(4 个地址、2 个可用)。算出来 0 的工具是按 2h − 2 的老口径,本页按 RFC 3021 的新口径。选网段时按你设备的支持情况定。

为什么掩码栏填 255.0.255.0 会报错?

因为子网掩码必须是「高位连续 1」,255.0.255.0 的二进制是 11111111.00000000.11111111.00000000,中间断开了,无法对应任何一个前缀长度。这种情况通常是从两个不同设备上各抄了一段掩码拼在一起,或者把反掩码(通配符)当掩码填了。通配符 0.255.0.255 的对应掩码才是 255.0.255.0。

192.168.10.37/26 的网关能写 192.168.10.63 吗?

不能。192.168.10.63 是这个 /26 的广播地址,主机位全 1;同理 192.168.10.0 是网段标识,也不能配给设备。可用的网关只能从 192.168.10.1 到 192.168.10.62 里选,工程上习惯取 .1 或 .254 这类看起来好记的地址。

为什么 192.168.10.70/26 的网络地址不是 192.168.10.0?

因为 /26 把第四段的 256 个地址按每块 64 个切开:0~63、64~127、128~191、192~255。70 落在 64~127 这一块,所以网络地址是 192.168.10.64、广播地址是 192.168.10.127。判断落在哪一块,用段值除以块大小取整再乘回去即可,这也是「配错掩码导致同楼不同网段」的常见原因。

一张设备界面只写 255.255.255.240,是 /几?

是 /28。把 255.255.255.240 填进掩码栏,工具会反推出 28,同时给出该子网 16 个地址、14 个可用主机数。快速换算的办法是看最后一段里有几个 1:240 = 11110000₂,4 个 1,24 + 4 = 28。

结果里的「通配符掩码」是什么?什么时候用?

通配符掩码(wildcard mask)就是子网掩码按位取反,/26 对应 0.0.0.63,Cisco 风格 ACL 用它表示「哪些位不参与比较」。注意它和反掩码在概念上等价但用法相反:ACL 里写 permit 192.168.10.0 0.0.0.63 表示匹配整个 /26,写成 255.255.255.192 反而会错得离谱。

相关工具