跳到主要内容
CalcMax

IP 子网计算器

结果

192.168.1.0私有地址

网络地址

广播地址
192.168.1.255
第一个可用主机
192.168.1.1
最后一个可用主机
192.168.1.254
可用主机数
254
本块地址总数
256
子网掩码
255.255.255.0
通配符掩码
0.0.0.255

子网计算器把一个 CIDR 块(形如 192.168.1.10/24)拆开:网络地址、广播地址、第一个与最后一个可用主机、子网掩码、通配符掩码,以及这个块一共装得下多少个地址。斜杠后面那个数是前缀长度,/24 表示前 24 位是网络位、剩 8 位给主机,也就是 256 个地址、254 个可用主机数。你填进去的地址里凡是落在主机位上的部分都会被清零,所以 192.168.1.10/24 属于 192.168.1.0/24 这一段——这也是这一页最常被问的地方。主结果旁边的徽章说这段地址是哪一类:私有地址、环回地址、链路本地、组播还是公网地址,下面那张表把 IANA 登记过的特殊段逐条列出来。

特殊用途的 IPv4 地址段

地址段类型依据
0.0.0.0/8本网络RFC 791 §3.2
10.0.0.0/8私有地址RFC 1918
100.64.0.0/10运营商级 NAT 共享地址RFC 6598
127.0.0.0/8环回地址RFC 1122 §3.2.1.3
169.254.0.0/16链路本地地址RFC 3927
172.16.0.0/12私有地址RFC 1918
192.0.2.0/24文档示例地址RFC 5737
192.168.0.0/16私有地址RFC 1918
198.18.0.0/15基准测试地址RFC 2544
198.51.100.0/24文档示例地址RFC 5737
203.0.113.0/24文档示例地址RFC 5737
224.0.0.0/4组播地址RFC 1112
240.0.0.0/4保留地址RFC 1112 §4
255.255.255.255/32受限广播地址RFC 8190 / RFC 919 §7

IANA 的 IPv4 特殊用途地址登记表里逐条列出的段,另加组播那一段(它登记在另一份表里)。中间一列是这段地址的类型,最后一列是规定它的文档。不落在任何一段里的地址,会报成公网地址。

公式

网络地址 = 地址 AND 掩码 可用主机数 = 2^(32 − 前缀长度) − 2

地址
你填的那个 IPv4 地址,看成一个 32 位整数
掩码
子网掩码:前「前缀长度」位是 1,其余是 0
网络地址
把主机位全部清零之后的那个地址
前缀长度
斜杠后面那个数,0 到 32

第一行就是子网划分的全部:网络地址是地址与掩码按位与,广播地址是同一个按位与、但主机位改成全填 1。两者一减就是可用主机数。第二行是那个结果的速算式,对 /0 到 /30 每一个前缀都成立。两个例外是点到点用的 /31 与单主机的 /32——那里网络地址与广播地址不保留,照速算式会算少,页面按 RFC 3021 的规矩处理。

算例

  1. 家庭网段 192.168.1.10/24

    1. 前缀是 24,所以掩码是 24 个 1 后面跟 8 个 0:255.255.255.0。
    2. 把地址的主机位清零:192.168.1.10 AND 255.255.255.0 = 192.168.1.0,这就是网络地址。
    3. 反过来把主机位全填 1:192.168.1.0 OR 0.0.0.255 = 192.168.1.255,这就是广播地址。
    4. 两者之间就是可用主机范围:192.168.1.1 到 192.168.1.254。
    5. 数一遍:2^8 = 256 个地址,减去保留的两个 = 254 个可用。✓

    填进去的 .10 是块内的一台主机,所以它不是第一行的答案——一个块用网络地址来标识,这条最容易看反。

  2. 点到点链路 172.16.5.1/30

    1. /30 留 2 个主机位,所以一块是 2^2 = 4 个地址,掩码末位是 252(二进制 11111100)。
    2. 网络地址:172.16.5.1 AND 255.255.255.252 = 172.16.5.0。
    3. 广播地址:172.16.5.0 再加上 3 个主机位全填 1 = 172.16.5.3。
    4. 可用的就剩 172.16.5.1 与 172.16.5.2 两个——例子里的地址正是路由器自己那一端。✓

    这是仍然空着两个地址的最小分块。两台路由器之间恰好需要两个,所以才有 /31 那条规矩。

  3. 把一个 /24 切成 /26,填 192.168.1.130/26

    1. /26 留 6 个主机位:2^6 = 64 个地址,掩码 255.255.255.192。
    2. 130 的二进制是 10000010,/26 只保留其中最前面两位:130 AND 192 = 128。
    3. 所以网络地址是 192.168.1.128 而不是 192.168.1.0——/26 的块边界在最后一个八位组里落在 64 的倍数上。
    4. 广播地址:192.168.1.128 + 63 = 192.168.1.191。
    5. 可用主机数:64 − 2 = 62 个,从 .129 到 .190。✓

    这就是肉眼看最容易错的一步:/26 的块边界是 0、64、128、192,所以 .130 落在整个 /24 的第三段,不是第一段。

  4. 单个公网主机 8.8.8.8/32

    1. /32 把所有位都当成网络位,掩码是 255.255.255.255,一块就只有一个地址。
    2. 与全 1 的掩码按位与等于什么都没做:网络地址就是 8.8.8.8。
    3. 没有主机位可填 1,所以广播地址与它是同一个地址。
    4. 一个地址,而且可用:按 RFC 3021 那套规矩 /32 的可用主机数是 1,不是 2^0 − 2 = −1。✓

    路由表与防火墙规则里的单主机条目就是这么写的。通配符掩码算出来是 0.0.0.0,正好是防火墙匹配单个地址要填的那个值。

