如何查询一个公网的ip(估算了一下公网IP地址的数量)
如何查询一个公网的ip(估算了一下公网IP地址的数量)
2024-06-25 05:10:32  作者:假装嚣张  网址:https://m.xinb2b.cn/tech/sah135374.html

我们知道,每次拔号上网运营商会给你分配一个IP地址,通常每次都不一样。 我记录了355 次拔号得到的IP地址。其中:

237 个地址是各出现了(仅)1次的;50 个地址是各出现了(仅)2次的;6 个地址是各出现了(仅)3次的。

因为公网IP是稀缺资源,于是就想琢磨一下我这里运营商的IP地址池到底有多大。根据这些数据能否估算出地址池的大小N呢?

如何查询一个公网的ip(估算了一下公网IP地址的数量)(1)

题图

1) 简单的数学模型

上面的实验中总共得到了293 (237 50 6)个IP地址,反过来,未被选中的地址是 N - 293个。 于是可知:

经过355次拔号,某一特定地址不被选中的概率是 (N - 293)/N;另一方面,仅拔号一次,某一特定的地址不被选中的概率是 (N - 1) / N。

于是我们可以得到下面的方程,并在Mathematica里求数值解(注意要限定实数域,否则会得到很多复数解)。

如何查询一个公网的ip(估算了一下公网IP地址的数量)(2)

图:简单模型的方程及其解

显然 N > 293,于是有意义的解是 891.992。这是一个类似于平均值(数学期望)的数。 我们可以说,N在892附近。至于有多近,现在还不清楚,N可能是800,也可能是1000。

不过,这个模型里没有用到[237, 50, 6]这个1,2,3次的分布。这样做对吗?

2) 简单的模拟实验

我准备用Python模拟一下,用到下面一些package。

import randomimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom multiprocessing import Pool

numpy里有一些现成的函数,用很短的代码就可以完成模拟;pandas用来画图,最后为了提升速度会用到多进程。代码在Jupyter Notebook里运行。

如何查询一个公网的ip(估算了一下公网IP地址的数量)(3)

图:简单的模拟实验

一次实验的代码其实只有一行,流程是:

生成355个0~n之间的随机数;统计每个数出现的频次;统计每个频次出现的频次(即出现了0, 1, 2, 3... 次的数有多少个),其中出现0次的数目是不需要的。

把实验得到的频次和目标频次进行比较,相等就把计数加1. 对于每个n值,试验10000次,看看有多少命中的。

可以看到峰值确实是在900附近,大约是0.6%的命中率。也就是说,对于N在900附近时,从中取355次地址,大约有0.6%的可能会出现[237, 50, 6]这样的分布。

尽管这个值很低,但我们要看相对的高低,在900附近,是最有可能出现这个分布的。

3) 程序的改进

前面的代码里可能会匹配到[237, 50, 6, 2](即还有2个地址各出现了4次)这样的分布,所以严谨一点,我们可以把匹配目标设为[237, 50, 6, 0, 0, 0]。再长也没有必要了,因为高频次的数量降低是很快的。

把程序改为多进程模式的。4核8线程的CPU把Pool大小设为8,实测CPU占用率能达到100%(而之前确实是1/8左右的占用率)。把每一个N值的模拟次数增加到2千万,这样可以得到较为平滑的曲线。

如何查询一个公网的ip(估算了一下公网IP地址的数量)(4)

图:改进的模拟程序

这时可以得到最大概率对应的N值是891, 和简单的数学模型非常一致。

4) 概率公式和概率积分

根据“不尽相异元素的全排列”可以推出,出现[237, 50, 6]这个结果的概率p[n],和n的关系,如下图。 用这个结果画出的曲线(图略)和模拟的完全一致,但速度快得多,而且是完全平滑的。

直接把这个概率“积分”(严格讲是累加),得到的结果是1.6. 为什么不是1呢?

因为这个概率p(n)表示的是对于某一个n,出现[237, 50, 6]这个结果的概率(它的反面是出现其它频次的概率);而我们需要的概率q(n)是指,[237, 50, 6]这个结果的对应的N,100%会落在比如说293~10000之间,那么它落在n的概率是多大呢?

让我们假定这两个概率是正相关的,这样把p(n)的积分归一化,就可以得到q(n)。于是我们用概率公式得到下面归一化的积分曲线。

如何查询一个公网的ip(估算了一下公网IP地址的数量)(5)

图:概率公式和概率积分

从图中可以估算出,N 98%的可能会落在700~1200之间。曲线的陡峭程度反映了N的集中程度(如果取样次数比355次更多,结果应该会更集中)。

5) 伯努利试验和二项分布

其实这个问题是概率论中的一类典型问题,可以和伯努利试验及二项分布对应上。

在每次拔号中,选中某一地址为成功,否则为失败。m次拔号中,某个地址被选中k次的分布符合二项分布 b(k, m, p),其中p是被选中的概率(对于大小为n的地址池,p为1/n)。

于是,m次拔号中,被选中k次的地址的总数的期望值为:b(k, m, p) * n。具体如下图所示:

如何查询一个公网的ip(估算了一下公网IP地址的数量)(6)

图:基于二项分布的计算

上图中给出了出现1~5次的地址总数随地址池大小n的分布。下图则给出了目标频次[237, 50, 6]附近( /-10%)所对应的n值。比如,当n取值700~1150时,最有可能出现237个1次地址。因为图中是期望值,所以并不意味着在这个范围之外不会出现237个1次地址,只是图中区域是概率最高的部分。这也可以理解,为什么根据3个条件得出的范围并不是严格一致。

