Networking 计算两个2 IP地址非CIDR之间的网络
我有一个问题,我给出了两个IPv4地址,我必须计算它们之间的最佳网络。例如,我有Networking 计算两个2 IP地址非CIDR之间的网络,networking,ipv4,subnet,cidr,Networking,Ipv4,Subnet,Cidr,我有一个问题,我给出了两个IPv4地址,我必须计算它们之间的最佳网络。例如,我有10.240.204.160和10.240.220.160,我必须找到它们之间的所有最小可用子网 请注意,这两个IP地址不是CIDR符号 我所想的解决方案,即 获取它们之间的主机数(此处为4096) 在4096中查找设置位,即第12位 现在创建一个20的子网掩码,即255.255.240.0 这样,我将在这两个IP地址之间获得子网掩码 现在的问题是,假设我得到了255.255.240.0,然后将其与启动IP进行and
10.240.204.160
和10.240.220.160
,我必须找到它们之间的所有最小可用子网
请注意,这两个IP地址不是CIDR符号
我所想的解决方案,即
255.255.240.0
,然后将其与启动IP进行anding,它将提供服务的网络10.240.192.0/20
10.240.192.1到10.240.207.255
但是我从10.240.204.160到10.240.220.160
开始,因此它会被错误地破坏
感觉如果我继续我的故事版本,我将犯下巨大的错误
这里有人请帮帮我。你用错了面具。您应该使用
/19
而不是/20
/20
为您提供16个子网。简单数学学习我们(192是0+16=16、16+16=32、32+16=48等的结果)
A/19
为您提供32个子网-->192+32=224
请记住,224是下一个网络的开始。您的/19
网络将具有从10.240.192.0/24
到10.240.223.0/24
的子网
10.240.204.160
和10.240.220.160
属于10.240.192.0/19
网络。我在寻找预先制作的代码,偶然发现了这个线程。最后,我用python编写了以下内容。您始终有机会跨越2个子网。您刚刚错过了最后一步,需要检查并在网络掩码上扩展一位
def calc_inclusive_subnet(ip1, ip2): #accepts 2 IP strings
#make IP Address objects
ip1_obj=ipaddress.IPv4Address(ip1)
ip2_obj=ipaddress.IPv4Address(ip2)
if ip1_obj<=ip2_obj:
min_ip=ip1_obj
max_ip=ip2_obj
else:
min_ip=ip2_obj
min_ip=ip1_obj
distance = int(max_ip)-int(min_ip)
ip_range=0 #increment powers of 2 until you have subnet distance
while 2**ip_range < distance:
ip_range += 1
net = ipaddress.IPv4Network(str(min_ip) + '/' +str(32-ip_range), strict=False)
if max_ip not in net:
# i.e. if the distance implies one size network, but IPs span 2
ip_range+=1
net = ipaddress.IPv4Network(str(min_ip) + '/' +str(32-ip_range), strict=False)
return net
def calc_inclusive_子网(ip1、ip2):#接受2个IP字符串
#创建IP地址对象
ip1_obj=ipaddress.IPv4Address(ip1)
ip2_obj=ipaddress.IPv4Address(ip2)
如果ip1_实际上我必须计算介于10.240.204.160和10.240.220.160之间的子网。如果我保留/19,那么我将有一个非常大的范围,我怀疑小于10.240.204.160的IP可能已经是其他网络的一部分。因此,范围是有限的,在计算subnet@Akaks,10.240.204.160/20
属于网络10.240.192.0/20
,而10.240.220.160/20
属于10.240.208.0/20
网络。你看,两个不同的网络。这就是你需要/19
面具的原因。现在我找到了我的问题所在,在这里。我现在正试图找到它的答案,如果你发现了,请更新thing@Akaks,您从未要求过任何有关编程的内容。您只是想知道如何计算2个地址之间的网络(我提供了)。如果你想要一个关于如何用Perl实现的答案,我建议你创建一个新的问题。谢谢你的评论,我正在寻找任何公式或算法来实现,所以我写了一个程序。谢谢,非常有用!。如果ip1_obj,则的“else”有一点错误