localhost 与 127.0.0.1 一样么
本文最后更新于 2019-10-24【2012 天前】,文中所描述的信息可能已发生改变,请谨慎使用。如有问题或建议,欢迎在文章底部留言参与讨论!
一直以为 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 的时候,等于本机是通过网络再去访问本机,可能涉及到网络用户的权限。
最后用一个表格来小结下。
localhost | 127.0.0.1 | 本机 ip | |
---|---|---|---|
网络 | 不联网 | 不联网 | 联网 |
传输 | 不使用网卡,不受防火墙和网卡限制 | 网卡传输,受防火墙和网卡限制 | 网卡传输,受防火墙和网卡限制 |
访问 | 本机访问 | 本机访问 | 本机或外网访问 |
参考
- localhost与127.0.0.1的区别,关键在防火墙这个问题上的解释 - https://blog.51cto.com/xiaozuo2010925/1914841
本文作者:Quanyin Tang
本文链接:localhost 与 127.0.0.1 一样么 - https://www.imtqy.com/localhost-and-127-0-0-1.html
版权声明:如无特别声明,本文即为原创文章,仅代表个人观点,版权归 Quanyin 所有,未经允许禁止转载,经授权转载请注明出处!
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
微信小程序评论测试
人工审核,来自微信小程序
有时候必须要127.0.0.1才能访问的,比如安装了wsl,用127.0.0.1才能互访,用localhost就不行
厉害
写的挺好的!
挺好