「Network」127.0.0.1 与 0.0.0.0
简述:我对 127.0.0.1
和 0.0.0.0
这两个地址的概念一直都,好像了解,但却说不清楚。最近写博客的冲动比较强烈,遂查阅诸多资料,作解惑与收录。
1 127.0.0.1
127.0.0.1
是 IPv4
的 loopback 地址。localhost
这个主机名称一般会解析为 127.0.0.1
。
所谓
loopback
(环回,无助于理解的翻译) 机制,就是不借由本机网络接口(network interface
)和本机接入的网络,实现(仅限)在本机中的网络服务。loopback 地址是一个接口(
interface
),基于软件实现,与硬件没有关联,也并没有实际接入外部网络。使用 loopback 网络接口会忽略本地的网络接口硬件。127.0.0.1
指向本机,通过在浏览器地址栏输入127.0.0.1
及某一端口号, 可与 监听这一地址和该端口的本机程序进行连接。
If you enter an IP address (or corresponding domain name) in your browser, the router will forward your request to the internet and to the correct server. This means that if you enter 172.217.0.0, you will reach the Google homepage. However, the situation is different with 127.0.0.1 because requests to this address will not be forwarded to the internet. TCP/IP recognizes from the first block (127) that you don’t want to access the internet, you are calling yourself instead. This then triggers the loopback.
- 实际上,
IPv4
loopback 地址是127.0.0.0/8
,也就是形式为127.xxx.xxx.xxx
的所有地址(除了127.255.255.255
),总数超过1600万。这意味着,在浏览器地址栏输入这1600多万IPv4
地址的任一个以及相应端口,都能连接到监听程序。
如图所示,输入 127.0.0.1:4000
、127.1.1.1:4000
、127.255.255.1:4000
三个不同的地址,均能跳转至 Hexo 首页。
2 0.0.0.0
在 IPv4
中,0.0.0.0
是一个不可路由(non-routable
)的地址,用于指向一个无效、不适用或者未知的目标。在不同情况中,这一地址具有不同的含义。
- 提到主机地址
- 在配置服务器时, 可以泛指所有
IPv4
地址,比如绑定监听socket
。 - 当某主机未被分配一个
IPv4
地址时,该主机可以将0.0.0.0
声明为它的地址。比如在通过DHCP
获取地址时,主机向所在子网发送一个DHCP discover
的链路层帧(Frame
),帧中的IPv4
数据报的源IPv4
地址就是0.0.0.0
,因为该主机还未分配地址。
- 在配置服务器时, 可以泛指所有
- 提到路由表(
routing table
)0.0.0.0/0
作为 默认路由(default route
)的 目的地址(Destination
)字段。(这里需要对CIDR
有基本的了解)因为CIDR
的最长前缀匹配(longest prefix match
)规则,而0.0.0.0/0
的子网掩码长度为0,所以0.0.0.0/0
将是路由表中的最后匹配,即默认路由。0.0.0.0
作为路由表中规则的网关(Gateway
)字段。没有指定去往目的子网的相应网关,也就是说目的地址在同一网段,通信时不需要经过网关。
3 参考
- Localhost (127.0.0.1) - IONOS
- 0.0.0.0 - wikipedia
- What’s the difference between 127.0.0.1 and 0.0.0.0? - Superuser
- Default Gateway & Default Routes - Cisco CCNA
- Linux 路由表详解及 route 命令详解 - CSDN
- Loopback - Wikipedia
以上!
「Network」127.0.0.1 与 0.0.0.0