问题标签 [cidr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
8755 浏览

c# - 如何在 C# 中比较 IP 地址范围?

如果我有一个 IP 地址范围(CIDR 表示法)并且我需要知道某个任意 IP 地址是否在该范围内——两者都以字符串形式显示——用 C# 执行此操作的最简单方法是什么?

例子:

  • IPv4 范围:192.168.168.100/24,要检查的 IP:192.168.168.200
  • IPv6 范围:fe80::202:b3ff:fe1e:8329/24,要检查的 IP:2001:db8::
0 投票
3 回答
174035 浏览

facebook - Facebook使用的IP空间列表

我正在寻找 Facebook 使用的 IP 空间的权威列表。我需要它来支持一个锁定的开发人员环境,该环境对出站连接有非常严格的限制。

今天我发现 api 和 graph.facebook.com 开始解析为 69.171.224.0/19,这以前不在我的过滤器中。我已经更新了它,但我想知道我缺少哪些其他 IP 空间允许规则。

这是我目前所拥有的。您可以列出的任何其他 IP 块都会很棒。谢谢大家。

0 投票
1 回答
1706 浏览

postgresql - 由于 IPV6 需要 128 位(16 字节),那么为什么在 postgres CIDR 数据类型中存储为 24 字节(8.1)和 19 字节(9.1)?

我正在使用 ipv4 和 ipv6 存储在 postgres db 中。

因为 ipv4 需要 32 位(4 字节)而 ipv6 需要 128(16 字节)位。那么为什么在 postgres CIDR 和 INET 数据类型中,IPV4 和 IPV6(8.1)分别存储为 12 字节和 24 字节。

对于 9.1,IPV4 和 IPV6 分别有 7 个字节和 19 个字节。

我不明白为什么它需要超过 16 个字节来存储 IPV6 和 4 个字节来存储 IPV4?

http://www.postgresql.org/docs/8.1/static/datatype-net-types.html

http://www.postgresql.org/docs/9.1/interactive/datatype-net-types.html

0 投票
5 回答
2163 浏览

php - CIDR 位运算 - 我可以更聪明一点吗?

我正在构建一个类来表示 IPv4 子网。我将网络地址和子网掩码存储为 4 字节二进制字符串,它们是在构造函数期间根据参数构建的。我希望构造函数接受的一种表示是CIDR notation

我的按位运算有点生疏,我遇到的问题是将子网掩码的十进制整数 CIDR 表示形式转换为 4 字节二进制字符串,反之亦然。我还发现我无法在字符串上执行左/右移位 - 我确定我之前已经成功完成了吗?


我设法将转换为二进制字符串以使用以下代码:

我不喜欢这个逻辑有两个原因:

  • 我不喜欢0当作特例
  • 我不喜欢右移后左移

我确信有一种方法可以更有效地做到这一点,并且可以0正确处理而不将其视为特殊情况。


将二进制字符串转换回 CIDR 前缀大小的十进制表示时,我目前正在使用下面的代码。在验证以其他格式提供的子网掩码以确保设置位是连续的时,我有另一个非常相似的代码块。

由于循环,我不喜欢这个 - 我确信有一种更智能的按位方式来做到这一点。


有没有更智能的方法来完成这些任务?

想法/建议/一般滥用请...


编辑:

任何解决方案都需要在 PHP 4.3.10 及更高版本上运行,并且必须在 32 位和 64 位平台上运行。请记住,PHP 中的所有整数都是有符号的,并且在 32 位平台上,任何东西>= 0x80000000都将存储为双精度数(因此不能很好地使用按位运算)。

0 投票
3 回答
6537 浏览

c++ - 如何使用 Qt 确定我的互联网 IP 是否属于给定的 IP 列表

我在 TXT 文件中存储了以下 IP 列表(CIDR 格式):<

但是我不知道如何确定我的IP是否属于这个列表。我在 Windows 平台上使用 Qt C++ 框架。

0 投票
2 回答
798 浏览

java - 将通配符子网转换为最小的 cidr 子网列表

我需要将通配符子网转换为最小的 cidr 子网列表。例如:

上面的例子很简单,但对于像 1.2.3.4/252.0.128.0 这样的通配符子网,它更复杂。

Java中是否有一个库。

提前致谢。

0 投票
3 回答
2152 浏览

java - 将ip数组转换为java中最小的cidr子网列表

我有一个如下所示的 ip 数组,我想将其转换为最小的 cidr 子网列表。Java中是否有用于该库的库?

例如:

转换成

提前致谢。

0 投票
1 回答
2372 浏览

ruby - NetAddr::Tree 获取 CIDR 列表并合并它们?

我正在使用 Ruby NetAddr::Tree 类来保存一堆 CIDR 对象,但我需要一种方法来将 CIDR 对象压缩到更大的子网中。

我想要一种获取 IP 的方法,例如:

并合并树中的相关地址范围,以便输出如下:

我查看了文档,但找不到任何方法来做到这一点。如果需要,我很高兴不再使用 NEtAddr::Tree,重要的是它需要一个 IP/网络掩码字符串列表,将它们合并并逐行输出。

0 投票
4 回答
7493 浏览

ruby-on-rails - Ruby/Rails 中的 IP 范围到 CIDR?

我想做两件事:将 IP 地址输入转换为 CIDR 以下是一些示例输入:

检查给定的 IP 地址是否属于任何 CIDR。这一定是一个非常快速的查询,因为它是我的网络应用程序中非常常见的查找。我正在考虑做这样的事情:

我认为将 IP 范围转换为 CIDR 将使查找速度比我们现在所做的更快,这会将 IP 分解为整数八位字节。然后,我们索引前两组八位字节以部分匹配 IP。另一种选择可能是将所有内容转换为整数并以这种方式进行比较。我会用这样的东西转换成整数,IPAddr.new("1.1.1.1").to_i但是我需要为每个范围存储一个上限和下限 IP,而不仅仅是一个 CIDR。

如果我忽略了任何主流方法、流行的 gem 或 repo,请告诉我。谢谢!

0 投票
6 回答
7673 浏览

c# - 如何在 C# 中将 IP 范围转换为 Cidr?

有很多将 CIDR 转换为 ip 范围的示例。但我想知道如何使用开始/结束 ip 地址在 C# 中生成一个/一些 cidr?

例如:我有起始IP地址(192.168.0.1)和结束IP地址(192.168.0.254)。所以使用这两个地址生成 cidr 列表 {192.168.0.0/31, 192.168.0.2/32}。有没有 C# 代码示例?