公众号旧文

你知道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 是“广播全场”。

扩展阅读:


你知道127.0.0.1是本机,那127.0.0.2是谁?

为什么IPv6是全球唯一地址,而你家的IPv6却不是固定的?

为什么现在 IP 地址的 .0 和 .255 也能用了?

你每天上网都在使用的IP,是谁分配给你的?