在很多场景下都能看到 127.0.0.1 和 localhost,比如如果你曾经修改过 host 文件的话,那么你一定对这个 ip 似曾相识,不管是 Window 还是 Linux,host 文件里面都会有这样的一条记录: 127.0.0.1 localhost ,那么也就是说 127.0.0.1 和 localhost 二者是对应的关系。

127.0.0.1与localhost

127.0.0.1是什么?

直接百度搜索,结果一般是 127.0.0.1 为保留地址,直白地说 127.0.0.1 就是一个 ip 地址,不同于其它 ip 地址的是它是一个指向本机的 ip 地址,也称为环回地址,该 ip 地址不能使用在公网 ip 上,对任何一台电脑来说,不管是否连接到INTERNET上,127.0.0.1 都是指向自己。

事实上整个 127.* 网段都是环回地址,127.* ip 段都为保留地址,只是规则制定者将其中的 127.0.0.1 规定为指向本机自己。

localhost是什么?

在电脑网络中,localhost 为“本地主机”,是给回路网络接口(loopback)的一个标准主机名,IPv4 相对应的地址为 127.0.0.1,IPv6 相对应的地址为 [::1],这个名称也是一个保留域名。

说白了就是 localhost 就是一个本地域名,该本地域名指向的 ip 地址就是 127.0.0.1 ,也就是指向本机,localhost 更方便记忆与输入,因 hosts文件 定义了 localhost = 127.0.0.1 ,所以你只需要记住 localhost 就可以代表本机了。

对机器来说,它需要通过 hosts 文件来定义 localhost = 127.0.0.1(多一次解析 ip 的步骤) ,才能知道 localhost 代表的是本机,机器只知道 127.0.0.1 代表本机,因此当你向 localhost 发消息的时候,机器会自动翻译后给127.0.0.1发消息。

而在实际工作中,localhost 是不经过网卡传输的,所以它不受网络防火墙和与网卡相关的种种限制,而 127.0.0.1 则要通过网卡传输数据,是必须依赖网卡的。

这一点也是 localhost 和 127.0.0.1 的最大的区别,这就是为什么有时候用 localhost 可以访问,但用 127.0.0.1 就不可以的情况。

最后总结

localhost 是个本地域名,不是地址,它可以被配置为任意的 IP 地址,不过通常情况下都指向 127.0.0.1 和 [::1],分别为 IPV4 和 IPV6。

整个 127.* 网段通常被用作 loopback 网络接口的默认地址,按惯例通常设置为 127.0.0.1。

这个地址在其他计算机上不能访问,就算你想访问,访问的也是自己,因为每台带有 TCP/IP 协议栈的设备基本上都有 localhost/127.0.0.1。

本机地址通常指的是绑定在物理或虚拟网络接口上的IP地址,可供其他设备访问到。