首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解IP、CIDR以及IP如何映射到CIDR

了解IP、CIDR以及IP如何映射到CIDR
EN

Stack Overflow用户
提问于 2016-01-20 21:44:29
回答 1查看 197关注 0票数 0

我正在尝试构建一个函数,该函数在给定CIDR的情况下,返回与映射到该CIDR的IP相匹配的正则表达式。

例如:

代码语言:javascript
复制
def cidr_to_regex(cidr_input):
     return ip_matcher

cidr_to_regex('192.168.100.14/24')的结果应该是与该CIDR地址相关联的IP相匹配的正则表达式。

这就是我对CIDR映射的理解,但我不确定它是否正确。你能帮我弄清楚吗?

调用示例中的cidr_to_regex应该返回一个与192.168.100.x匹配的正则表达式,其中x是一个介于0和255之间的数字。

这是因为/24表示1的24位,即地址的前3个字节是1,这意味着我们只关心剩余的字节。

如果我有cidr_to_regex('192.168.100.14/23'),前23位就是1,所以我不关心前2个字节( 16位),最后一个字节是:

1111111011111111,所以是224或225。

这意味着我应该匹配192.168.y.x,其中y是224或225,x是0到225之间。

如果我有cidr_to_regex('192.168.100.14/13'),IP的前13位是1。这意味着我不关心第一个字节,第二个字节的前5位等于1,所以是这样的:

第一位: 11111111

第二位: 11111xyz (因此可以是11111000、11111001、11111010等)

我的表达式应该匹配192.z.y.x,其中z在248到255之间,而x和y在0到255之间。

我不确定我对CIDR的理解是正确的。您能告诉我IP是如何映射到CIDR的吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2016-01-21 06:32:46

我重新看过你的例子,我认为你的计算有一点偏差。

让我们把每个例子都分解一下。

使用192.168.100.14/24,您将得到以下二进制代码。

代码语言:javascript
复制
11000000.10101000.01100100.00001110 - IP address      192.168.100.14
11111111.11111111.11111111.00000000 - Subnet mask     255.255.255.0 or /24
11000000.10101000.01100100.00000000 - Network address 192.168.100.0
                       ^ - last common bit

此范围内的地址为192.168.100.0 - 192.168.100.255

使用192.168.100.14/23,您将得到以下二进制代码。

代码语言:javascript
复制
11000000.10101000.01100100.00001110 - IP address      192.168.100.14
11111111.11111111.11111110.00000000 - Subnet mask     255.255.254.0 or /23
11000000.10101000.01100100.00000000 - Network address 192.168.100.0
                       ^ - last common bit

因此,此范围内的地址将为192.168.100.0 - 192.168.101.255

使用192.168.100.14/13,您将得到以下二进制代码。

代码语言:javascript
复制
11000000.10101000.01100100.00001110 - IP address      192.168.100.14
11111111.11111000.00000000.00000000 - Subnet mask     255.248.0.0 or /13
11000000.10101000.00000000.00000000 - Network address 192.168.0.0
             ^ - last common bit

因此,此范围内的地址将为192.168.0.0 - 192.175.255.255

我希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34901743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档