766 字
4 分钟
本机环回地址
2026-08-07
无标签

在浏览器地址栏输入 127.0.0.1,能打开本机运行的网站。但把地址改成 127.0.0.2,有时同样能访问。这并不是浏览器的特殊能力,而是 IP 协议为本机通信预留的一块地址空间。

127.0.0.2 为什么能工作?#

IPv4 将整个 127.0.0.0/8 网段预留给环回(loopback)用途。换句话说,从 127.0.0.1127.255.255.254 的常规主机地址都指向当前这台电脑;发往它们的数据包不会进入网卡、交换机或路由器,而是由操作系统直接送回本机网络协议栈。

因此,下面这些地址通常都代表本机:

  • 127.0.0.1
  • 127.0.0.2
  • 127.1.1.1
  • 127.88.99.10
  • 127.255.255.254

127.0.0.1 只是最常用、最容易辨认的那个,并不是唯一的本机 IPv4 地址。通常不把 127.0.0.0127.255.255.255 当作服务地址使用,因为它们分别具有网段和广播语义。

IPv6 的本机地址:::1#

IPv6 也有自己的环回地址:::1。它相当于 IPv6 世界里的 127.0.0.1

http://[::1]:8000

IPv6 地址里带有冒号,所以在 URL 中必须用方括号把地址括起来。与 IPv4 的整个 127.0.0.0/8 网段不同,IPv6 只定义了这一个环回地址,没有 ::2::3 这样的环回地址家族。

平时使用的 localhost 不是 IP 地址,而是主机名。它可能解析为 127.0.0.1::1,也可能同时解析为两者;具体优先使用哪个地址,取决于操作系统、浏览器和服务是否支持 IPv6。因此,排查本地服务问题时,直接指定 IP 地址往往更明确。

多个环回地址的作用#

最直接的用途是让多个本地服务使用相同端口,同时仍保持网络层面的隔离。例如,下面三个命令可以各自使用 8000 端口:

Terminal window
python -m http.server 8000 --bind 127.0.0.1
python -m http.server 8000 --bind 127.0.0.2
python -m http.server 8000 --bind 127.0.0.3

对应访问地址分别是:

http://127.0.0.1:8000
http://127.0.0.2:8000
http://127.0.0.3:8000

这里区分服务的不是端口本身,而是「本地 IP 地址 + 端口」这个组合。它很适合测试多个虚拟主机、回调地址或需要模拟多台主机的场景。

不过有一个容易混淆的细节:服务若只监听 127.0.0.1,就不会自动接受发往 127.0.0.2 的连接。想通过其他 127.* 地址访问,需要让服务显式绑定该地址,或按所用框架和操作系统的规则监听通配地址。

0.0.0.0 不是一个可访问的目标#

需要注意的是,0.0.0.0是一个特殊存在:

它的含义是「监听所有 IPv4 网络接口」,包括局域网网卡和环回接口,并不表示存在一台 IP 为 0.0.0.0 的主机。实际访问时,应改用具体地址,例如 127.0.0.1:3000192.168.1.20:3000

总结#

127.0.0.1 并不孤单:整个 127.0.0.0/8 都服务于 IPv4 本机环回,::1 则承担 IPv6 环回的角色。掌握这些地址的区别,能帮助我们更准确地配置服务监听、隔离本地测试环境,并避免把 0.0.0.0 或公网 IP 误当成普通访问地址。

本机环回地址
https://blog.firpe.cn/posts/本机环回地址/
作者
发布于
2026-08-07
许可协议
CC BY-NC-SA 4.0