C# 将IP地址范围转换为CIDR格式,反之亦然
我需要将C# 将IP地址范围转换为CIDR格式,反之亦然,c#,network-programming,ip,cidr,C#,Network Programming,Ip,Cidr,我需要将IP范围转换为CIDR符号,反之亦然。我通过IPNetwork库通过以下方式解决了该问题: 从CIDR到范围的转换: var ip = IPNetwork.Parse("192.168.168.100/24"); Console.WriteLine(ip.FirstUsable.ToString() + "/" + ip.LastUsable.ToString()); 以及从范围到CIDR的转换: IPNetwork network = IPNetwork.Pa
IP
范围转换为CIDR
符号,反之亦然。我通过IPNetwork
库通过以下方式解决了该问题:
从CIDR
到范围的转换:
var ip = IPNetwork.Parse("192.168.168.100/24");
Console.WriteLine(ip.FirstUsable.ToString() + "/" + ip.LastUsable.ToString());
以及从范围到CIDR的转换:
IPNetwork network = IPNetwork.Parse("192.168.168.0");
IPNetwork network2 = IPNetwork.Parse("192.168.168.255");
IPNetwork ipnetwork = IPNetwork.Supernet(network, network2);
Console.WriteLine(ipnetwork.FirstUsable + "/" + ipnetwork.Cidr);
看来它可以很好地工作。但当我使用自定义工具时,它们返回的结果略有不同
对于192.168.168.100/24
IPNetwork
lib返回
192.168.168.1
-192.168.168.254
返回
192.168.168.0
-192.168.168.255
返回
192.168.168.1
-192.168.168.254
返回
192.168.168.1/32
192.168.168.2/31
192.168.168.4/30
192.168.168.8/29
192.168.168.16/28
当我试图转换
192.168.168.1-192.168.168.254
至CIDR
。
我真的很困惑,不同的工具会产生不同的结果。
此外,我的目标是为用户创建一个白名单,并在他们来时检查他们的
IP
s,因此这是一个非常重要的问题。考虑到CIDR符号192.168.168.100/24:
Network address is 192.168.168.0
First usable address is 192.168.168.1
Last usable address is 192.168.168.254
Broadcast address is 192.168.168.255
Network mask is 255.255.255.0
没有也不可能没有歧义。给定CIDR符号192.168.168.100/24:
Network address is 192.168.168.0
First usable address is 192.168.168.1
Last usable address is 192.168.168.254
Broadcast address is 192.168.168.255
Network mask is 255.255.255.0
没有,也不可能没有歧义。Read,它解释得很好。@JoachimPileborg那么用户可以拥有以0或255结尾的IP吗?如果你阅读链接的答案,它会说以
0
结尾在某些有限的情况下是有效的,255
是广播地址(任何系统都不能使用)。是的,这两个地址都是有效的,但实际上都不在范围内。@JoachimPileborg非常感谢,但是关于结果你能说些什么呢?阅读,它解释得很好。@JoachimPileborg用户的IP是否可以以0或255结尾?如果你阅读链接的答案,它说以0
结尾在某些有限的情况下是有效的,而255
是广播地址(任何系统都不能使用)。是的,两个地址都是有效的,但不在范围内。@JoachimPileborg非常感谢,但是关于结果你能说些什么呢?