Quanyin 说

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 的时候,等于本机是通过网络再去访问本机,可能涉及到网络用户的权限。

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

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

参考

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »