问题标签 [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.
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::
facebook - Facebook使用的IP空间列表
我正在寻找 Facebook 使用的 IP 空间的权威列表。我需要它来支持一个锁定的开发人员环境,该环境对出站连接有非常严格的限制。
今天我发现 api 和 graph.facebook.com 开始解析为 69.171.224.0/19,这以前不在我的过滤器中。我已经更新了它,但我想知道我缺少哪些其他 IP 空间允许规则。
这是我目前所拥有的。您可以列出的任何其他 IP 块都会很棒。谢谢大家。
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
php - CIDR 位运算 - 我可以更聪明一点吗?
我正在构建一个类来表示 IPv4 子网。我将网络地址和子网掩码存储为 4 字节二进制字符串,它们是在构造函数期间根据参数构建的。我希望构造函数接受的一种表示是CIDR notation。
我的按位运算有点生疏,我遇到的问题是将子网掩码的十进制整数 CIDR 表示形式转换为 4 字节二进制字符串,反之亦然。我还发现我无法在字符串上执行左/右移位 - 我确定我之前已经成功完成了吗?
我设法将转换为二进制字符串以使用以下代码:
我不喜欢这个逻辑有两个原因:
- 我不喜欢
0
当作特例 - 我不喜欢右移后左移
我确信有一种方法可以更有效地做到这一点,并且可以0
正确处理而不将其视为特殊情况。
将二进制字符串转换回 CIDR 前缀大小的十进制表示时,我目前正在使用下面的代码。在验证以其他格式提供的子网掩码以确保设置位是连续的时,我有另一个非常相似的代码块。
由于循环,我不喜欢这个 - 我确信有一种更智能的按位方式来做到这一点。
有没有更智能的方法来完成这些任务?
想法/建议/一般滥用请...
编辑:
任何解决方案都需要在 PHP 4.3.10 及更高版本上运行,并且必须在 32 位和 64 位平台上运行。请记住,PHP 中的所有整数都是有符号的,并且在 32 位平台上,任何东西>= 0x80000000
都将存储为双精度数(因此不能很好地使用按位运算)。
c++ - 如何使用 Qt 确定我的互联网 IP 是否属于给定的 IP 列表
我在 TXT 文件中存储了以下 IP 列表(CIDR 格式):<
但是我不知道如何确定我的IP是否属于这个列表。我在 Windows 平台上使用 Qt C++ 框架。
java - 将通配符子网转换为最小的 cidr 子网列表
我需要将通配符子网转换为最小的 cidr 子网列表。例如:
上面的例子很简单,但对于像 1.2.3.4/252.0.128.0 这样的通配符子网,它更复杂。
Java中是否有一个库。
提前致谢。
java - 将ip数组转换为java中最小的cidr子网列表
我有一个如下所示的 ip 数组,我想将其转换为最小的 cidr 子网列表。Java中是否有用于该库的库?
例如:
转换成
提前致谢。
ruby - NetAddr::Tree 获取 CIDR 列表并合并它们?
我正在使用 Ruby NetAddr::Tree 类来保存一堆 CIDR 对象,但我需要一种方法来将 CIDR 对象压缩到更大的子网中。
我想要一种获取 IP 的方法,例如:
并合并树中的相关地址范围,以便输出如下:
我查看了文档,但找不到任何方法来做到这一点。如果需要,我很高兴不再使用 NEtAddr::Tree,重要的是它需要一个 IP/网络掩码字符串列表,将它们合并并逐行输出。
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,请告诉我。谢谢!
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# 代码示例?