局限

只做 IPv4。IPv6 地址宽 128 位,塞不进同一套算术,主机数的规矩也不是同一回事——一个 /64 里有 2^64 个地址,在那里减去网络地址与广播地址没有意义。填 IPv6 会被判成格式不对,而不是凑一个近似答案出来。另外这一页用的是最经典的子网模型:把网络地址与广播地址当作保留、两者之间全部算可用主机,这是 RFC 950 定下的、今天几乎所有网络仍在用的那一套。别的特殊场合还有别的约定。分级依据的是 IANA 特殊用途登记表当前的样子,那份表会变;这一页写完之后才被保留的地址段,会被报成公网地址。

常见问题

怎么从这个 CIDR 块算出网络地址?
把地址与子网掩码按位与。192.168.1.10/24 的掩码是 255.255.255.0,二进制是 24 个 1 加 8 个 0;按位与把最后一个八位组清零,得到 192.168.1.0。广播地址是同一次按位与、但主机位改成全填 1,也就是 192.168.1.255。两者之间的全部地址就是可用主机范围。
一个 /26 有多少个可用主机数?
62 个。/26 留 6 个主机位,所以一块是 2^6 = 64 个地址,网络地址与广播地址各占一个。同一条规矩给出的还有:/24 是 254 个、/25 是 126 个、/27 是 30 个。不适用的只有两个前缀:/31 的可用主机数是 2,/32 是 1。
哪些地址段是私有地址?
三段,都写在 RFC 1918 里:10.0.0.0/8、172.16.0.0/12、192.168.0.0/16。它们不在公网上被路由,所以任何单位都可以随便用,只要不需要访问另一个用了同一批号码的网络。另有几段长得像但并不是私有:100.64.0.0/10 是运营商网络内部用的共享地址,169.254.0.0/16 是设备拿不到 DHCP 时自己配的链路本地地址。
通配符掩码是什么,与子网掩码差在哪?
通配符掩码就是子网掩码按位取反。/24 的掩码是 255.255.255.0,通配符掩码是 0.0.0.255。Cisco 的访问控制列表与部分防火墙规则按通配符写,而接口配置填的是掩码本身,所以这一页两个都给。两者加起来恒等于 255.255.255.255,知道一个就等于知道另一个。
为什么 /31 有两个可用主机,而不是一个都没有?
因为 RFC 3021 专门为这一个前缀改了规矩。/31 只有两个地址,按老算法两个都要保留——一个当网络地址、一个当广播地址——于是一条恰好需要两个端点的链路就没地址可用了。RFC 规定在点到点链路上把这两个地址都当可用主机,现在的路由器就是这么做的,这一页也照此报数。
支持 IPv6 吗?
不支持,也不假装支持。IPv6 地址宽 128 位,这里用的 32 位整数做不了同一套算术,主机数的规矩也不是同一回事——一个 /64 里有 2^64 个地址,那不是一个可以减掉两个的数。填 IPv6 前缀会返回格式错误,而不是一个看着像那么回事的错答案;真要 IPv6 版本,那是一个有另一套输出的单独页面。

参考资料

相关计算器