一、子網掩碼的概念及作用
子網掩碼是一個應用于TCP/IP網絡的32位二進制值,它可以屏蔽掉ip地址中的一部分,從而分離出ip地址中的網絡部分與主機部分,基于子網掩碼,管理員可以將網絡進一步劃分為若干子網。
二、如何用子網掩碼得到網絡/主機地址
既然子網掩碼這么重要,那么它是如何分離出ip地址中的網絡地址和主機地址的呢?
過程如下:
? ? ? ? ? ? ? ? 1.將ip地址與子網掩碼轉換成二進制;
? ? ? ? ? ? ? ? 2.將二進制形式的ip地址與子網掩碼做'與'運算,將答案化為十進制便得到網絡地址;
? ? ? ? ? ? ? ? 3.將二進制形式的子網掩碼取'反';
? ? ? ? ? ? ? ? 4.將取'反'后的子網掩碼與ip地址做'與'運算,將答案化為十進制便得到主機地址。
下面我們用一個例子給大家演示:
? ? ? ? ? ? ? ? ? ?假設有一個I P 地址:192.168.0.1
? ? ? ? ? ? ? ? ? ?子網掩碼為:255.255.255.0
? ? ? ? ? ? ? ? ?化為二進制為:I P 地址11000000. ? ? ?10101000. ? ? 00000000. ? ? ?00000001
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 子網掩碼11111111. ? ?11111111. ? ? 11111111. ? ? ?00000000
? ? ? ? ? ? ? ? ? ? ? ?將兩者做'與'運算得:11000000. ? ? 10101000. ? ? 00000000. ? ? ?00000000
將其化為十進制得:192.168.0.0
這便是上面ip的網絡地址,主機地址以此類推。
小技巧:由于觀察到上面的子網掩碼為C類地址的默認子網掩碼(即未劃分子網),便可直接看出網絡地址為ip地址的前三部分,即前三個字節。
解惑:
什么?你還是不懂?問我為什么要做'與'運算而不是別的?其實你仔細觀察一下上面的例子就應該能明白。
'1'在做'與'運算時,不影響結果,'0'在做'與'運算時,將得到0,利用'與'的這個特性,當管理員設置子網掩碼時,即將子網掩碼上與網絡地址所對應的位都設為'1',其他位都設為'0',那么當作'與'時,ip地址中的網絡號將被保留到結果中,而主機號將被置0,這樣就解析出了網絡號,解析主機號也一樣,只需先把子網掩碼取'反',在做'與'。
三、如何劃分子網及確定子網掩碼
在動手劃分之前,一定要考慮網絡目前的需求和將來的需求計劃。
劃分子網主要從以下方面考慮:
1.網絡中物理段的數量(即要劃分的子網數量)
2.每個物理段的主機的數量
確定子網掩碼的步驟:
第一步:確定物理網段的數量,并將其轉換為二進制數,并確定位數n。如:你需要6個子網,6的二進制值為110,共3位,即n=3;
第二步:按照你ip地址的類型寫出其缺省子網掩碼。如C類,則缺省子網掩碼為11111111.11111111.11111111.00000000;
第三步:將子網掩碼中與主機號的前n位對應的位置置1,其余位置置0。若n=3且為
C類地址:則得到子網掩碼為11111111.11111111.11111111.11100000化為十進制得到255.255.255.224
B類地址:則得到子網掩碼為11111111.11111111.11100000.00000000化為十進制得到255.255.224.0
A類地址:則得到子網掩碼為11111111.11100000.00000000.00000000化為十進制得到255.224.0.0
另:由于網絡被劃分為6個子網,占用了主機號的前3位,若是C類地址,則主機號只能用5位來表示主機號,因此每個子網內的主機數量=(2的5次方)-2=30,6個子網總共所能標識的主機數將小于254,這點請大家注意!
解惑:
1.你可能有這樣的疑問,比如在上面的例子里,6的二進制值為110,那么為什么要將子網掩碼中與主機號的前n位對應的位置都置1,而不是用6的二進制110去替代前n位呢?
呵呵,這個問題提的很好,答案是這樣的:我們計算子網掩碼的目的是什么?就是希望它在做'與'的時候能夠解析出網絡號,也就是說它與網絡號所對應的位置都應該是1(當然包括與子網號所對應的位置),那么很顯然,你寫上110是不對的,如果你這么寫,那么它的意義是主機號的前兩位作為子網號,那么這樣將最多劃分2個子網(不明白沒關系,下面有計算子網數量的方法),與我們當初所要劃分的6個子網顯然是不一致的。這樣解釋你能明白馬?
2.細心的人可能會發現,劃分4個子網,5個子網和6個子網的子網掩碼是一樣的,同為255.255.255.224,是不是錯了呢?三個子網掩碼應該不同呀?呵呵,是這樣的,因為4,5,6的二進制值都是3為,因此在子網掩碼中這三位都置1,劃分是沒有問題的,只是你的理解上有一點小小的問題,劃分為4個子網,其實可以理解為劃分為6個子網,但你只使用了其中的4個。比如你想劃分8個子網,與劃分14個子網所得到的子網掩碼是一樣的,都占用了4位作為子網號。
四、相關判斷方法
1)如何判斷是否做了子網劃分?
這個問題很簡單,如果它使用了缺省子網掩碼,那么表示沒有作子網劃分;反之,則一定作了子網劃分。
2)如何計算子網地址?
還是老辦法,將ip地址與子網掩碼的二進制形式做'與',得到的結果即為子網地址。
3)如何計算主機地址?
這個也不用說了吧,先將子網掩碼的二進制取'反',再與ip地址做'與'。
4)如何計算子網數量?
這個問題大家會常常提到,還是從子網掩碼入手,主要有兩個步驟:
1.觀察子網掩碼的二進制形式,確定作為子網號的位數n;
2.子網數量為2的n次方-2。(為什么減2,呵呵,往下看)
舉個例子來說,比如有這樣一個子網掩碼:255.255.255.224其二進制為:
11111111.11111111.11111111.11100000可見n=3,2的3次方為8,說明子網地址可能有
如下8種情況:
000
001
010
011
100
101
110
111
但其中代表網絡自身的000;代表廣播地址的111是被保留的,所以要減2,明白了嗎?
5)如何計算總主機數量,子網內主機數量?
總主機數量=子網數量×子網內主機數量
再用一個例子給大家說明,比如子網掩碼為255.255.255.224
上面的討論知道它最多可以劃分6個子網,那么每個子網內最多有多少個主機呢?其實上面我已經給大家算過了,由于網絡被劃分為6個子網,占用了主機號的前3位,且是C類地址,則主機號只能用5位來表示主機號,因此子網內的主機數量=(2的5次方)-2=30.
因此通過這個子網掩碼我們可以算出這個網絡最多可以標識6*30=180個主機(可見,在化分子網后,整個網絡所能標識的主機數量將減少)。
6)計算ip地址范圍
通過一個自定義子網掩碼,我們可以得到這個網絡所有可能的ip地址范圍。
具體步驟:
1.寫出二進制子網地址;
2.將子網地址化為十進制;
3.計算子網所能容納主機數;
4.得出ip范圍(起始地址:子網地址+1;終止地址:子網地址+主機數)
假設一個子網掩碼為:255.255.255.224,可知其最多可以劃分6個子網,子網內主機數為30,那么所有可能的ip地址及計算流程如下:
子網--子網地址(二進制)--------子網地址-----實際ip范圍
1號-11001010.01110000.00001010.00100000-202.112.10.32-202.112.10.33-202.112.10.62
2號-11001010.01110000.00001010.01000000-202.112.10.64-202.112.10.65-202.112.10.94
3號-11001010.01110000.00001010.01100000-202.112.10.96-202.112.10.97-202.112.10.126
4號-11001010.01110000.00001010.10000000-202.112.10.128-202.112.10.129-202.112.10.158
5號-11001010.01110000.00001010.10100000-202.112.10.160-202.112.10.161-202.112.10.190
6號-11001010.01110000.00001010.11000000-202.112.10.192-202.112.10.193-202.112.10.222