如何查询一个公网的ip(估算了一下公网IP地址的数量)(7)

图:基于二项分布的结果

6) 结语

本文对“我这里”的公网IP地址的数量这一蛋疼的问题,从数学上进行了推演,从程序上进行了模拟。数学简洁但高深,模拟笨拙但直观。殊途同归,两者得出了基本一致的结果。

本题可以作为码农编程的一个小练习,比如有人用了PHP语言,因为它有高精度的数值计算;有人用了R语言,因为它有现成的统计函数;继续的改进甚至可以考虑使用GPU提升模拟速度。

至于“我这里”是多大的范围,根据公里级的IP地理信息应该可以推测出来。这不是本文的重点。

本题在讨论过程中,得到了色影无忌众多网友的见解,@siliconworm, @TakeThat05, @rks, @pipedream,特此致谢。

  • 安慰一个人的正确方法(最有效的6种安慰方式)
  • 2024-06-25最有效的6种安慰方式当你看到朋友伤心难过的时候,却只能在一旁措手无撤,不知道说些什么话安慰对方?其实并不需要花言巧语,陪伴才是最温暖的安慰来,看看安慰的误区你有没有踩雷?一.安慰的误区1.比惨型虽然是出于好心,但不一定能。
  • 舟山群岛有多少小岛组成(舟山群岛怎么形成)
  • 2024-06-25舟山群岛怎么形成前世的五百次回眸才能换来今生的一次擦肩而过前世的一千次回眸才能换来今生的一次相视而笑三生三世,十里舟山岛▼舟山被誉为“千岛之城”,海岛特有的景致赋予了这里无穷的迷人魅力,蓝天、碧海、金沙、白浪营造了不。
  • 鞠婧祎傣族同款造型(鞠婧祎的傣妹风穿)
  • 2024-06-25鞠婧祎的傣妹风穿“五十六个民族,五十六枝花”高圆圆出席《五月的秘密》首映礼,影片聚焦彝族凉山女性的成长故事,她很应景地穿上了以彝族为灵感来源设计的百褶半裙半裙:MO&Co.民族服饰作为灵感来源出现在现代服装设。
  • 什么东西可以美容吃什么的(各自的功效是什么)
  • 2024-06-25各自的功效是什么西兰花,西兰花富含抗氧化维生素C及胡萝卜素,专家证明是最好的抗衰老和抗癌食物,能增强皮肤抗操作能力,有助于保持皮肤弹性海带,众所周知皮肤的油脂分泌不平衡,或是油脂分泌过多都会引起痘痘,因此平时就要多吃。
  • 乱世王者加号什么意思(乱世王者加号解释)
  • 2024-06-25乱世王者加号解释当玩家们的主城上出现灰色加号的时候,就代表有人对你进行了攻击,玩家们需要进行反击操作想要消除这个灰色加号,找盟主进反击界面,把包含你的这一条删了就行《乱世王者》是由腾讯旗下天美工作室群自主研发的一款战。
  • 黄杨如何培养枝条长粗(如何让黄杨快速长粗)
  • 2024-06-25如何让黄杨快速长粗#头条创作挑战赛#要想让黄杨快速长粗,要将其种植在疏松透气,松软且富含有机质的土壤中保证环境温暖舒适,光照明亮,促进光合作用的旺盛进行日常抑制侧枝的生长,使养分集中供应给侧枝和主干上保证每次浇水浇透,。
  • 有哪些简单的有寓意的微信名
  • 2024-06-25有哪些简单的有寓意的微信名有寓意的微信名:氶悛,醋茶淡饭,枫顼夜雨,海纳百川,一粒微尘,娟娟细雨,大漠孤烟,若冰不爱霜,醉美心情,一叶知秋,奈何岁月,仰望星空,旧约奇迹,心灵后花园,节后鱼生,七月半的月亮,暖光温心,琴心似海,。
  • 张真晓莲是什么电视剧(快来这里看答案了)
  • 2024-06-25快来这里看答案了《天师钟馗》是浙江华策影视股份有限公司出品的一部古装神话情感剧,由欧阳震华领衔主演,刘红雨、李立、霍思燕、冯绍峰、郭珍霓、周一围联合主演,茹萍、薛淑杰友情出演《天师钟馗》之《人鱼痴恋》讲述了昔日鲤鱼精。
  • 金戈白云山效果怎么样(白云山金戈效果到底怎么样)
  • 2024-06-25白云山金戈效果到底怎么样人前风光无限,背后黯然神伤用这句话形容小海现在的境遇再合适不过了小海夫妇俩一个是企业高管,一个是海归教师两人工作稳定,收入颇丰,有车有房,生活仿佛一帆风顺,令人欣羡不已事实上,一个难言之隐困扰了小海半。
  • 年轻人怎么看待卡点(对于卡点上下班)
  • 2024-06-25对于卡点上下班你就是那名“卡点上下班的员工”,我们暂且称呼你为小卡这是一个正常的周三,你左手端着一杯豆浆,右手捏着手机,嘴里叼着半个包子,好不容易挤出电梯,稳当地在最后一分钟打上了卡你美滋滋啃着包子,不紧不慢地走过。
  • 吸了好几年的毒品能自己戒掉吗(吸冰毒吸到走路都)
  • 2024-06-25吸冰毒吸到走路都你是否以为只有老年人才会行动迟缓呢?行动迟缓通常发生在一些年迈者身上,多半是因为老人慢性脑血管狭窄,造成堵塞,导致脑组织缺血、萎缩导致的,但是别忘了吸冰毒造成的脑损伤的患者也会出现行动迟缓的哦!冰毒在。