更多>>PHP程序设计 Blog

PHP本地环境获取IP返回值为::1而不是127.0.0.1的原因及解决方法

Win7 环境下,PHP在进行本地环境测试获取客户端IP时,返回值却是: ::1 ,而不是传统的 127.0.0.1 的原因及解决方法。

Win7 环境下,PHP在进行本地环境测试获取客户端IP时,返回值却是: ::1 ,而不是传统的 127.0.0.1 如上图所示,这是为什么呢?

关于这个问题,不得不述说一下“环回地址(loopback address)”及“IPv4”和“IPv6”的知识。

环回地址

环回地址是主机用于向自身发送通信的一个特殊地址。环回地址为同一台设备上运行的 TCP/IP 应用程序和服务之间相互通信提供了一条捷径。同一台主机上的两项服务若使用环回地址而非分配的主机地址,就可以绕开 TCP/IP 协议栈的下层。通过 ping 环回地址,还可以测试本地主机上的 TCP/IP 配置。

IPv4

IPv4,是互联网协议(Internet Protocol,IP)的第四版,也是第一个被广泛使用,构成现今互联网技术的基石的协议。IPv4中规定IP地址长度为32(按TCP/IP参考模型划分) ,即有2^32-1个地址。一般的书写法为4个用小数点分开的十进制数。

目前的全球因特网所采用的协议族是TCP/IP协议族。IP是TCP/IP协议族中网络层的协议,是TCP/IP协议族的核心协议。目前IP协议的版本号是4(简称为IPv4,v,version版本),它的下一个版本就是IPv6。

IPv6

IPv6是Internet Protocol Version 6的缩写,其中Internet Protocol译为“互联网协议”。IPv6是IETF(互联网工程任务组,Internet Engineering Task Force)设计的用于替代现行版本IP协议(IPv4)的下一代IP协议。IPV6地址长度为128位,地址空间增大了2的96次方倍。

IPv6网络的提出最初是为了扩大IP地址空间。实际上,IPv4除了在地址空间方面有很大的局限性,成为互联网发展的煨大障碍外,IPv4在服务质量、传送速度、安全性、支持移动性和多播等方面也存在着局限性,这些局限性同样妨碍着互联网的进一步发展。使许多服务与应用难以在互联网上开展。因此.在IPv6的设计过程中,除了一劳永逸地解决了地址短缺问题以外,还考虑了在IPv4中解决不好的其他问题。IPv6相对于IPv4的主要优势是:扩大了地址空间,提高了网络的整体吞吐量,服务质量得到很大改善,安全性有了更好的保证。

述说了环回地址及IPv4和IPv6的基本知识后,接下来继续探究三者之间的关联。

IPv4 的环回地址是保留地址之一 127.0.0.1。尽管只使用 127.0.0.1 这一个地址,但地址 127.0.0.0 到 127.255.255.255 均予以保留。此地址块中的任何地址都将环回到本地主机中。此地址块中的任何地址都绝不会出现在任何网络中。

与 IPv4 一样,IPv6 也提供了特殊环回地址以供测试使用,发送到此地址的数据报会环回到发送设备。不过,IPv6 中用于此功能的地址只有一个,而不是一个地址块。环回地址为 0:0:0:0:0:0:0:1,一般用零的压缩形式表示为“::1”。

接下来,我们通过 WIN+R 快捷键,在弹出的窗口中输入 cmd 回车,打开命令提示符窗口,通过ping命令继续探究。

首先输入 ping localhost,查看返回结果。接着输入 ping 127.0.0.1 查看返回结果,如图所示。

也就是说,默认Win7及以上的系统,都会把localhost解析到::1去。

如果你不想让返回的IP地址为::1,而是传统的127.0.0.1,你只需要把访问地址中的localhost换成127.0.0.1即可,如下图所示。

评论列表

暂时没有相关记录

发表评论

用来接收审核回复提醒,请认真填写

  换一张?
captcha
看不清?点击图片换一张