1. 程式人生 > >如判斷這兩個IP是否屬於同一網段

如判斷這兩個IP是否屬於同一網段

               

教你一個手工判斷的方法,然後你就知道程式如何判斷了。         你把你的IP地址表達成   二進位制共有32位,再把子網掩碼錶達成二進位制共有32位,         IP1:01010110110101010101011010101010     IP2:01010110110101010101011011110011     Mask:11111111111111111111111110000000         你只需要看掩碼中是“1”的那些位置,對應的兩個IP地址的位是否相等,全部相等就是同一網段;有一個不等,就不是同一網段。  

要想在同一網段,必需做到網路標識相同,那網路標識怎麼算呢?各類IP的網路標識演算法都是不一樣的。A類的,只算第一段。B類,只算第一、二段。C類,算第一、二、三段。  演算法只要把IP和子網掩碼的每位數AND就可以了。  AND方法:0和1=0 0和0=0 1和1=1  如:And 192.168.0.1,255.255.255.0,先轉換為二進位制,然後AND每一位  IP      11000000.10101000.00000000.00000001  子網掩碼    11111111.11111111.11111111.00000000  得出AND結果  11000000.10101000.00000000.00000000  轉換為十進位制192.168.0.0,這就是網路標識,  再將子網掩碼反取,也就是00000000.00000000.00000000.11111111,與IP AND  得出結果00000000.00000000.00000000.00000001,轉換為10進位制,即0.0.0.1,  這0.0.0.1就是主機標識。要想在同一網段,必需做到網路標識一樣。

  我們再來看看這個改為預設子網掩碼的B類IP  如IP:188.188.0.111,188.188.5.222,子網掩碼都設為255.255.254.0,在同一網段嗎?  先將這些轉換成二進位制  188.188.0.111 10111100.10111100.00000000.01101111  188.188.5.222 10111100.10111100.00000101.11011010  255.255.254.0 11111111.11111111.11111110.00000000  分別AND,得  10111100.10111100.00000000.00000000  10111100.10111100.00000100.00000000  網路標識不一樣,即不在同一網段。  判斷是不是在同一網段,你會了吧,下面,我們來點實際的。  一個公司有530臺電腦,組成一個對等區域網,子網掩碼和IP設多少最合適?  子網掩碼不說了,前面算出結果來了11111111.11111111.11111100.00000000,也就是255.255.252.0  我們現在要確定的是IP如何分配,首先,選一個B類IP段,這裡就選188.188.x.x吧  這樣,IP的前兩段確定的,關鍵是要確定第三段,只要網路標識相同就可以了。我們先來確定網路號。(我們把子網掩碼中的1和IP中的?對就起來,0和*對應起來,如下:)  255.255.252.0 11111111.11111111.11111100.00000000  188.188.x.x  10111100.10111100.??????**.********  網路標識   10111100.10111100.??????00.00000000  由此可知,?處隨便填(只能用0和1填,不一定全是0和1),我們就用全填0吧,*處隨便,這樣呢,我們的IP就是  10111100.10111100.000000**.********,一共有530臺電腦,IP的最後一段1~254可以分給254臺計算機,530/254=2.086,採用進1法,得整數3,這樣,我們確定了IP的第三段要分成三個不同的數字,也就是說,把000000**中的**填三次數字,只能填1和0,而且每次的數字都不一樣,至於填什麼,就隨我們便了,如00000001,00000010,00000011,轉換成二進位制,分別是1,2,3,這樣,第三段也確定了,這樣,就可以把IP分成188.188.1.y,188.188.2.y,188.188.3.y,y處隨便填,只要在1~254範圍之內,並且這530臺電腦每臺和每臺的IP不一樣,就可以了。