localhost与127.0.0.1的概念和工作原理之不同
概念:
- localhost:也叫local ,正确的解释是:本地服务器
- 127.0.0.1:在windows等系统的正确解释是:本机地址(本机服务器)
工作原理:
- localhot:是不经网卡传输的,它不受网络防火墙和网卡相关的的限制。
- 127.0.0.1:是通过网卡传输的,它依赖网卡,并受到网络防火墙和网卡相关的限制。
文中开头提到的localhost不能访问但127.0.0.1可以访问的问题,究其原因,很可能是localhost访问时,系统带的本机当前用户的权限去访问,而用ip的时候,等于本机是通过网络再去访问本机,可能涉及到网络用户的权限。
另外,我们现在也应该明白了一个道理,那就是一般设置程序时本地服务用localhost是最好的,localhost不会解析成IP,也不会占用网卡、网络资源。
出现的问题:
一般情况下ping localhost 应该为127.0.0.1 ,但是有时会出来下面这个东西:
- >ping localhost
- reply from ::1: times<1ms
- reply from ::1: times<1ms
- reply from ::1: times<1ms
地址根本不是“127.0.0.1”,而是“::1:”
- >ping 127.0.0.1 正常
- reply from 127.0.0.1 : bytes=32 times<1ms
- reply from 127.0.0.1 : bytes=32 times<1ms
- reply from 127.0.0.1 : bytes=32 times<1ms
解决方案一:
修改host文件用记事本打开C:/WINDOWS/system32/drivers/etc/hosts文件,看里面是否有包含:127.0.0.1 localhost
如果没有则将其添加进去,host文件部分内容:
# 127.0.0.1 localhost
# ::1 localhost
127.0.0.1localhost
localhost 127.0.0.1
这时候ping localhost可以了,但还是无法打开localhost
解决方案二:
可能是有些程序修改了Winsock,命令行窗口使用 netsh winsock reset 命令修复 Winsock 后重启计算机即可。