qqwry.dat的数据结构图文解释第1/2页
输入:IP地址———>输出:这个IP地址所在的国家,地名,有时甚至能精细到楼层。
网络上的IP数据库以纯真版的最为流行,LumaQQ也采用了纯真版IP数据库做为IP查询功能的基础。不过关于其格式的文档却非常之少,后来终于在网上找到了几份文档,才知道其内幕,现在将我对Qqwry.dat的数据结构的理解展现出来。让更多人明白它的内幕。
详解解构:
1. qq.dat的数据存储格式:
1.1三大块:
文件头;
记录区;
索引区;
如图:
1.2详细解释三大块:
1.2.1第一块:文件头
文件头是8个字节长度,前四个字节存储了第一条索引的绝对地址,后四个字节存储了最后一条索引的绝对地址。
格式如图:
1.2.2第二块:索引区:
索引区格式如下图:
先说一下IP地址的起始IP和结束IP。例如:中国,美国,英国每个国家都分配有不同的IP段,IP段就是由起始IP和结束IP组成,从起始IP到结束IP内的所有IP就组成了我们所说的IP段。比如:
010.018.132.000 010.018.132.255 [河北][承德169用户]
010.018.160.000 010.018.255.255 [河北][唐山]
再来说一下索引区的存储结构,它存储了很多条索引,每条索引的格式为7个字节,前四个字节表示的是一个IP段的起始字节,后三个字节是链接到以这个起始IP开始的IP段内的所有IP记录的地址,也就是说它是一个绝对地址,用于到链接到记录区查询国家,地区的数据。
1.2.3第三块:记录区:
记录区的数据格式不定,数据主要有以下类型:
A:结束IP
B:国家记录 (以0x 00结束 )
C: 地区记录 (以0x 00结束 )
D:标识字符:
E:绝对偏移量
以上是我参考了网上各位大虾的解释后,根据自己的了解和感受,把这个问题再详细的解释一次,希望能给大家帮助。
附:本文图片是参考的
当前1/2页 12下一页阅读全文
相关推荐
-
qqwry.dat的数据结构图文解释第1/2页
输入:IP地址--->输出:这个IP地址所在的国家,地名,有时甚至能精细到楼层. 网络上的IP数据库以纯真版的最为流行,LumaQQ也采用了纯真版IP数据库做为IP查询功能的基础.不过关于其格式的文档却非常之少,后来终于在网上找到了几份文档,才知道其内幕,现在将我对Qqwry.dat的数据结构的理解展现出来.让更多人明白它的内幕. 详解解构: 1. qq.dat的数据存储格式: 1.1三大块: 文件头: 记录区: 索引区: 如图: 1.2详细解释三大块: 1.2.1第一块:文件头
-
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
如下所示: <?php $data = '254.254.254.254'; echo ip2long($data); function getIP() { if(getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) $ip = getenv("HTTP_CLIENT_IP"); elseif(getenv
-
php读取qqwry.dat ip地址定位文件的类实例代码
实例如下: <?php // +---------------------------------------------------------------------- // | // +---------------------------------------------------------------------- // | // +---------------------------------------------------------------------- cla
-
C#读取QQ纯真IP数据库QQWry.Dat的代码
纯真版QQ IP数据库 复制代码 代码如下: using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Web; using System.Configuration; namespace BLL { public class IPLocationSearch { private static readonly QQWry qq = new QQWry(Conf
-
快速将珊瑚虫IP数据库转MS SQL2005的图文教程第1/2页
首先需要准备: 最新的珊瑚虫IP数据库 http://update.cz88.net/soft/qqwry.rar Microsoft Office Access 2003 EiditPlus MS SQL2005 1.然后打开珊瑚虫IP数据库自带的 ShowIP.exe,选择解压,另存一个TXT文件: 2.用EiditPlus打开这个文本拖动到最后几行,删除多余的东西(千万别试图用默认的文本编辑器打开,内存小的话你会死的很惨): 3.打开Access(为什么不直接到SQL里面导入数据呢?因为会
-
多种型号的ADSL路由设置方法图文教程第1/2页
中兴831adsl modem 如何设置831: 先要把831的内置软件刷到2.79版本,可www.zte.com.cn下载(如何刷在说明里面) 831出厂设置的以太网口IP地址是192.168.1.1,为了能用telnet访问到831,我们现在先把一台电脑的地址设置为192.168.1.*, 使用ping 192.168.1.1 看看能不能访问到831,没问题的话继续,在DOS模式下打入telnet 192.168.1.1,如果你刚刷好软件,是有密码的,原厂密码是adsl831接着我们
-
Discuz!5.0升级Discuz5.5的图文教程第1/2页
Discuz!5.5 正式版即将发布,相信大家很想把自己的 Discuz!5.0 论坛升级为 Discuz!5.5 ,下面我就为大家详细讲解一下 Discuz!5.0=>Discuz!5.5 的升级过程. 下面按三个部分为大家讲解: (一)升级前的准备 1.下载正式版 Discuz!5.5 到本地或服务器上,如图 1 所示: 1.jpg (38.71 KB) 2007-3-9 10:06 注:这里需要注意下载跟您原来的论坛一样字符集的版本,比如您原来用的是 GBK版的Discuz!5.0
-
二十分钟 教你Ruby快速入门 图文教程第1/4页
突然发现,ruby也不错,我有点打算想学下了介绍 这是一个短小的Ruby入门,完全读完只需20分钟.这里假设读者已经安装了Ruby,如果你没有安装的话,请在阅读文前访问Ruby官方网站进行下载并安装. 交互式的Ruby 打开IRB(交互式Ruby外壳): 如果你使用Mac OS X,那么请打开终端窗口输入irb: 如果你使用Linux,那么请打开shell输入irb: 如果你使用windows,那么请在开始菜单中找到Ruby->fxri,并执行它. Ok,在打开IRB之后,在其中输入"He
-
攻克CakePHP(PHP中的Ruby On Rails框架)图文介绍第1/2页
CakePHP框架首页: http://www.cakephp.org/ 下载后导入工程中,目录结构如下图(使用版本:1.1.19.6305) 搭建PHP环境,这里使用了AppServ2.5.9. 下载主页 http://www.appservnetwork.com/ MySQL中新建数据库blog,并运行如下SQL文建表. /**//* First, create our posts table: */CREATE TABLE posts ( id INT UNSIGNED AUTO_I
-
手把手教你组装电脑的图文教程第1/2页
应该没有人一开始就什么都会,每个人都有刚入门的时候,自己组装电脑其实是蛮有趣的事情,尤其是组装的过程,把一些零组件组合在一起, 插电后等待开机B一声时的感动.记得15年前为了是玩游戏不用一直换软碟片, 第一次买的零组件是一颗20MB的Seagate硬碟,边摸边看书,也莫名的装好且格式化,看着吞食天地在换地图时没有一点儿停顿, 差点没感动到眼泪掉下来,也开始了硬体DIY的不归路. 可能只是比较主观的看法,DIY市场似乎有越来越走弱的感觉, 大者恒大一线大厂不断以价格战打压二.三线,集中商圈好象也没
随机推荐
- python实现udp数据报传输的方法
- Function.prototype.call.apply结合用法分析示例
- iOS开发中不合法的网络请求地址如何解决
- linux 查看磁盘空间大小命令
- Cookies的各方面知识(基础/高级)深度了解
- JavaScript快速排序
- C#使用jQuery实现无刷新评论提交的方法
- C++简单集合类的实现方法
- C#实现让窗体获得焦点的方法示例
- 深入理解PHP变量的值类型和引用类型
- PHP将字符串首字母大小写转换的实例
- js 增强型title信息提示效果
- js控制href内容的连接内容的变化示例
- $.get获取一个文件的内容示例代码
- C++ 算法之希尔排序详解及实例
- 实例详解Android自定义ProgressDialog进度条对话框的实现
- Android对话框AlertDialog.Builder使用方法详解
- Android中退出确认框的实现代码
- Docker使用Swarm组建集群的方法
- Linux下redis的持久化、主从同步与哨兵详解