localhost和127.0.01 区别
笔者最近调试程序时遇到的一个问题,localhost不能访问但127.0.0.1可以访问。
一、原理
我估计大多数人都不会去想localhost到底与127.0.0.1有什么不同,就比如我,有时候用http://localhost/来访问本地服务器网页,有时则用http://127.0.0.1/来访问,我觉得他们是通用的表示本地服务器的两个不同的写法而已,就好比一个网页可以通过域名来访问也可以通过IP来访问一样,localhost代表的是域名,而127.0.0.1则代表IP地址。
| localhost | 127.0.0.1 | 本机IP |
网络 | 不联网 | 不联网 | 联网 |
传输 | 不使用网卡,不受防火墙和网卡限制 | 网卡传输,受防火墙和网卡限制 | 网卡传输,受防火墙和网卡限制 |
访问 | 本机访问 | 本机访问 | 本机或外部访问 |
PS:通过本机host文件,windows自动将localhost解析为127.0.0.1,可以修改
另外,我现在也应该明白了一个道理,那就是一般设置程序时本地服务用localhost是最好的,localhost不会解析成IP,也不会占用网卡、网络资源。
二、解决方法
解决方法1:
修改host文件用记事本打开C:/WINDOWS/system32/drivers/etc/hosts文件,看是否有127.0.0.1 localhost 。如果没有则将其添加进去,再查看能否访问localhost。
解决方法2:
1、打开Internert信息管理查看IIS是否启动,且默认网站时候已经开启;
2、打开http://127.0.0.1/ 看是否能访问IIS的默认网页,能访问则说明IIS已经成功安装到电脑上,可能是无法解析localhost;
3、开始--命令(cmd)--ping localhost,看是否能ping通,从127.0.0.1上返回信息,如果成功则说明可以解析localhost;
4、如果上一步不成功,则用记事本打开C:/WINDOWS/system32/drivers/etc/hosts文件,看里面是否有包含:127.0.0.1 localhost ,如果没有则将其添加进去,再查看能否访问localhost。
5、尝试将网站的主目录指向另一个目录或新建一个虚拟目录,并在该新目录创建一个新的网页文件,如index.html,然后将其加到默认网站的"文档"项中作为默认访问的网页,重新输入网址:http://localhost/,看否能访问。
6、还是不行的话将IIS卸载掉,重新再安装一次。
127.0.0.1
127.0.0.1是回送地址,指本地机,一般用来测试使用。回送地址(127.x.x.x)是本机回送地址(Loopback Address),即主机IP堆栈内部的IP地址,主要用于网络软件测试以及本地机进程间通信,无论什么程序,一旦使用回送地址发送数据,协议软件立即返回,不进行任何网络传输。
IP地址由两部分组成,即网络地址和主机地址。网络地址表示其属于互联网的哪一个网络,主机地址表示其属于该网络中的哪一台主机。二者是主从关系。IP地址的四大类型标识的是网络中的某台主机。IPv4的地址长度为32位,共4个字节,但实际中我们用点分十进制记法。
IP地址根据网络号和主机号来分,分为A、B、C三类及特殊地址D、E。全0和全1的都保留不用。
A类:第一个字节为网络号,后三个字节为主机号。该类IP地址的最前面为“0”,所以地址的网络号取值于1~126之间。一般用于大型网络。
B类:前两个字节为网络号,后两个字节为主机号。该类IP地址的最前面为“10”,所以地址的网络号取值于128~191之间。一般用于中等规模网络。
C类:前三个字节为网络号,最后一个字节为主机号。该类IP地址的最前面为“110”,所以地址的网络号取值于192~223之间。一般用于小型网络。
中文名
-
回送地址
外文名
-
localhost
本地机
-
127.0.0.1
网络连接
-
网上邻居
用 途
-
网络测试以及本地机进程间通信
127.0.0.1特殊地址
D类:是多播地址。该类IP地址的最前面为“1110”,所以地址的网络号取值于224~239之间。一般用于多路广播用户 。
E类:是保留地址。该类IP地址的最前面为“1111”,所以地址的网络号取值于240~255之间。
回送地址:127.0.0.1。一般用于测试使用。例如:ping 127.0.0.1 来测试本机TCP/IP是否正常。
在有类IP地址的规定中,第一部分是1~126为A类地址,128~191为B类地址,那么中间留的127.0.0.1被称为本地回环地址,主要作用有两个:一是测试本机的网络配置,能PING通127.0.0.1说明本机的网卡和IP协议安装都没有问题;另一个作用是某些SERVER/CLIENT的应用程序在运行时需调用服务器上的资源,一般要指定SERVER的IP地址,但当该程序要在同一台机器上运行而没有别的SERVER时就可以把SERVER的资源装在本机,SERVER的IP地址设为127.0.0.1也同样可以运行。
对于大多数习惯用localhost的来说,实质上就是指向127.0.0.1这个本地IP地址。在操作系统中有个配置文件(windows中路径为C:\WINDOWS\system32\drivers\etc\hosts,Unix/Linux路径为/etc/hosts)将localhost与127.0.0.1绑定在了一起。
127.0.0.1对于网站建设者来说是常常用到的。
大家常用“ping 127.0.0.1”命令在本机上做回路测试,用来验证本机的TCP/IP协议簇是否被正确安装。但你发现了吗?使用“ping 127.1”这个命令也能得到同样的测试结果,其实“ping 127.1”和“ping 127.0.0.1”这两条命令是一样的,都是在进行回路测试。
为什么会这样呢?这就是Ping命令应用中IP地址的使用技巧。大家都知道,IP地址由32位二进制数字组成,为了方便大家记忆,将每8位二进制数字换算成十进制数字,因此就形成了容易记忆的由四部分十进制数字组成的IP地址(如127.0.0.1)。由于,Windows操作系统具有自动填充 “.0”的功能,因此我就可将“127.0.0.1”变为“127.1”。
但是,这个“.0”的省略是有条件限制的,并不能任意省略。在Ping命令的应用中,只能将在IP地址的最后一部分十进制数字前出现的一个或多个“.0”省略,如把“ping 127.0.0.1”命令改写成“ping 127.1”。
127.0.0.1其他信息
127.0.0.1注意事项
如果这一个或多个 “.0”没有紧挨着最后一部分的十进制数字,而是在其他位置,则这个“.0”不能省略,如“ping 202.0.96.1”就不能写成“ping 202.96.1”。这是因为“ping 202.96.1”返回的结果是“202.96.0.1”的应答信息,而不是“202.0.96.1”的应答信息。
127.0.0.1批处理应用
1在批处理中
相信大多数懂一点批处理的人都见过类似于“ping 127.1 -n 5 >nul”这样的命令。
其实批处理作者的目的肯定不是测试网络,而是为了让批处理运行延时。
这个命令的意思是让批处理运行到这里时延迟4秒在继续运行下面的命令(ping命令每隔一秒试探一次,第一次试探在执行时就试探过了,所以5次试探是延迟4秒),后面>nul 的意思是不在屏幕上显示数据,达到延迟运行又不对批处理造成丝毫影响的目的。产生的效果就是一个白色的闪动符号闪动等待。
2在网络链接中
同一IP段的数据传输使用地址:127.0.0.1 简单来说就是网上邻居使用此地址传输
127.0.0.1特别注意
收到127.0.0.1的响应表示主机的ip配置正确。此响应来自网络层。但是此响应并不代表地址、掩码、和网关配置正确。它也不能说明有关网络协议族下层的任何状态。此方法只是测试网络层的ip联通性。