如何判断两个IP地址是不是处于同一网段?
生活随笔
收集整理的這篇文章主要介紹了
如何判断两个IP地址是不是处于同一网段?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
個人理解,歡迎指正。
一、要判斷兩個IP地址是不是在同一個網段,就將它們的IP地址分別與子網掩碼做與運算,得到的結果-->網絡號,如果網絡號相同,
就在同一子網,否則,不在同一子網。
例:假定選擇了子網掩碼255.255.254.0,把IP地址和子網掩碼轉換為二進制,分別將上述兩個IP地址分別與掩碼做與運算,如下所示:
211.95.165.24 11010011 01011111 10100101 00011000
255.255.254.0 11111111 11111111 111111110 00000000 與的結果是: 11010011 01011111 10100100 00000000 211.95.164.78 11010011 01011111 10100100 01001110 255.255.254.0 11111111 11111111 111111110 00000000 與的結果是: 11010011 01011111 10100100 00000000 可以看出,得到的結果(這個結果就是網絡地址)都是一樣的,因此可以判斷這兩個IP地址在同一個子網。 一、互聯網的地址 互聯網上的每個接口必須有個唯一的Internet地址(也稱作IP地址),IP地址長32bit,Internet地址并不采用平面形式的地址空間,如1,2,3等。 五類不同的互聯網復制格式如圖所示:五類互聯網IP地址
這些32位的地址通常寫成四個十進制的數,其中每個整數對應一個字節。這種表示方法稱為"點分十進制表示法"。如:192.168.10.11。
① IP地址 和 子網掩碼相與得到得到網絡號
② 子網掩碼先取反,在 和 IP地址相與得到主機號
判斷兩個Ip是否在同一網段的方法,前提是兩個ip的子網掩碼相同;(子網掩碼,ip1,ip2) public static bool CheckIPAndMask(string mask,string ip1,string ip2){string[] maskList=mask.Split('.');string[] ip1List=ip1.Split('.');string[] ip2List=ip2.Split('.');for(int j=0;j<maskList.length;j++){if((int.Parse(ip1List[j])&int.Parse(maskList[j]))!=(int.Parse(ip1List[j])&int.Parse(maskList[j]))){return false;}}return true; }?
轉載于:https://www.cnblogs.com/zl181015/p/10918533.html
總結
以上是生活随笔為你收集整理的如何判断两个IP地址是不是处于同一网段?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python实现单例模式的三种方式及相关
- 下一篇: CSS每日学习笔记(3)