IP 子网计算器
结果
网络地址
- 广播地址
- 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 的规矩处理。
算例
家庭网段 192.168.1.10/24
- 前缀是 24,所以掩码是 24 个 1 后面跟 8 个 0:255.255.255.0。
- 把地址的主机位清零:192.168.1.10 AND 255.255.255.0 = 192.168.1.0,这就是网络地址。
- 反过来把主机位全填 1:192.168.1.0 OR 0.0.0.255 = 192.168.1.255,这就是广播地址。
- 两者之间就是可用主机范围:192.168.1.1 到 192.168.1.254。
- 数一遍:2^8 = 256 个地址,减去保留的两个 = 254 个可用。✓
填进去的 .10 是块内的一台主机,所以它不是第一行的答案——一个块用网络地址来标识,这条最容易看反。
点到点链路 172.16.5.1/30
- /30 留 2 个主机位,所以一块是 2^2 = 4 个地址,掩码末位是 252(二进制 11111100)。
- 网络地址:172.16.5.1 AND 255.255.255.252 = 172.16.5.0。
- 广播地址:172.16.5.0 再加上 3 个主机位全填 1 = 172.16.5.3。
- 可用的就剩 172.16.5.1 与 172.16.5.2 两个——例子里的地址正是路由器自己那一端。✓
这是仍然空着两个地址的最小分块。两台路由器之间恰好需要两个,所以才有 /31 那条规矩。
把一个 /24 切成 /26,填 192.168.1.130/26
- /26 留 6 个主机位:2^6 = 64 个地址,掩码 255.255.255.192。
- 130 的二进制是 10000010,/26 只保留其中最前面两位:130 AND 192 = 128。
- 所以网络地址是 192.168.1.128 而不是 192.168.1.0——/26 的块边界在最后一个八位组里落在 64 的倍数上。
- 广播地址:192.168.1.128 + 63 = 192.168.1.191。
- 可用主机数:64 − 2 = 62 个,从 .129 到 .190。✓
这就是肉眼看最容易错的一步:/26 的块边界是 0、64、128、192,所以 .130 落在整个 /24 的第三段,不是第一段。
单个公网主机 8.8.8.8/32
- /32 把所有位都当成网络位,掩码是 255.255.255.255,一块就只有一个地址。
- 与全 1 的掩码按位与等于什么都没做:网络地址就是 8.8.8.8。
- 没有主机位可填 1,所以广播地址与它是同一个地址。
- 一个地址,而且可用:按 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 版本,那是一个有另一套输出的单独页面。
参考资料
- IPv4 特殊用途地址登记表 — 互联网号码分配局(IANA)
- RFC 1918:私有互联网的地址分配 — 互联网工程任务组(IETF)
- RFC 3021:在 IPv4 点到点链路上使用 31 位前缀 — 互联网工程任务组(IETF)