一、子網掩碼的概念及作用
子網掩碼是一個應用於TCP/IP網絡的32位二進制值,它可以屏蔽掉ip地址中的一部分,從而分離出ip地址中的網絡部分與主機部分,基於子網掩碼,管理員可以將網絡進一步劃分為若干子網。
二、為什麼需要使用子網掩碼
雖然我們說子網掩碼可以分離出ip地址中的網絡部分與主機部分,可大家還是會有疑問,比如為什麼要區分網絡地址與主機地址?區分以後又怎樣呢?那麼好,讓我們再詳細的講一下吧!
在使用TCP/IP協議的兩台計算機之間進行通信時,我們通過將本機的子網掩碼與接受方主機的ip地址進行'與'運算,即可得到目標主機所在的網絡號,又由於每台主機在配置TCP/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)缺省子網掩碼:
即未劃分子網,對應的網絡號的位都置1,主機號都置0。
A類網絡缺省子網掩碼:255.0.0.0
B類網絡缺省子網掩碼:255.255.0.0
C類網絡缺省子網掩碼:255.255.255.0
2)自定義子網掩碼:
將一個網絡劃分為幾個子網,需要每一段使用不同的網絡號或子網號,實際上我們可以認為是將主機號分為兩個部分:子網號、子網主機號。 形式如下:
未做子網劃分的ip地址:網絡號+主機號
做子網劃分後的ip地址:網絡號+子網號+子網主機號
也就是說ip地址在化分子網後,以前的主機號位置的一部分給了子網號,余下的是子網主機號。
五、子網編址技術
前面幾點介紹了子網掩碼的一些知識,下面我們來看看子網劃分,不要認為子網劃分與子網掩碼沒有關系喲,子網劃分也是靠子網掩碼來實現的。
子網是指一個ip地址上生成的邏輯網絡,它可以讓一個網絡地址跨越多個物理網絡,即一個網絡地址代表多個網絡(很明顯這樣做可以節省ip地址)。呵呵,聽起來是不是很蹊跷?一個網絡就這樣被莫名其妙的劃分成了許多子網?那麼這樣做有什麼用呢?
我舉個例子來跟你說吧:比如你是某個學校的網管,你的學校有四個處於不同物理位置的網絡教室,每個網絡教室25台機器,你的任務是給這些機器配 置ip地址和子網掩碼。你可能會覺得這再簡單不過了,申請4個C類地址,每個教室一個,然後在一一配置不就搞定了。嗯,這樣做理論上沒錯,但你有沒有想到 這樣做很浪費,你一共浪費了(254-25)*4=916個ip地址,如果所有的網管都像你這樣做,那麼internet上的ip地址將會在極短的時間內 枯竭,顯然,你是不能這樣做,你應該做子網劃分。
子網劃分說白了是這樣一個事情:因為在劃分了子網後,ip地址的網絡號是不變的,因此在局域網外部看來,這裡仍然只存在一個網絡,即網絡號所代 表的那個網絡;但在網絡內部卻是另外一個景象,因為我們每個子網的子網號是不同的,當用化分子網後的ip地址與子網掩碼(注意,這裡指的子網掩碼已經不是 缺省子網掩碼了,而是自定義子網掩碼,是管理員在經過計算後得出的)做'與'運算時,每個子網將得到不同的子網地址,從而實現了對網絡的劃分(得到了不同 的地址,當然就能區別出各個子網了,有趣吧)。
子網編址技術,即子網劃分將會有助於以下問題的解決:
1)巨大的網絡地址管理耗費:如果你是一個A類網絡的管理員,你一定會為管理數量龐大的主機而頭痛的;
2)路由器中的選路表的急劇膨脹:當路由器與其他路由器交換選路表時,互聯網的負載是很高的,所需的計算量也很高;
3)IP地址空間有限並終將枯竭:這是一個至關重要的問題,高速發展的internet,使原來的編址方法不能適應,而一些ip地址卻不能被充分的利用,造成了浪費。
因此,在配置局域網或其他網絡時,根據需要劃分子網是很重要的,有時也是必要的。現在,子網編址技術已經被絕大多數局域網所使用。
六、如何劃分子網及確定子網掩碼
在動手劃分之前,一定要考慮網絡目前的需求和將來的需求計劃。
劃分子網主要從以下方面考慮:
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.25