127.0.0.1是什么?
127.0.0.1在很多场景下都能看到,比如如果你曾经修改过 host 文件的话,那么你一定对这个 ip 似曾相识。不管是 window 还是 linux,host 文件里面都会有这样的一条记录: 127.0.0.1 localhost 。也就是说 127.0.0.1 和 localhost 二者是对应的关系。
127.0.0.1是什么?
你直接度娘下第一个搜索结果一般是 ip 地址,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)的一个标准主机名,相对应的IP地址为127.0.0.1(IPv4)和[::1](IPv6)。这个名称也是一个保留域名。[摘自维基]
说白了就是 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就不可以的情况。
ping 127.0.0.1 作用?
我们常常看到技术工作者在检查网络情况时,可能会使用 dos 命令来: ping 127.0.0.1,其实通常使用该方法来来验证本机的TCP/IP协议是否被正确安装。如:
上面说了 127.* 网段都是环回地址,均指向本机地址,所以你只要 ping 以 127.* 开头的 ip 进行测试都可以,比如:
如果能 ping 通,像上面的图显示那样,就说明你本机的TCP/IP协议正常。
总结
localhost 是个域名,不是地址,它可以被配置为任意的 IP 地址,不过通常情况下都指向 127.0.0.1(ipv4)和 [::1](ipv6)。
整个127.* 网段通常被用作 loopback 网络接口的默认地址,按惯例通常设置为 127.0.0.1。这个地址在其他计算机上不能访问,就算你想访问,访问的也是自己,因为每台带有TCP/IP协议栈的设备基本上都有 localhost/127.0.0.1。
本机地址通常指的是绑定在物理或虚拟网络接口上的IP地址,可供其他设备访问到。
最后,从开发角度来看localhost是个域名,性质跟 “www.baidu.com” 差不多。不能直接绑定套接字,必须先gethostbyname转成IP才能绑定。
127.0.0.1 是绑定在 loopback 接口上的地址,如果服务端套接字绑定在它上面,你的客户端程序就只能在本机访问。如果主机中存在多个网卡,分别连接不同的物理网络,比如 192.168.0.1/255.255.255.0 和 192.168.1.1/255.255.255.0,那么当你的服务端套接字绑到 192.168.0.1 这个地址上时,位于 192.168.1.* 网段的其他计算机是无法连接的,只有位于192.168.0.* 网段的计算机才能访问你的服务端程序。
上面最后的总结摘自:知乎(更深的蓝)
链接:https://www.zhihu.com/question/23940717/answer/26230963
2 Comments
get it!
原来如此。