公众号旧文
你知道0.0.0.0和255.255.255.255都是什么吗
之前写过一篇你知道127.0.0.2是本机,那0.0.0.0又是谁?
当时只是从操作系统的角度,解释了 0.0.0.0 的身份。
今天借着讲 255.255.255.255 的机会,把 0.0.0.0 也再讲一讲。
一、255.255.255.255:对所有人喊话
255.255.255.255 的正式名字是:
Limited Broadcast Address(受限广播地址)
它的核心含义是:给当前局域网里的所有设备发消息。
它的特点:
- 只在 本地网络(LAN) 内有效
- 路由器不会转发
- 同一网络里的所有设备都会收到
可以把它想象成主机在一个房间里大喊:所有人都听我说!
那为什么是 255.255.255.255?
IPv4 地址是 32 位,255.255.255.255 全部是 1:
11111111.11111111.11111111.11111111
在 IP 规则里:
- 主机位全 1 → 广播地址
- 主机位全 0 → 网络地址
所以:
255.255.255.255 = 广播给所有人
很多人会混淆这两个:
1️⃣ 网段广播地址(定向广播)
例如:
192.168.1.255
只对下面这个网段有效:
192.168.1.0/24
2️⃣ 255.255.255.255(受限广播)
- 不依赖网段
- 只在本地链路有效
- 不会被路由
受限广播是更原始、更底层的广播方式。
二、0.0.0.0:容易被误解的地址
0.0.0.0 是“多重人格”,必须分场景理解。
一句话总结:
在协议层,它是我还没有 IP;而在操作系统里,它是我代表所有 IP。
场景一:网络协议里
0.0.0.0 的正式名字是:
Unspecified Address(未指定地址)
意思是发送方还不知道自己的 IP。
典型例子:DHCP
一台电脑刚接入网络时:
- 没有 IP
- 不知道 DHCP 服务器在哪
它只能这样发包:
Source IP: 0.0.0.0
Destination IP: 255.255.255.255
翻译成人话就是:我还没有 IP,但我想问问谁能给我分配一个地址?
这就是著名的 DHCP Discover。
场景二:操作系统里
当你看到:
0.0.0.0:80
LISTEN 0.0.0.0:22
这时候的 0.0.0.0 并不是一个真实 IP,而是一个通配符(wildcard)。
它的意思是监听本机所有 IP。
举个例子
你的服务器有这些地址:
- 192.168.1.10
- 10.0.0.5
- 127.0.0.1
如果程序:
bind 0.0.0.0:80
实际效果是:
- 192.168.1.10:80 ✅
- 10.0.0.5:80 ✅
- 127.0.0.1:80 ✅
全部监听。
为什么 0.0.0.0 看上去会自相矛盾?
因为它跨了两个层:
| 层级 | 含义 |
|---|---|
| TCP/IP 协议层 | 未指定地址(nobody) |
| 操作系统 / 应用层 | 所有地址(everybody) |
同一个数字,在不同语境下语义不同。
三、三大经典地址一图理解
| 地址 | 含义 |
|---|---|
| 0.0.0.0 | 我还没有 IP / 所有本机 IP |
| 127.0.0.1 | 我自己(回环) |
| 255.255.255.255 | 本地所有设备 |
四、终极总结
可以这样记:
- 0.0.0.0(协议层):我是谁不知道
- 0.0.0.0(系统层):我代表所有自己
- 255.255.255.255:我对所有人说话
或者更形象一点:
0.0.0.0 是“无名之人”,255.255.255.255 是“广播全场”。
扩展阅读: