ip地址是ip协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。ip协议是为计算机网络相互连接进行通信而设计的协议。因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。
任何厂家生产的计算机系统,只要遵守ip协议就可以与因特网互连互通。各个厂家生产的网络系统和设备,如以太网、分组交换网等,它们相互之间不能互通,不能互通的主要原因是因为它们所传送数据的基本单元(技术上称之为“帧”)的格式不同。 ip协议实际上是一套由软件程序组成的协议软件,它把各种不同“帧”统一转换成“ip数据报”格式。在实际应用场景中,会针对不同来源的ip地址建立与来源对应的ip地址定位数据库,各ip地址定位数据库相互独立,例如,ipip库、4g基站ip库、idc库等。通过解析这些ip地址可以到物理地址,
ip地址定位数据获取解析方法如图:
编辑
想更精准查询IP地址,可以通过 ,这样数据精准可到街道级别。
thinkphp IP 获取和定位
系统内置了 get_client_ip
方法用于获取客户端的 IP 地址,使用示例:
-
$ip = get_client_ip();
如果要支持 IP 定位功能,需要使用扩展类库 Org\Net\IpLocation
,并且要配合 IP 地址库文件一起使用,例如:
-
$Ip = new \Org\Net\IpLocation('UTFWry.dat'); // 实例化类 参数表示IP地址库文件
-
$area = $Ip->getlocation('203.34.5.66'); // 获取某个IP地址所在的位置
如果传入的参数为空,则会自动获取当前的客户端 IP 地址,要正确输出位置,必须配合 UTF8 编码的 ip 地址库文件,否则可能还需要进行编码转换。