公众号旧文
为什么现在 IP 地址的 .0 和 .255 也能用了?
起因是我看到了和我处在同一个/24的公网
111.164.177.0 和 111.164.177.255
都是在正常使用的主机地址。


一时间有一些恍惚:
.0 不是网络地址吗?.255 不是广播地址吗?
怎么这俩 IP 都能当主机地址了?
包括我在内的很多人学网络时都会被老师强调:
一个 C 段(/24)里
.0 是网络地址
.255 是广播地址
.1 是网关
.2–.254 才是主机
但当我们真正去观察公网 IP 时,却经常发现:
.0 在用
.255 在用
网关也不一定是 .1
这到底是怎么回事?难道运营商违规了吗?
答案是:不是网络变了,而是我们当初学得太简化了。
一、那条规则从哪里来的?
我们先回到最经典的模型:
192.168.1.0/24
子网掩码:255.255.255.0
在这个结构下:
| 地址 | 作用 |
|---|---|
| 192.168.1.0 | 网络地址 |
| 192.168.1.255 | 广播地址 |
| 192.168.1.1 | 常见网关 |
| 192.168.1.2–254 | 主机地址 |
这确实是对的。
但它只在一个前提下成立:
子网掩码是 255.255.255.0(也就是 /24)
问题来了:现实中的公网几乎很少用完整的 /24 分给家庭用户。
二、运营商根本不是按 /24 在给你分网段
现代网络通常是这样分配的:
- /23
- /22
- /21
- /20
只要掩码不是 /24,那么:“.0 是网络地址” 这句话就可能不成立。
三、举个最直观的例子
假设某运营商有这样一个网段:
1.2.2.0/23
掩码:255.255.254.0
这个子网的实际范围是:
1
.
2
.
2
.
0
–
1.2.3.255
广播地址是:
1
.
2
.
3
.
255
那么请问:
1
.
2
.
2
.
255
是不是合法的主机地址?
1
.
2
.
3
.
0
是不是合法的主机地址?
答案是:完全合法。
因为在 /23 结构里,.0 不一定是网络地址,.255不一定是广播地址。
四、运营商甚至可能根本没有“广播”
在家庭宽带中,大量使用:
- PPPoE
- IPoE
- MPLS
- VLAN
- 三层交换
- 点对点链路
尤其是 /31 点对点结构(RFC 3021 标准):
x
.x.x.
0
x
.x.x.
1
两个都可以是主机地址。
根本没有广播地址这个概念。
在现代运营商网络里:
- 广播域被极度压缩
- ARP 可能被代理
- 纯三层转发为主
广播在公网环境中几乎没有意义。
五、为什么我们会被误导?
因为教学模型必须简单。
“一个 C 段 254 台主机”,这是为了方便理解 IP 的结构。
但互联网从 1993 年就开始使用 CIDR(无类域间路由)了。
也就是说早就没有“C 段”的概念了。
C 类网络的概念是历史遗留。
现代互联网只认:
IP
+ 掩码长度
不认“C 段”。
六、再说一个常见误区:.1 一定是网关?
不一定。
在运营商网络中,你可能看到:
- .254 是网关
- .253 是网关
- 甚至根本没有传统意义上的“网关 IP”
因为可能是:
- 三层接口
- 虚拟网关
- BNG
- BRAS
网关只是逻辑概念,不是固定数字。
七、家庭宽带常见的真实情况
如果你现在用的是家庭宽带,很可能:
- 你拿到的是 /32
- 或者 CGNAT 内部地址
- 或者 /30 点对点
例如 CGNAT 常用的网段:
100
.
64
.
0
.
0
/
10
运营商内部会切分成大量小子网。
在这种结构里:.0 和 .255 出现在用户身上是完全正常的。
八、真正应该记住的规则
不要再记:.0 不能用,.255 不能用
应该记:只有在当前子网掩码下的网络地址和广播地址不能用。
而不是固定数字不能用。
九、一句话总结
“.0 和 .255 不能用”,只是 /24 教学模型下的特例。
现代公网世界里:是否可用,取决于掩码,而不是取决于最后一个数字。