答: localhost等同于127.0.0.1,区别在于localhost是域名,127.0.0.1是IP地址,它们都是本机访问,访问时都不需要联网。
一、127.0.0.1
操作系统初始化本机的TCP/IP协议栈时,设置的协议栈本身的IP地址为127.0.0.1(保留地址),并注入路由表。
当IP层接收到目的地址为127.0.0.1(准确的说是:网络号为127的IP)的数据包时,不调用网卡驱动进行二次封装,而是立即转发到本机IP层进行处理,不涉及底层操作。因此ping 127.0.0.1一般作为测试本机TCP/IP协议栈正常与否的判断之一。
127.0.0.1 是绑定在 loopback 接口上的地址,如果服务端套接字绑定在它上面,你的客户端程序就只能在本机访问
二、localhost
从开发度来看,localhost是个域名,性质跟 “www.baidu.com” 差不多。不能直接绑定套接字,必须先gethostbyname转成IP才能绑定。
三、本机IP
本机地址通常指的是绑定在物理或虚拟网络接口上的IP地址,是本机对外放开访问的IP地址,可供其他设备访问。 本机IP需要联网访问,既可以供本机访问,也可以供外部访问。
本机IP,确切地说,“本机地址”并不是一个规范的名词。通常情况下,指的是“本机物理网卡所绑定的网络协议地址”。由于目前常用网络协议只剩下了IPV4,IPX/Apple Tak消失了,IPV6还没普及,所以通常仅指IP地址甚至ipv4地址。
四、网卡
我们可以这样理解:本机有三块网卡,一块网卡叫做loopback(虚拟网卡),一块叫做ethernet(有线网卡),一块叫做wlan(你的无线网卡)。你的本机 IP 是你真实网卡的 IP,具体来说有线无线各有一个,而 127.0.0.1 是那块叫做 loopback 的虚拟网卡的 IP。[2]
4.1 127.0.0.1与loopback
整个127.* 网段通常被用作 loopback 网络接口的默认地址,按惯例通常设置为 127.0.0.1。这个地址在其他计算机上不能访问,就算你想访问,访问的也是自己,因为每台带有TCP/IP栈的设备基本上都有 localhost/127.0.0.1。
127.0.0.1 这个地址通常分配给 loopback 接口。loopback 是一个特殊的网络接口(可理解成虚拟网卡),用于本机中各个应用之间的网络交互。只要操作系统的网络组件是正常的,loopback 就能工作。Windows 中看不到这个接口,Linux中这个接口叫lo
可以看出 lo 接口的地址是 127.0.0.1。事实上整个 127.* 网段都算能够使用,比如你 ping 127.0.0.2 也是通的。 但是使用127.0.0.1作为loopback接口的默认地址只是一个惯例。[1]
参考资料
[1]https://zhidao.baidu.com/question/1176120779058268299.html百度知道《localhost,127.0.0.1 和 本机IP 三者的区别》
[2]https://blog.csdn.net/wang_zhenwei/article/details/48517943《Network学习1_localhost、127.0.0.1 和 本机IP 三者的区别》