中国大陆IP过滤器-Java实现

举报
谙忆 发表于 2021/05/27 17:30:47 2021/05/27
【摘要】 原文地址: https://copyfuture.com/blogs-details/201912080042520285sdvdbajzqwolso 概述 本篇讲解如何快速判断IPV4地址是否在大陆境内的IP地址。 中国IPV4的地址现在大约是3亿4千万个。 github仓库地址,源码和ip地址都在里面。 https://github.com/chenhaox...

原文地址:
https://copyfuture.com/blogs-details/201912080042520285sdvdbajzqwolso

概述

本篇讲解如何快速判断IPV4地址是否在大陆境内的IP地址。

中国IPV4的地址现在大约是3亿4千万个。

github仓库地址,源码和ip地址都在里面。
https://github.com/chenhaoxiang/china-ip-filter

目前最新是2019年11月30日,境内所有ip范围。

后面会持续更新和维护

欢迎大伙star

方法一

最简单方法,消耗大量内存,土豪方法。

在内存中将3亿4千万IP全部存储到Set中。

如果按照32个字节一个IP来算,大约需要10G左右。

这种方法就不进行介绍了。

方法二

将IP进行拆分为4段。a、b、c、d段

分段进行匹配,相较于方法一可以节省3/4的空间,但是需要的内存还是很大。

按照树形结构进行存储,a匹配才进行b的匹配,b匹配再进行c的匹配,依次匹配

只有abcd段完全匹配才说明IP在集合中

方法三

通过CIDR格式表示的IPV4地址范围进行处理

CIDR及地址块计算
IP地址表示法:
IP地址 ::&

文章来源: chenhx.blog.csdn.net,作者:谙忆,版权归原作者所有,如需转载,请联系作者。

原文链接:chenhx.blog.csdn.net/article/details/103441363

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。