使用 Linux 或任何其他操作系统时,我们可能会经常遇到 localhost 和 127.0.0.1 这两个术语。它们密切相关,但了解两者之间的区别有助于澄清许多网络概念。
1] 什么是 Localhost?
简单来说,localhost 是一个主机名,指的是正在使用的本地计算机,用于通过 TCP/IP(传输控制协议/Internet 协议)等网络协议访问自己的计算机。当我们在浏览器或终端中输入”localhost”时,就是在告诉系统,”嘿,我想访问我自己的机器。”
- 主机名:分配给连接到网络的设备的名称
- Localhost:指的是正在使用的机器
例如,如果在机器上运行有 Web 服务器,则可以通过在浏览器中输入”http://localhost”来访问它的内容。浏览器将与在同一台计算机上运行的 Web 服务器进行通信。
2] 什么是127.0.0.1?
从根本上讲,127.0.0.1 是环回 IP 地址,这是一个特殊的 IP 地址,它始终指向自己的计算机,就像 localhost 一样。事实上,localhost 本质上是一个指向 127.0.0.1 的名称。
- 127.0.0.1:为环回网络接口保留特定的 IP 地址
- 环回:指将网络流量从用户的系统发送到自身的过程
当在浏览器或终端中输入”127.0.0.1″时,它在功能上等同于输入”localhost”。两者都将指向自己的计算机,并且数据永远不会离开计算机,这意味着这不会涉及任何外部网络通信,都只是系统与自己对话。
3] Localhost 和 127.0.0.1 的主要区别
虽然 localhost 和 127.0.0.1 最终指的是同一件事(用户自己的机器),但它们之间还是存在一些差异:
格式:
- Localhost 是一个主机名
- 127.0.0.1 是一个 IP 地址
用途:
- localhost 可以在命令、配置文件或 URL 中用作符号名称
- 127.0.0.1 用于基于 IP 的网络环境中,通常在需要直接指定 IP 地址时输入
网络解析:
- 当使用 localhost 时,系统需要将其解析为 IP 地址,并通过查找配置文件中的条目(例如,Linux 系统上的 /etc/hosts 文件)来实现此目的
- 127.0.0.1 已经是一个 IP 地址,因此使用它时无需解析
4] Localhost 和 127.0.0.1 如何协同工作?
尽管 localhost 是一个名称,而 127.0.0.1 是一个 IP 地址,但它们通常通过系统的 hosts 文件进行关联。在 Linux 机器上,此文件位于 /etc/hosts。
在此文件中,可以找到如下条目:
127.0.0.1 localhost
这意味着每当需要引用 localhost 时,系统都会自动使用 127.0.0.1 作为目标。可以将 localhost 视为 IP 地址 127.0.0.1 的人性化版本。
5] 为什么要同时使用它们?
同时使用 localhost 和 127.0.0.1 的原因主要是为了易于使用和灵活性:
- localhost:记住并输入”localhost”比输入数字地址 127.0.0.1 更容易
- 127.0.0.1:使用实际 IP 地址可以更明确地控制网络设置,尤其是在配置服务器或编写脚本时
我们甚至可以在 /etc/hosts 文件中为环回地址分配多个名称(例如”loopback”或”myserver”),这在某些情况下会很有帮助。
6] 实际用例
假设我们正在开发 Web 应用程序,则可能需要在将其部署到实时服务器之前在本地进行测试。于是可以使用 localhost 或 127.0.0.1 访问本地 Web 服务器。
不有许多网络工具和命令(如 ping 或 curl)都可用于使用 localhost 或 127.0.0.1 来测试机器的网络接口:
# ping 127.0.0.1 或 #curl http://localhost
这些命令可以验证机器上的环回接口是否正常工作。
总之,localhost 和 127.0.0.1 经常互换使用,因为它们都指代自己的计算机。但是,localhost 是一个主机名(人性化的名称),而 127.0.0.1 是一个指向同一位置的 IP 地址。
无论使用 localhost 还是 127.0.0.1,底层网络请求都保持不变,并且计算机会与自身进行通信,这可以成为本地测试和配置服务的有用工具。