localhost 与 127.0.0.1 一样么
一直以为 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
当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »