本文最后更新于 2019-10-24【23 天前】,文中所描述的信息可能已发生改变,请谨慎使用。如有问题或建议,欢迎在文章底部留言参与讨论!

一直以为 localhost 和 127.0.0.1 是一样的,然后之前有次发现 localhost 可以 ping 通,127.0.0.1 却 ping 不通的现实啪啪打脸,从网上找到了一篇文章,说了二者的区别。

它们分别是啥?

localhost 也叫 local,正确的解释是 本地服务器;
而 127.0.0.1 在 Windows 等系统中的正确解释是:本机地址(本机服务器);它们的解析是通过本机的 hosts 文件,Windows 自动地将 localhost 解析为 127.0.0.1

区别在哪?

localhot(local)是不经网卡传输,这意味着它不受网络防火墙和网卡相关的的限制;而 127.0.0.1 则是通过网卡传输,依赖网卡,并受到网络防火墙和网卡相关的限制。

这也就解释了为什么 iptables 里面有 iptables -A INPUT -p tcp -j DROP 的时候,为什么还要加 iptables -I INPUT -p tcp -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT,如果不加这一条,则会导致通过 127.0.0.1 访问的程序就无法返回。也同时解释了我之前遇到了 localhost 可以 ping 得通,而 127.0.0.1 不行了。

如何利用?

由于 localhost 不经网卡传输,所有一般设置程序时本地服务用 localhost 是最好的,localhost 不会解析成ip,也不会占用网卡、网络资源。有时候用 localhost 可以,但用 127.0.0.1 就不可以的情况就是在于此。猜想 localhost 访问时,系统带的本机当前用户的权限去访问,而用 ip 的时候,等于本机是通过网络再去访问本机,可能涉及到网络用户的权限。

最后用一个表格来小结下。

localhost127.0.0.1本机 ip
网络不联网不联网联网
传输不使用网卡,不受防火墙和网卡限制网卡传输,受防火墙和网卡限制网卡传输,受防火墙和网卡限制
访问本机访问本机访问本机或外网访问

参考

文章目录

推荐使用:阿里云 云翼计划学生优惠、ECS、轻量应用等产品与服务【 点击注册

本文作者:Quanyin Tang

本文链接:localhost 与 127.0.0.1 一样么 - https://www.imtqy.com/localhost-and-127-0-0-1.html

版权声明:如无特别声明,本文即为原创文章,仅代表个人观点,版权归 Quanyin 所有,未经允许禁止转载,经授权转载请注明出处!