1、概念簡介
子網掩碼
子網掩碼又叫網絡掩碼、地址掩碼,是一個32位地址,用于屏蔽IP地址的一部分以區別網絡號和主機號,并說明該IP地址是在局域網上,還是在遠程網上。子網掩碼不能單獨存在,它必須結合IP地址一起使用。定義規則
子網掩碼的設定必須遵循一定的規則。與二進制IP地址相同,子網掩碼由1和0組成,且1和0必須分別連續。左邊是網絡位,用二進制數字“1”表示,1的數目等于網絡位的長度;右邊是主機位,用二進制數字“0”表示,0的數目等于主機位的長度。表示方法
子網掩碼通常有以下兩種格式的表示方法:
①通過與IP地址格式相同的點分十進制表示,如:255.0.0.0 或255.255.255.128;
②IP地址后加上"/"符號以及1-32的數字,其中1-32的數字表示子網掩碼中網絡位的長度,也就是二進制數字“1”的個數,如:192.168.1.1 /24 的子網掩碼也可以表示為255.255.255.0,換算成二進制為11111111.11111111.11111111.00000000,網絡位共24個“1”。
2、掩碼作用
子網掩碼的主要作用有兩個:
子網掩碼是用來判斷任意兩臺計算機的IP地址是否屬于同一子網絡的根據。
子網掩碼之所以要求“1”和“0”必須都是連續的,是為了讓子網掩碼與IP地址做按位與運算時用“0”遮住原主機數,而不改變原網絡號數字,此時若得出兩個IP地址的網絡號相同,那么就表明屬于同一子網;而且這種方式很容易通過“0”的位數確定子網的主機數(2的主機位數次方-2,因為主機號全為“1”時表示該網絡廣播地址,全為0時表示該網絡的網絡地址,這是兩個特殊地址)。只有通過子網掩碼,才能表明一臺主機所在的子網與其他子網的關系,使網絡正常工作。子網掩碼用于將一個大的IP網絡劃分為若干小的子網絡,減少IP地址的浪費。
互聯網是由許多小型網絡構成的,每個網絡上都有許多主機,這樣便構成了一個有層次的結構。隨著互聯網的發展,越來越多的網絡產生,網絡中的計算機有的多則幾百臺,有的只有區區幾臺,這樣就浪費了很多IP地址,因此要劃分子網,提高網絡應用的效率。
3、掩碼分類
子網掩碼一共分為兩類:
- 標準子網掩碼,也叫做缺省(自動生成)子網掩碼,即未劃分子網,對應的網絡號的位都置1,主機號都置0。

轉換為十進制為:
A類網絡標準子網掩碼:255.0.0.0
B類網絡標準子網掩碼:255.255.0.0
C類網絡標準子網掩碼:255.255.255.0
-
非標準子網掩碼,也叫做自定義子網掩碼,是將一個網絡劃分為幾個子網,需要每一段使用不同的網絡號或子網號,實際上可以認為是將主機號分為兩個部分:子網號、子網主機號。形式如下: <br />
未做子網劃分的ip地址:網絡號+主機號
做子網劃分后的ip地址:網絡號+子網號+子網主機號 <br />
即ip地址在劃分子網后,以前的主機號位置的一部分給了子網號,余下的是子網主機號。因為子網掩碼要求“1”和“0”必須都是連續的,也就是說除去網絡號之后的子網掩碼,每8位二進制數只能有以下幾種選擇:

在實際的應用中就會有以下的子網掩碼:

4、可變長子網掩碼(VLSM)與無類別域間路由(CIDR)
可變長子網掩碼(VLSM)
可變長子網掩碼允許一個組織在同一個網絡地址用多個子網掩碼,可把子網繼續劃分為子網,使尋址效率達到最高。可變長子網掩碼其實就是相對于標準的分類的IP地址來說的,每一個IP地址都包含了2部分:網絡號和主機號,32位的IP地址被分為4段,每段8位來表示:A類IP地址的第一段是網絡號(前8位),B類IP地址的前兩段是網絡號(前16位),C類IP地址的前三段是網絡號(前24位)。
當網絡號是24位的時候,主機號只有8位,也就是說,最多可容納254臺主機,在現實生活中對于大多數企業來說是不夠的。而比這個大一點的IP地址塊是網絡號為16位的時候,這個時候可容納的主機數是65534,這個數量對于大多數公司又太多了。這導致無論企業選擇哪種類型的網絡,都可能對IP地址造成大量的浪費。
可變長子網掩碼就有效的解決了這個問題,從他們的主機號部分借出相應的位數來做網絡號,也就是增加網絡號的位數。各類網絡可以用來再劃分的位數為:A類IP地址有24位可以借,B類IP地址有16位可以借,C類IP地址有8位可以借。但實際上可以再劃分的主機號位數不可以都借出來,因為IP地址中必須要有主機號的部分,而且主機號部分剩下一位是沒有意義的,剩下1位的時候不是代表主機號就是代表廣播號,所以在實際中可以借的位數是:A類IP地址有22位可以借,B類IP地址有14位可以借,C類IP地址有6位可以借。
通過對IP地址的主機號進行再劃分,把一部分劃入網絡號,就能劃分各種類型大小的網絡了。網絡號也不再僅局限在8,16和24位這幾個數,而是變成可以根據網絡大小而靈活變化的大小了。
舉個簡單的例子,如果公司網絡只需要100臺主機,如果申請一個C類網絡地址192.168.1.0/24,那么主機地址實際上最多有254個,但實際上只是用到了100個地址,這顯然對IP地址造成了一種浪費。但是利用可變長子網掩碼技術,能把原來的C類網絡地址劃分為192.168.1.0/25,可用主機地址是126個,既滿足了需求,又沒有對IP地址造成大量浪費。無類別域間路由(CIDR)
無類別域間路由是開發用于幫助減緩IP地址和路由表增大問題的一項技術。按照標準的網絡分類來說,一個C類地址是24位網絡號,如果很多個C類網絡在一起,經過路由器的時候就被宣告成很多條子網掩碼為255.255.255.0的路由條目,然而這樣是很大數目的,同時也非常消耗路由器的資源。
通過無類別域間路由技術可以有效的把多個C類網絡地址合并為更大的網絡地址范圍,更長的網絡位。無類別域間路由的基本思想是取消IP地址的分類結構,將多個地址塊聚合在一起生成一個更大的網絡,以包含更多的主機。無類別域間路由支持路由聚合,能夠將路由表中的許多路由條目合并為成更少的數目,因此可以限制路由器中路由表的增大,減少路由通告。同時,無類別域間路由有助于IPv4地址的充分利用。
通過下面這個示例可以更好地理解無類別域間路由:
假設有一組C類地址為192.168.8.0-192.168.15.0,如果用CIDR將這組地址聚合為一個網絡,其網絡地址和子網掩碼應該為?
要求將192.168.8.0-192.168.15.0這組C類地址聚合為一個網絡,先將該C類地址的第三個8位組轉換成二進制,從下表中可以看出,只要將網絡位的低三位劃分出來作為主機位,這些C類地址就被聚合在一個網絡之中。因此,聚合后的網絡地址應該為192.168.8.0/21。
點分十進制 | 將第三個8位組轉換成二進制
----|------|----
192.168.8.0|192.168.00001 000.0
192.168.9.0|192.168.00001 001.0
192.168.10.0|192.168.00001 010.0
192.168.11.0|192.168.00001 011.0
192.168.12.0|192.168.00001 100.0
192.168.13.0|192.168.00001 101.0
192.168.14.0|192.168.00001 110.0
192.168.15.0|192.168.00001 111.0
3.簡單總結
其實無類別域間路由和可變長子網掩碼在某程度上可以看做是逆過程:無類別域間路由是把幾個小網絡匯聚成一個大網絡來做表示,而可變長子網掩碼則是把一個大網絡繼續細分為幾個小網絡進行IP地址分配。前者能讓路由器的路由條目得到有效的減少,而后者可以充分利用IP進行地址分配而解決IP地址不被浪費的問題。
5、相關計算
盡可能多的記住2^x的結果,在進行計算時會更簡便。
1.判斷任意兩臺計算機的IP地址是否屬于同一子網絡
假設主機A的IP地址為192.168.0.1,子網掩碼為255.255.255.0;主機B的地址為192.168.0.200,子網掩碼為255.255.255.0,判斷主機A和主機B是否屬于同一子網絡?
第一步,將IP地址和子網掩碼分別換算成二進制: <br />
192.168.0.1 換算成二進制為 11000000·10101000·00000000·00000001
192.168.0.200 換算成二進制為 11000000·10101000·00000000·11001000
255.255.255.0 換算成二進制為 11111111·11111111·11111111·00000000 <br />第二步,將兩個IP地址分別于對應的子網掩碼進行按位與運算,求得網絡地址: <br />
主機A:
11000000·10101000·00000000·00000001
11111111·11111111·11111111·00000000
————————按位與————————
11000000·10101000·00000000·00000000
網絡地址換算成十進制為 192.168.0.0 <br />
主機B:
11000000·10101000·00000000·11001000
11111111·11111111·11111111·00000000
————————按位與————————
11000000.10101000.00000000.00000000
網絡地址換算成十進制為 192.168.0.0 <br />第三步,比較兩個網絡地址是否相同: <br />
主機A的網絡地址為 192.168.0.0
主機B的網絡地址為 192.168.0.0
相同,因此判斷為屬于同一子網絡。
假設主機A的IP地址為192.168.0.1,子網掩碼為255.255.255.192;主機B的地址為192.168.0.200,子網掩碼為255.255.255.192,判斷主機A和主機B是否屬于同一子網絡?
第一步,將IP地址和子網掩碼分別換算成二進制: <br />
192.168.0.1 換算成二進制為 11000000·10101000·00000000·00000001
192.168.0.200 換算成二進制為 11000000·10101000·00000000·11001000
255.255.255.192 換算成二進制為 11111111·11111111·11111111·11000000 <br />第二步,將兩個IP地址分別于對應的子網掩碼進行按位與運算,求得網絡地址: <br />
主機A:
11000000·10101000·00000000·00000001
11111111·11111111·11111111·11000000
————————按位與————————
11000000·10101000·00000000·00000000
網絡地址換算成十進制為 192.168.0.0 <br />
主機B:
11000000·10101000·00000000·11001000
11111111·11111111·11111111·11000000
————————按位與————————
11000000.10101000.00000000.11000000
網絡地址換算成十進制為 192.168.0.192 <br />第三步,比較兩個網絡地址是否相同: <br />
主機A的網絡地址為 192.168.0.0
主機B的網絡地址為 192.168.0.192
不相同,因此判斷為不屬于同一子網絡。
注意:
選取這兩個例子主要想說明:
第一,不要簡單認為網絡地址就是將IP地址的后幾組數改為“0”即可,僅僅是子網掩碼對應IP地址的主機位,用二進制數字“0”表示而已;
第二,不要簡單認為當IP地址看起來屬于同一網段,且子網掩碼也相同的情況下,這兩個IP地址就一定屬于同一子網。
<br />
2.通過IP地址和子網掩碼計算相關地址
假設IP地址為128.36.199.3,子網掩碼是255.255.240.0,計算出網絡地址、廣播地址、可用地址范圍、主機數。
第一步,將IP地址和子網掩碼換算為二進制: <br />
128.36.199.3 換算成二進制為 10000000·00100100·11000111·00000011
255.255.240.0 換算成二進制為 11111111·11111111·11110000·00000000 <br />
子網掩碼中二進制位連續全“1”的是網絡地址,共有20位;后面二進制位連續全“0”的是主機地址,共有12位。第二步,IP地址和子網掩碼進行按位與運算,求得網絡地址: <br />
10000000·00100100·11000111·00000011
11111111·11111111·11110000·00000000
————————按位與————————
10000000.00100100.11000000.00000000
網絡地址換算成十進制為 128.36.192.0 <br />第三步,根據子網掩碼,在第二步結果中網絡地址二進制位不變的情況下,將主機地址二進制位置為“1”,求得廣播地址: <br />
網絡地址 128.36.192.0
10000000.00100100.11000000.00000000
根據子網掩碼,主機地址是后12位二進制位,將其置為“1”
10000000.00100100.11001111.11111111
廣播地址 128.36.207.255第四步,可用地址范圍是指包含在本網段內的所有主機: <br />
網絡地址+1為第一個主機地址,即起始地址為128.36.192.1;
廣播地址-1為最后一個主機地址,即結束地址為128.36.207.254。
地址范圍是128.36.192.1——128.36.207.254第五步,主機數量: <br />
主機的數量 = 2^二進制主機位的個數-2
根據子網掩碼,主機地址是12位二進制位
因此主機數量為2^12-2,即4094。
<br />
3.子網劃分問題
假設X公司申請了一個C類的IP地址,要連接6個子公司,每個子公司在一個網段中,則子網掩碼應該為多少?
第一步,連接6個子公司就是劃分為6個子網: <br />
劃分的子網數量 = 2^x (x是掩碼位,即掩碼位中二進制位是“1”的位數)
因此,根據公式可得 2^x >= 6 , x = 3<br />第二步,得到C類IP地址的缺省子網掩碼: <br />
子網掩碼為 255.255.255.0
換算成二進制為:
11111111.11111111.11111111.00000000第三步,將C類IP地址的缺省子網掩碼的主機地址前3位置“1”,可得結果: <br />
缺省子網掩碼:
11111111.11111111.11111111.00000000
置1后子網掩碼:
11111111.11111111.11111111.11100000
換算成十進制為: 255.255.255.224
劃分子網就是把主機號前幾位當做子網號,并添加到網絡號里擴充網絡號,可參見本篇之前第四部分“可變長子網掩碼(VLSM)”中的描述。
假設依然是X公司,要求每一個子公司要容納800臺主機,則子網掩碼應該為多少?
第一步,根據公式求出實際主機數: <br />
主機數 = 2^y-2(y是主機位,即子網掩碼中二進制位是“0”的位數)
因此,根據公式可得 2^y-2 >= 800,y = 10<br />第二步,得到C類IP地址的缺省子網掩碼,并將主機地址全部置為“1”: <br />
子網掩碼為 255.255.255.0
換算成二進制為:
11111111.11111111.11111111.00000000
主機地址置為“1”后:
11111111.11111111.11111111.11111111第三步,將主機地址置為“1”后的子網掩碼,從最后依次向前數10個二進制位,置為“0”,可得結果: <br />
主機地址置為“1”后:
11111111.11111111.11111111.11111111
從最后依次向前數10個二進制位,置為“0”:
11111111.11111111.11111100.00000000
換算成十進制為: 255.255.252.000
<br />
4.快速劃分練習
已知:
①IP地址為C類
②子網掩碼為255.255.255.128 /25
③網絡地址為192.168.10.0
求:
①可劃分多少子網
②每個子網中可容納多少臺主機
③有哪些合法子網地址
④每個子網的廣播地址
⑤有多少有效主機地址
回答問題①: <br />
劃分的子網數量 = 2^x (x是掩碼位,即掩碼位中二進制位是“1”的位數)
C類IP地址的缺省子網掩碼為255.255.255.0,共24個二進制位是“1”,已知條件②表示共有25個二進制位是“1”,多的1個就是掩碼位擴充得到的。
因此,劃分的子網數量 = 2^1,即可劃分2個子網。<br />回答問題②: <br />
主機數 = 2^y-2(y是主機位,即子網掩碼中二進制位是“0”的位數)
子網掩碼一共只有32個二進制位,其中25個二進制位是“1”,那么二進制位是“0”的位數有32-25,即7個。
因此,可容納的主機數 = 2^7-2,即126臺主機。回答問題③: <br />
合法子網號 = 256-十進制的子網掩碼掩碼位
已知是C類IP地址,且子網掩碼是255.255.255.128,則十進制掩碼位是128。
因此,合法子網號 = 256-128 = 128,即合法子網地址為192.168.10.0、192.168.10.128。回答問題④: <br />
子網廣播地址 = 下一個子網地址-1
已知合法子網地址為192.168.10.0、192.168.10.128。
因此,子網的廣播地址分別是192.168.10.127、192.168.10.255。回答問題⑤: <br />
有效主機地址 = 介于子網地址和廣播地址之間的所有地址
因此,有效主機地址是192.168.10.1-192.168.10.126、192.168.10.129-192.168.10.254。
已知:
①IP地址為B類
②子網掩碼為255.255.255.128 /25
(此時子網掩碼指使用了9位來進行子網劃分的B類子網掩碼,并不是C類子網掩碼)
③網絡地址為172.16.0.0
求:
①可劃分多少子網
②每個子網中可容納多少臺主機
③有哪些合法子網地址
④每個子網的廣播地址
⑤有多少有效主機地址
回答問題①: <br />
劃分的子網數量 = 2^x (x是掩碼位,即掩碼位中二進制位是“1”的位數)
B類IP地址的缺省子網掩碼為255.255.0.0,共16個二進制位是“1”,已知條件②表示共有25個二進制位是“1”,多的9個就是掩碼位擴充得到的。
因此,劃分的子網數量 = 2^9,即可劃分512個子網。<br />回答問題②: <br />
主機數 = 2^y-2(y是主機位,即子網掩碼中二進制位是“0”的位數)
子網掩碼一共只有32個二進制位,其中25個二進制位是“1”,那么二進制位是“0”的位數有32-25,即7個。
因此,可容納的主機數 = 2^7-2,即126臺主機。回答問題③: <br />
合法子網號 = 256-十進制的子網掩碼掩碼位
已知是B類IP地址,那么缺省子網掩碼是255.255.0.0,已知的子網掩碼是255.255.255.128,則十進制掩碼位是255和128。
因此,合法子網號 = 256-255 = 1,256-128 = 128,即合法子網地址為176.16.0.0、172.16.0.128,172.16.1.0、172.16.1.128,172.16.2.0、172.16.2.128……共512個。回答問題④: <br />
子網廣播地址 = 下一個子網地址-1
已知合法子網地址為172.16.0.0、172.16.0.128,172.16.1.0、172.16.1.128,172.16.2.0、172.16.2.128……
因此,子網的廣播地址分別是172.16.0.127、172.16.0.255,172.16.1.127、172.16.1.255,172.16.2.127、172.16.2.255……。回答問題⑤: <br />
有效主機地址 = 介于子網地址和廣播地址之間的所有地址
因此,有效主機地址是172.16.0.1-172.16.0.126、172.16.0.129-172.16.0.254,172.16.1.1-172.16.1.126、172.16.1.129-172.16.1.254,172.16.2.1-172.16.2.126、172.16.2.129-172.16.2.254……
已知:
①IP地址為A類
②子網掩碼為255.255.240.0 /20
(此處子網掩碼是B類子網掩碼)
網絡地址為10.0.0.0
求:
①可劃分多少子網
②每個子網中可容納多少臺主機
③有哪些合法子網地址
④每個子網的廣播地址
⑤有多少有效主機地址
回答問題①: <br />
劃分的子網數量 = 2^x (x是掩碼位,即掩碼位中二進制位是“1”的位數)
A類IP地址的缺省子網掩碼為255.0.0.0,共8個二進制位是“1”,已知條件②表示共有20個二進制位是“1”,多的12個就是掩碼位擴充得到的。
因此,劃分的子網數量 = 2^12,即可劃分4096個子網。<br />回答問題②: <br />
主機數 = 2^y-2(y是主機位,即子網掩碼中二進制位是“0”的位數)
子網掩碼一共只有32個二進制位,其中20個二進制位是“1”,那么二進制位是“0”的位數有32-25,即12個。
因此,可容納的主機數 = 2^12-2,即4094臺主機。回答問題③: <br />
合法子網號 = 256-十進制的子網掩碼掩碼位
已知是A類IP地址,那么缺省子網掩碼是255.0.0.0,已知是B類子網掩碼255.255.240.0,則十進制掩碼位是240。
因此,合法子網號 = 256-240 = 16,即合法子網地址為10.0.0.0、10.0.16.0、10.0.32.0、10.0.48.0……共4096個。回答問題④: <br />
子網廣播地址 = 下一個子網地址-1
已知合法子網地址為10.0.0.0、10.0.16.0、10.0.32.0、10.0.48.0……
因此,子網的廣播地址分別是10.0.15.255、10.0.31.255、10.0.47.255……。回答問題⑤: <br />
有效主機地址 = 介于子網地址和廣播地址之間的所有地址
因此,有效主機地址是10.0.0.1-10.0.15.254、10.0.16.1-10.0.31.254、10.0.32.1-10.0.47.254、10.0.48.1-10.0.62.254……
版權聲明:歡迎轉載,歡迎擴散,但轉載時請標明作者以及原文出處,謝謝合作! ↓↓↓