免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6779 | 回复: 7
打印 上一主题 下一主题

[数值计算] 遍历出中国大陆所有的IP地址 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-02-13 10:11 |只看该作者 |倒序浏览
本帖最后由 rdcwayx 于 2014-02-13 11:23 编辑

本人想遍历出中国所有的IP地址,根据网上的资料显示,中国大陆现在目前约有3.3亿个IP地址,在负责分发中国IP地址的机构网站上面
APNIC   http://ftp.apnic.net/stats/apnic/delegated-apnic-latest  该页面有当前 APINC负责的ip地址范围的分发情况,
晚上看到别人的算法,算下来也是3.3亿个ip地址,算法如下:

  1. wget http://ftp.apnic.net/stats/apnic/delegated-apnic-latest
  2. (cat delegated-apnic-latest | grep  -i 'CN|ipv4' |cut -f 5 -d'|' | tr '\n' '+';echo 0) | bc
复制代码
但是本人用脚本生成的时候只生成了1.2亿个IP地址,本人的想法如下,把所有中国的IP地址的前两段打印出来,全部认为是B类地址(其实好多都是C类或者更小),这样打印出来范围应该是超过了中国的IP地址,但是实际只生成了1.2亿个IP地址,不知道我哪里考虑不周,还请高人指点,下面是脚本:
  1. cat delegated-apnic-latest | grep 'CN' |grep 'ipv4' | awk -F"|" '{print $4}' | awk -F"." '{print $1"."$2}' | sort | uniq > ip1.txt
  2. cat ip1.txt | while read line
  3. do
  4.    seq 0 255 | while read line1
  5.    do
  6.       #echo $line"."$line1
  7.       seq  254 | while read line2
  8.       do
  9.           echo $line"."$line1"."$line2  >> ips.txt
  10.       done
  11.    done
  12. done
复制代码

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
2 [报告]
发表于 2014-02-13 11:17 |只看该作者
本帖最后由 rdcwayx 于 2014-02-13 11:23 编辑

你的计算方法有误,比如这一行
  1. apnic|CN|ipv4|1.24.0.0|524288|20100505|allocated
复制代码
应该有524288个地址,但是按照你的计算,只有 256 X 254 = 65024 个地址。

每个网段的IP数量都是不一样的,但是你的计算方法是全一样,都是65024个地址

论坛徽章:
0
3 [报告]
发表于 2014-02-13 18:03 |只看该作者
我不明白您说的那个是如何算出来的,麻烦指点迷津

论坛徽章:
0
4 [报告]
发表于 2014-02-13 18:05 |只看该作者
回复 2# rdcwayx

我不明白您说的524288这个是如何算出来的,还请指点迷津
   

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
5 [报告]
发表于 2014-02-13 18:12 |只看该作者
你自己给的命令里,取第五列做总和计算,得到3亿多。那么所有第五段的数字就是该网段的总IP数。
  1. cat delegated-apnic-latest | grep  -i 'CN|ipv4' |cut -f 5 -d'|'
复制代码
后面的tr + bc 就是计算总和的。

论坛徽章:
0
6 [报告]
发表于 2014-02-13 19:10 |只看该作者
回复 5# rdcwayx
上面这个是我引用别人的算法,我也不知道这个是从哪里来的

   

论坛徽章:
29
程序设计版块每日发帖之星
日期:2016-02-29 06:20:0015-16赛季CBA联赛之天津
日期:2016-08-10 10:33:1115-16赛季CBA联赛之深圳
日期:2016-08-17 15:07:2015-16赛季CBA联赛之佛山
日期:2016-11-07 11:33:5015-16赛季CBA联赛之广夏
日期:2016-11-15 09:13:31CU十四周年纪念徽章
日期:2016-11-24 14:12:25极客徽章
日期:2016-12-07 14:03:4015-16赛季CBA联赛之深圳
日期:2016-12-07 17:15:2715-16赛季CBA联赛之北京
日期:2016-12-22 09:30:0115-16赛季CBA联赛之深圳
日期:2016-12-22 10:49:2115-16赛季CBA联赛之山西
日期:2017-02-10 09:05:3215-16赛季CBA联赛之同曦
日期:2017-02-27 14:19:08
7 [报告]
发表于 2014-02-13 22:05 |只看该作者
这块东西比较薄弱啊,学习ing

论坛徽章:
0
8 [报告]
发表于 2014-02-13 23:26 |只看该作者
回复 2# rdcwayx
根据你的提醒我查看了一下,你说的是对的,后面的确实是真是IP地址,是我少算了好多B类的地址,按照你举例的这个1.24.0.0   这个地址应该是A类和B类之间的一个地址
我查了一下1.25.0.0,也是中国的IP地址,我根据第五段的大小在生成一次 ,要是第五段超过我算出来的值,我就把后面的也打印出来,ip地址的D段我是没有要0和255,所以到时候会少一点点。
谢谢牛人的提醒

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP