一直以为 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 | |
---|---|---|---|
网络 | 不联网 | 不联网 | 联网 |
传输 | 不使用网卡,不受防火墙和网卡限制 | 网卡传输,受防火墙和网卡限制 | 网卡传输,受防火墙和网卡限制 |
访问 | 本机访问 | 本机访问 | 本机或外网访问 |
9 comments
冒泡
看你好久没更新了啊
|´・ω・)ノ
受用了,非常棒的对比
博客很棒 欢迎回访我哦
原来区别在于这里,了解了
原来是这样,最后的这个表格截图保存了,非常有用
收藏了
这个非常有用,收藏了