子網掩碼詳解


參考博客:https://blog.csdn.net/jason314/article/details/5447743

一、 子網掩碼的概念及作用  

  子網掩碼 (subnet mask) 又叫網絡掩碼、地址掩碼、子網絡遮罩,是一個應用於 TCP/IP 網絡的 32 位二進制值。它可以屏蔽掉 IP 地址中的一部分,從而分離出 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' 在做 ' 與 ' 運算時,將對應項清零,利用 ' 與 ' 的這個特性,當管理員設置子網掩碼時,即將子網掩碼上與網絡地址所對應的位都設為 '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 地址與子網掩碼(注意,這里指的子網掩碼已經不是缺省子網掩碼了,而是自定義子網掩碼,是管理員在經過計算后得出的)做 ' 與 ' 運算時,每個子網將得到不同的子網地址,從而實現了對網絡的划分(得到了不同的地址,當然就能區別出各個子網了,有趣吧)。

子網編址技術 ,即子網划分將會有助於以下問題的解決:

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 ,這點請大家注意!(至於為什么減 2 ,可看后面說明)

解惑:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM