如何知道给定的IPV6地址是否属于与本地机器相同的子网

时间:2016-06-03 11:52:27

标签: networking network-programming ipv6 ipv4 windows-networking

Currenly我有一个带有IP地址和子网掩码的c函数,并检查给定的ipv4是否为私有/公共。

它遵循逻辑来匹配子网:

(local ipv4 address && local subnetmask) == (given ipv4 && given subnetmask)

可以为ipv6编写什么逻辑?我可以编写一个函数来接收ip和子网前缀。我可以获得本地子网前缀吗?

1 个答案:

答案 0 :(得分:0)

我命令确定两个主机是否在同一个子网上同时获取其地址和前缀长度(子网掩码)。

如果前缀长度不同,则它们不在同一网络上。

如果前缀长度相同,则取长度(很可能是64,所以我们假设)并将两个地址的前64位相互比较。如果它们是相同的,那么它们都在同一个网络上。

它与IPv4的基本相同,使得不是前缀的位。使用128个地址可能更容易实现它作为一次比较4位(比较十六进制表示法)或一次比较8位(比较解析的字节)的循环。