有网络知识基础的人,肯定不会对127.0.0.1这个IP地址感到陌生,如果本机搭建了网站(Web服务器),只要在浏览器中输入这个127.0.0.1或localhost就能访问。很多人因此把它叫做本机地址,实际上这种叫法是不准确的,127.0.0.1真正的名称是环回地址(Loopback Address)。
127.0.0.1与localhost
127.0.0.1与localhost在绝大部分情况下都是通用的,但两者之前还是存在明显的区别。
首先从概念上加以区分,127.0.0.1是IP地址,localhost是本机的域名,Windows系统下的hosts文件可以看到两者的关系,hosts文件中默认有两条记录,localhost分别对应本机的IPv4(127.0.0.1)和IPv6地址(::1),这个文件是可以修改的;
其次使用时稍有不同,虽然两者都可以使用ping命令,但ping localhost会发现localhost被解析成 ::1,这实际上是127.0.0.1的IPv6形式,另外通常用ping 127.0.0.1来检查网卡状态是否正常。
127.0.0.1与私有IP、公网IP
IP地址是设备在网络上的唯一标识,比如无线路由器有两个IP,公网IP(如100.78.118.73)连接互联网,私有IP(如192.168.1.1)连接局域网,如果手机或电脑连接WiFi上网,无线路由器会给手机或电脑分配一个私有IP(如192.168.1.101)。我们可以通过127.0.0.1访问本机,通过私有IP访问局域网内部的其它设备,通过公网IP访问互联网上的其它设备。
127.0.0.1是如何工作的
根据TCP/IP协议,所有网络请求都包含源IP和目标地址IP,在将请求数据发送到网络上之前都会对数据包进行检查,如果发现目的地址包含127.0.0.1,就会直接过滤掉该数据包,并将请求数据重新路由到源IP,由驱动程序处理。这样能保证访问127.0.0.1的请求不会发到网络上,也能阻止网络攻击者将恶意网络数据装成环回地址对他人发起攻击。
127.0.0.1与其它特殊IP地址
事实上IPv4保留127.0.0.0整个网段的地址用于环回测试,127.0.0.1只是其中一个,你可以ping通这个网段里的所有地址,也可以在浏览器中输入任意一个地址访问本机的Web服务。
另外一个经常被混淆的IP地址是0.0.0.0,它才是真正意义上的本机地址,它的用法跟127.0.0.1完全不同,下面举例说明:比如电脑有两块网卡,其中一块使用公网IP用于连接互联网,另外一块使用私有IP连接局域网,如果本机搭建了Web服务,并且希望外网和内网都能正常访问,可以在服务器的配置中将服务器地址改为0.0.0.0。
参考:
https://baijiahao.baidu.com/s?id=1611568260130395973&wfr=spider&for=pc