子网里算可用主机数,为什么一定要减 2?
首地址是网段自己的名字,末地址是喊话用的喇叭,这两个都不能发给某台机器。
一个网段里,第一个地址(主机位全 0)用来标识这个网段本身,最后一个是广播地址(主机位全 1),发给它等于给全网段所有设备群发。这两个地址不归任何一台设备所有,所以可用主机数是总地址数减 2。
例如 24 位掩码有 256 个地址,可用 254 个;26 位掩码有 64 个地址,可用 62 个。例外是 31 位掩码——它按点对点链路标准设计,两端各用一个地址,不保留网络与广播地址,可用数就是 2。
减 2 这个规则背起来容易,但很多人说不出那 2 个地址具体是什么、为什么不能分。一旦遇到「服务器 ping 得通却拿不到地址」或者地址怎么算都对不上,就卡在这里。
把网络地址与广播地址的职责弄清楚,再看 31 位和 32 位这两个特例,整块知识就闭合了。
1那 2 个地址分别是什么
以最常见的 24 位掩码为例,把首末两个地址拎出来看它们的作用。
| 地址 | 示例 | 能不能分配给设备 | 作用 |
|---|---|---|---|
| 网络地址(首个) | 192.168.1.0 | 不能 | 在路由表里代表整个网段 |
| 第一个可用 | 192.168.1.1 | 能 | 常被网关占用 |
| 最后一个可用 | 192.168.1.254 | 能 | 可用于主机 |
| 广播地址(末个) | 192.168.1.255 | 不能 | 发往此处等于向全网段群发 |
把网络地址比作「门牌号里的楼号」、广播地址比作「喊话的喇叭」,就容易记住它们不属于任何住户。
2常用掩码的地址数对照
记住几档常用值,规划网段时不必每次推公式。
| 掩码长度 | 子网掩码 | 总地址数 | 可用主机数 |
|---|---|---|---|
| 24 位 | 255.255.255.0 | 256 | 254 |
| 25 位 | 255.255.255.128 | 128 | 126 |
| 26 位 | 255.255.255.192 | 64 | 62 |
| 27 位 | 255.255.255.224 | 32 | 30 |
| 29 位 | 255.255.255.248 | 8 | 6 |
| 30 位 | 255.255.255.252 | 4 | 2 |
| 31 位 | 255.255.255.254 | 2 | 2(点对点,特殊) |
| 32 位 | 255.255.255.255 | 1 | 1(单一主机路由) |
3两个必须记住的例外
这两个特例不遵循减 2,写自动化脚本时最容易在这里出错。
- 31 位不保留网络与广播地址
- 按点对点链路的标准,两端各占一个地址,可用数就是 2;机械减 2 会得到 0,与事实不符
- 32 位是单一主机
- 表示一条精确到单个地址的路由,谈不上「网段」与「广播」,可用数就是 1
- 减 2 只在常规网段成立
- 从 1 位到 30 位掩码都适用,跨过 30 位就要走上面的特例分支
- 私有地址段可直接用
- 10 开头的 8 位段、172.16 开头的 12 位段、192.168 开头的 16 位段是保留给内网使用的,无需申请
写代码判断可用主机数时,先判断掩码长度是否大于 30,大于时走特例分支,否则统一用「2 的主机位次方减 2」,这样不会把 31 位算成 0。
顺着这个问题往下用
全部工具总览 →相关疑问
ping 广播地址会发生什么?
同一网段内的设备都会收到响应,可能出现大量回复甚至网络拥塞。这也是它不能分配给单台设备的原因之一:它代表的是一组设备,而不是某台设备。
网关一定要用第一个可用地址吗?
不一定,是约定俗成的习惯。网关可以是网段内任意可用地址,只要全网设备配置一致即可。用第一个可用地址的好处是便于记忆和排查。
为什么 30 位掩码刚好够点对点?
30 位只有 4 个地址,去掉网络与广播剩 2 个可用,正好够一条链路的两端各用一个。所以在 31 位方案普及之前,它一直是点对点链路的标准选择。
通配符掩码和子网掩码是一回事吗?
不是,但相关:通配符掩码是子网掩码按位取反的结果,用在访问控制列表与路由协议里,用来描述「哪些位必须匹配、哪些位可以变化」。
继续看:相关问题与资料
全部问题解答 →内容说明:本页针对具体使用问题作答,方法步骤与数值由本站自行整理与复算,事实性内容以对应官方规范与文档为准。内容最后核对日期:2026-10-08。若发现错误,欢迎通过页脚反馈入口告知。
速查在线工具箱