- 3
- 0
- 约5.99千字
- 约 8页
- 2019-05-13 发布于江西
- 举报
纯真IP数据库格式详解
摘要 网络上的IP数据库以纯真版的最为流行,LumaQQ也采用了纯真版IP数据库做为IP查询功能的基础。不过关于其格式的文档却非常之少,后来终于在网上找到了一份文档,得以了解其内幕,不过那份文档寥寥数语,也是颇为耐心才读明白。在这里我重写一份,以此做为LumaQQ开发者文档的一部分,我想还是必要的。本文详细介绍了纯真IP数据库的格式,并且给出了一些Demo以供参考。
Luma, 清华大学修改日期: 2005/01/14
Note: 在此感谢纯真IP数据库作者金狐和那唯一一份文档的作者。
修改历史:2005-01-14 修改了原来一些表达不清和错误的地方
自从有了IP数据库这种东西,QQ外挂的显示IP功能也随之而生,本人见识颇窄,是否还有其他应用不得而知,不过,IP数据库确实是个不错的东西。如今网络上最流行的IP数据库我想应该是纯真版的(说错了也不要扁我),迄今为止其IP记录条数已经接近30000,对于有些IP甚至能精确到楼层,不亦快哉。2004年4、5月间,正逢LumaQQ破土动工,为了加上这个人人都喜欢,但是好像人人都不知道为什么喜欢的显IP功能,我也采用了纯真版IP数据库,它的优点是记录多,查询速度快,它只用一个文件QQWry.dat就包含了所有记录,方便嵌入到其他程序中,也方便升级。
基本结构
QQWry.dat文件在结构上分为3块:文件头,记录区,索引区。一般我们要查找IP时,先在索引区查找记录偏移,然后再到记录区读出信息。由于记录区的记录是不定长的,所以直接在记录区中搜索是不可能的。由于记录数比较多,如果我们遍历索引区也会是有点慢的,一般来说,我们可以用二分查找法搜索索引区,其速度比遍历索引区快若干数量级。图1是QQWry.dat的文件结构图。
图1. QQWry.dat文件结构
要注意的是,QQWry.dat里面全部采用了little-endian字节序
一. 了解文件头
QQWry.dat的文件头只有8个字节,其结构非常简单,首四个字节是第一条索引的绝对偏移,后四个字节是最后一条索引的绝对偏移。
二. 了解记录区
每条IP记录都由国家和地区名组成,国家地区在这里并不是太确切,因为可能会查出来“清华大学计算机系”之类的,这里清华大学就成了国家名了,所以这个国家地区名和IP数据库制作的时候有关系。所以记录的格式有点像QName,有一个全局部分和局部部分组成,我们这里还是沿用国家名和地区名的说法。
于是我们想象着一条记录的格式应该是: [IP地址][国家名][地区名],当然,这个没有什么问题,但是这只是最简单的情况。很显然,国家名和地区名可能会有很多的重复,如果每条记录都保存一个完整的名称拷贝是非常不理想的,所以我们就需要重定向以节省空间。所以为了得到一个国家名或者地区名,我们就有了两个可能:第一就是直接的字符串表示的国家名,第二就是一个4字节的结构,第一个字节表明了重定向的模式,后面3个字节是国家名或者地区名的实际偏移位置。对于国家名来说,情况还可能更复杂些,因为这样的重定向最多可能有两次。
那么什么是重定向模式?根据上面所说,一条记录的格式是[IP地址][国家记录][地区记录],如果国家记录是重定向的话,那么地区记录是有可能没有的,于是就有了两种情况,我管他叫做模式1和模式2。我们对这些格式的情况举图说明:
图2. IP记录的最简单形式
图2表示了最简单的IP记录格式,我想没有什么可以解释的
图3. 重定向模式1
图3演示了重定向模式1的情况。我们看到在模式1的情况下,地区记录也跟着国家记录走了,在IP地址之后只剩下了国家记录的4字节,后面3个字节构成了一个指针,指向了实际的国家名,然后又跟着地址名。模式1的标识字节是0x01。
图4. 重定向模式2
图4演示了重定向模式2的情况。我们看到了在模式2的情况下(其标识字节是0x02),地区记录没有跟着国家记录走,因此在国家记录之后4个字节之后还是有地区记录。我想你已经明白了模式1和模式2的区别,即:模式1的国家记录后面不会再有地区记录,模式2的国家记录后会有地区记录。下面我们来看一下更复杂的情况。
图5. 混和情况1
图5演示了当国家记录为模式1的时候可能出现的更复杂情况,在这种情况下,重定向指向的位置仍然是个重定向,不过第二次重定向为模式2。大家不用担心,没有模式3了,这个重定向也最多只有两次,并且如果发生了第二次重定向,则其一定为模式2,而且这种情况只会发生在国家记录上,对于地区记录,模式1和模式2是一样的,地区记录也不会发生2次重定向。不过,这个图还可以更复杂,如图7:
图6. 混和情况2
图6是模式1下最复杂的混和情况,不过我想应该也很好理解,只不过地区记录也来重定向而已,有一点我要提醒你,如果重定向的
您可能关注的文档
- 成都别墅市场报告专题研究分析.ppt
- 成都城南写字楼汇总 .ppt
- 成功销售与客户催眠培训.doc
- 成品出入库管理办法.doc
- 成长期企业人力资源数量需求预测研究.doc
- 诚信模网科技有限公司设备租赁报价.doc
- 诚信在你我身边主题班会课件.ppt
- 承包商HSE管理的现状与困惑及主要工作.doc
- 承包商在石化项目施工中的风险管理.docx
- 承插型盘扣式支模架专项方案-.docx
- GB/T 9706.266-2025医用电气设备 第2-66部分:助听器及助听器系统的基本安全和基本性能专用要求.pdf
- 中国国家标准 GB/T 9706.266-2025医用电气设备 第2-66部分:助听器及助听器系统的基本安全和基本性能专用要求.pdf
- GB/T 21715.2-2025健康信息学 患者健康卡数据 第2部分:通用对象.pdf
- 中国国家标准 GB/T 21715.2-2025健康信息学 患者健康卡数据 第2部分:通用对象.pdf
- 《GB/T 21715.2-2025健康信息学 患者健康卡数据 第2部分:通用对象》.pdf
- 《GB/T 31455.6-2025快速公交(BRT)智能系统 第6部分:调度中心与场站站台控制系统通信数据接口规范》.pdf
- GB/T 31455.6-2025快速公交(BRT)智能系统 第6部分:调度中心与场站站台控制系统通信数据接口规范.pdf
- 中国国家标准 GB/T 31455.6-2025快速公交(BRT)智能系统 第6部分:调度中心与场站站台控制系统通信数据接口规范.pdf
- 中国国家标准 GB 24407-2025专用校车安全技术条件.pdf
- GB 24407-2025专用校车安全技术条件.pdf
最近下载
- 心理健康六年级《小学生心理健康素养提升:情绪管理与人际交往》教学设计.docx VIP
- 【管理咨询宝藏58】某大型央企地产员工敬业度分析报告.pdf
- 2024公路工程养护施工安全管理技术规范.pdf VIP
- 信息可视化设计 课件 4.1时间信息可视化定义.pptx
- 儿科抢救流程图.docx
- 《全国建筑设计行业收费标准》的通知.pdf VIP
- OTIS奥的斯XIOTIS西子奥的斯GEN2_Comfort_New电梯调试培训_电气.pptx VIP
- 地铁车站设计.docx VIP
- 宝可梦 Let's Go!皮卡丘1.02版switch大气层系统游戏修改代码.docx VIP
- 2026年全年党建工作计划.docx VIP
原创力文档

文档评论(0)