2017-02-18 30 views
0

我的IP地址存储在MySQL数据库中,而且我正在学习运行查询,我以前想过的是查看是否可以找到共享公用网络的条目。为此,我通过从IPv4中移除最后一组号码来“拓宽”我的搜索范围。如何“拓宽”IPv6到网络级别?

因此,我会做一个LIKE搜索IP为XXX.XX.XXX.,看看会发生什么。

我有两个问题:

  1. 是我在做什么傻?比如,是否修整了最后一组,甚至实现了我认为我在做的事情?
  2. 如果不是,我将如何“扩大”搜索IPv6?

我对IPv6的分组做了一些研究,但恐怕我还不了解每个分组的作用。无可否认,我对IPv4甚至IPv4的解剖结构只有粗略的了解。

同样,这不是一个真正的严重问题,但我找不到任何关于这样的信息(这导致我相信我甚至可能不会做我认为我正在做的事)。 ..

回答

1

是我在做什么愚蠢的?比如,是否修整了最后一组,甚至实现了我认为我在做的事情?

要回答第一个问题,需要对“共享公共网络”意味着什么定义。毕竟,互联网本身就是一个“通用网络”,它被连接到它的每个设备“共享”!

网络工程师倾向于使用“域名”进行交谈:collision domains,broadcast domains,administrative domains等。猜测,您可能正在考虑管理域。

对于a short time in history,分配了一个IP地址空间块(称为“C类”地址),使得前三个八比特组指示网络号,因此“修剪”最后的八位字节(对于该块的IP地址空间)的行为与您所描述的完全相同。

但是,自从引入CIDR后,它不再像这样工作:现在可以在任何(2指数)大小的块中分配地址,并且无法单独从地址确定分配块的大小。此外,块可以重复细分和重新分配。

TL; DR--目前尚不清楚您认为自己在做什么,但在任何情况下修剪掉最后一组可能都无法实现。

现在,如果你只是想确定一个给定的地址是否是网络,你可以通过执行按位与它和网络掩码这样做;然后将结果与您的地址的网络掩码按位与进行比较。

除此之外,您需要查找外部数据集中地址的属性...