怎麼判斷兩個ip在不在一個子網?你有哪些建議?

mojiezhaixing


判斷兩個IP是不是在一個子網內或是一個網段內!是要和出接口的子網掩碼計算的!

子網掩碼的出現就是為了節約IP地址的

具體的計算方法就是把IP地址給子網掩碼都換算成相應的二進制數,然後做“與”運算,規則是1和1得1,0和1得0!然後在轉成十進制!

比如192.168.1.1和192.168.1.5是不是一個網段呢?按照默認子網掩碼255.255.255.0這兩個IP地址就是一個網段,都屬於192.168.1.0這個網段!怎麼算的呢?

192.168.1.1換算成二進制數就是

11000000.10101000.00000001.00000001

子網掩碼255.255.255.0換算成二進制

11111111.11111111.11111111.00000000

11000000.10101000.00000001.00000000

十進制是192.168.1.0!

192.168.1.5和255.255.255.0一樣的與運算只是最後一組不同但是和00000000運算,最後都是0,也是192.168.1.0兩個IP在同一個網段!

如果子網掩碼改變那就不一定了 比如子網掩碼是255.255.255.252

前面一樣 我們只算最後一組252和1和5的運算,子網掩碼最後一組是11111100和IP地址的00000001運算後的00000001十進制是192.168.1.0!IP5和子網掩碼252,00000101和11111100得00000100十進制是192.168.1.4!一個是192.168.1.0一個是192.168.1.4他們不是同一個網段了!

所以判斷一個IP地址是不是在一個網段就是要看子網掩碼!不同的子網掩碼可能導致看上去一樣個網段的IP地址實際不是同一個網段!

注意該子網掩碼是和該IP地址一起的出接口的子網掩碼!比如一個網卡設置的IP地址和子網掩碼 網卡就是一個出接口!電腦用他們運算和確定和目的IP地址是不是在通一個網段!而不是和對方網卡設置的子網掩碼計算!


分享到:


相關文章: