您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> 网络通信 >> 如何判断一个内网IP网段是不是另一个内网IP网段的子网段?

如何判断一个内网IP网段是不是另一个内网IP网段的子网段?

来源:网络整理     时间:2017/12/20 12:23:38     关键词:

关于网友提出的“ 如何判断一个内网IP网段是不是另一个内网IP网段的子网段?”问题疑问,本网通过在网上对“ 如何判断一个内网IP网段是不是另一个内网IP网段的子网段?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 如何判断一个内网IP网段是不是另一个内网IP网段的子网段?
描述:

本帖最后由 hjgzj 于 2017-08-09 18:33:24 编辑

如图
 如何判断一个内网IP网段是不是另一个内网IP网段的子网段?
里面有许多子节点和根节点,我怎么校验子节点的网段是不是父节点网段的子网段
求个代码


解决方案1:

你好歹说一下是什么语言啊……
算法是这样:完整的网段由IP a.b.c.d,加上掩码长度 e组成。
1. 把父节点和子节点的a,b,c,d写成8位2进制,不足8位的,在前面补0
2. 把4个8位二进制数按a在高位,d在低位的顺序拼起来(其实就是(a<<24) + (b <<16) + (c<<8) +d的二进制形式),这样就把两个IP转成了一个32位的二进制形式
3. 按父节点的掩码长度e,从高位向低位截取两个IP(截取的结果叫网络位),剩下的位数全置为0(这个叫主机位)
4. 判断一下两个截取结果是否相等
具体做的话,其实就是用掩码和两个IP按位与运算,得到的结果做一次异或,看结果是不是为0
重点是,要用父节点的掩码来做运算

(
(
(2^e-1)<<(32-e)

&
(
(a1<<24) + (b1 <<16) + (c1<<8) +d1
)
)
^
(
(
(2^e-1)<<(32-e)

&
(
(a2<<24) + (b2 <<16) + (c2<<8) +d2
)
)


以上介绍了“ 如何判断一个内网IP网段是不是另一个内网IP网段的子网段?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/4525536.html

相关图片

相关文章