在學習可變長度子網掩碼時,必須先熟練掌握二進制與十進制的轉化、計算機中數據的單位(字節、位)等知識。
一、什么是可變長度子網掩碼?
要理解可變長度子網掩碼,先要理解子網掩碼;要理解子網掩碼,先要理解IP地址的組成。
在互聯網上,每台計算機必須有一個唯一的IP地址作用這台計算機在身份標志,可以將IP地址理解成一台計算機的身份證號碼。在互聯網上不允許出現相同的IP地址(NAT技術另論,它是一種IP地址共享技術,用於解決IP地址資源不足的問題)。身份證的編號要按照一定的規則進行,同樣,IP地址的編號也要按照一定的規則進行。
IP地址(本文的IP指的都是IP v4)編號規則或特征:
-
一個IP地址由4個字節組成,采用點分十進制方式表示
例如,一個4個字節的IP地址的二進制形式是:11000000 10101000 11000111 00000001,其點分十進制表示就是將每個字節依次轉化為十進制並用點分隔開,即:192.168.199.1。
在全國計算機等級考試一級中常會出現一道這樣的題目:
判讀以下IP地址哪個是正確的IP地址()
(A)192.256.4.4 (B)124.45.2.3.3 (C)45.21.4.3 (D)78.4.5
很明顯正確答案是C。
A錯在點分十進制表示的IP地址中,每個點分隔開的數值不能大於255,因為一個字節轉化為十進制最大為255;B、D錯在IP使用點分十制表示是4段(三個點分隔開4個十進制數)。
2. IP地址的分類
類別 |
第一個字節 |
示例IP |
子網掩碼 |
|
二進制 |
十進制 |
|||
A類 |
00000001-01111110 |
1-126 |
12.0.0.1 |
255.0.0.0 |
B類 |
10000000-10111111 |
128-191 |
133.25.0.4 |
255.255.0.0 |
C類 |
11000000-11011111 |
192-223 |
200.18.19.4 |
255.255.255.0 |
D類 |
11100000-11101111 |
224-239 |
||
E類 |
11110000-11111110 |
240-254 |
IP地址以第一個字節進行分類的,可分為五類:A、B、C、D、E。
D類地址用於多點廣播,E類地址用於科研、保留(目前找不到具體的應用資料),這兩類地址不在本文中討論。
3.各類IP地址的特征及判斷依據
A類地址:第一個字節第一位二進制位為0,第一個字節十進制值為[1,126];
B類地址:第一個字節前兩位二進制位為10,第一個字節十進制值為[128,191];
C類地址:第一個字節前三位二進制位為110,第一個字節十進制值為[192,223];
D類地址:第一個字節前四位二進制位為1110,第一個字節十進制值為[224,239]
E類地址:第一個字節前五位二進制位為11110,第一個字節十進制值為[240,254]。
在全國計算機計算機等級考試一級中,經常給出多個IP地址,判斷這些IP地址所屬的類別,判斷的方法就是根據第一個字節的前幾位二進制值或第一個字節的十進制進行判斷的。
4. IP地址由兩部分組成:網絡號與主機號
身份證號前兩位表示省代碼,3、4位表示市代碼,5、6位表示區代碼……通過每位賦予不同的意義可以分解出身份證的信息。IP地址也一樣,一個IP地址包含兩部分信息,一部分代表IP地址屬於哪個網絡的,另一部分代表IP地址在這網絡中的編號是多少。IP地址屬於哪個網絡稱之為該IP地址的網絡號,IP地址在其網絡中的編號稱之為該IP地址的主機號,而且,網絡號在前,主機號在后。(備注:D、E兩類地址不區分網絡號與主機號)
5. 通過子網掩碼計算網絡號與主機號
子網掩碼與IP地址的表示類似,也是使用4個字節(32bit)表示,也可以用點分十進制表示。只是子網掩碼沒有網絡號、主機號之分了,而且它只有與IP地址一起合用,用於計算IP地址的網絡號與主機號才有意義。
4個字節32位bit位的子網掩碼組成:N個1后面跟着M個0(N+M=32)。
A類地址,子網掩碼為11111111 00000000 00000000 00000000(二進制),即255.0.0.0。
B類地址,子網掩碼為11111111 11111111 00000000 00000000(二進制),即255.255.0.0。
C類地址,子網掩碼為11111111 11111111 11111111 00000000(二進制),即255.255.255.0。
通過子網掩碼計算網絡號與主機號的方法是:將IP地址轉化為二進制數,再與其對應的子網掩碼(二進制數)進行與運算,得到的是網絡號,剩下的是主機號。
例如:
地址 |
計算 |
A類地址:25.4.5.6 子網掩碼:255.0.0.0 |
A類地址二進制為:00011001 00000100 00000101 00000110 子網掩碼二進制為:11111111 00000000 00000000 00000000 00011001 00000100 00000101 00000110 與 11111111 00000000 00000000 00000000 00011001 00000000 00000000 00000000 -> 25.0.0.0 則該IP地址的網絡號為:25.0.0.0 主機號為:4.5.6 |
B類地址:146.100.15.96 子網掩碼:255.255.0.0 |
A類地址二進制為:10010010 01100100 00001111 01100000 子網掩碼二進制為:11111111 11111111 00000000 00000000 10010010 01100100 00001111 01100000 與 11111111 11111111 00000000 00000000 10010010 01100100 00000000 00000000 -> 146.100.0.0 則該IP地址的網絡號為:146.100.0.0 主機號為:15.96 |
C類地址:198.150.1.6 子網掩碼:255.255.255.0 |
A類地址二進制為:11000110 10010110 00000001 00000110 子網掩碼二進制為:11111111 11111111 11111111 00000000 11000110 10010110 00000001 00000110 與 11111111 11111111 11111111 00000000 11000110 10010110 00000001 00000000 -> 198.150.1.0 則該IP地址的網絡號為:198.150.1.0 主機號為:6 |
備注:將點分十進制的IP地址轉化為二進制時,如果轉化后不足8位,要在前面補0,補到8位滿為止。
通過上面的計算,可以觀察到,對於有類地址:A類IP的網絡號就是前面一個字節(或者前面8個bit位),B類IP的網絡號就是前面二個字節(或者前面16個bit位),C類IP的網絡號就是前面三個字節(或者前面18個bit位),剩余部分就是其主機號。
6. IP地址中的保留地址
IP地址中有一些是保留地址,不能在公網中使用的。
序號 |
地址 |
說明 |
1 |
0.0.0.0 |
路由表中默認路由使用 |
2 |
255.255.255.255 |
通常在廣播中使用 |
3 |
127.0.0.0-127.255.255.255 |
常用做循環測試用的,也代表本機地址 |
4 |
10.0.0.0-10.255.255.255 |
A類私有地址(即只能在局域網中使用,不能在公網使用) |
5 |
169.254.0.0-169.254.255.255 |
保留,聽說微軟專用了:) |
6 |
172.16.0.0-172.31.255.255 |
B類私有地址 |
7 |
192.168.0.0-192.168.255.255 |
C類私有地址 |
每個網絡中還有兩個地址不能使用:一個是主機位全為0,用於表示這個網絡使用,另一個是主機位全為1,用於這個網絡的廣播使用。
例如:A類12.5.4.3/8(通常在IP地址后面加上/N用於表示子網掩碼的位數),其IP地址的二進制表示是00001100 00000101 00000100 00000011,子網掩碼的二進制是1111111100000000 00000000 00000000,其網絡號00001100 00000000 00000000 00000000(12.0.0.0),后面三個字節用於表示主機號。主機號上的二進制全為0時,即00001100 00000000 00000000 00000000(12.0.0.0),這個地址不能用於表示主機;當主機號全為1時,即00001100 11111111 11111111 11111111(12.255.255.255),這個地址也不能用於表示主機(它用於12.0.0.0這個網絡的廣播使用)。
7. 三類網絡的數量與每個網絡的主機數
類別 |
網絡數 |
表示主機的二進制位數 |
每個網絡中的主機數 |
A類 |
126 |
后三個字節共24位 |
224-2=16777214 |
B類 |
約214=16384 |
后兩個字節共16位 |
216-2=65534 |
C類 |
約221=2097152 |
后一個字節共8位 |
28-2=254 |
二、可變長度子網掩碼能干什么?
在現實中,如果將一個A類網絡分配給一個組織使用,但是這個組織內部的計算機又沒有16777214台,這就會造成大量的IP地址閑置與浪費。因此,需要有一種更加靈活的方式根據網絡規模的大小來划分網絡。思路就是將一個網絡再划分為更小的多個子網供不同組織使用。這種划分網絡的方式使用的技術就是可變長度子網掩碼(VLSM)。可變長度子網掩碼在公網與企業內部中都可以使用。
采用可變長度子網掩碼,網絡的類別已不重要了,網絡中主機的數量也不是固定的而是依據實際需要定。為了實現靈活的網絡大小規划,在網絡號與主機號中間增加了一個概念——子網。子網概念的增加並沒有改變IP v4中IP地址的實際長度,而是采用:從表示主機的二進制位位數中借用一定的位數來表示子網的方法實現(網絡中主機數會減少)。同時,子網掩碼也不再是8位、16、24位這些8的倍數了,它會根據實際需要使用不同的位數來表示網絡號。
例如:146.45.182.6/20
表示IP地址是146.45.182.6,子網掩碼是20位,即:255.255.240.0
子網掩碼二進制的表示是11111111 11111111 11110000 00000000
20位
該地址如果按類分是個B類地址,子網掩碼應該是255.255.0.0,即16位,主機數應該可達65534。而采用可變長度子網掩碼后,子網掩碼是255.255.240.0,即20位,主機數減少了(用於表示主機的二進制位拿出4位,表示子網)。
計算該IP的網絡號、主機數的方法如下:
146.45.182.6 轉為二進制表示 10010010 00101101 10110110 00000110
255.255.240.0 轉為二進制表示 11111111 11111111 11110000 00000000
兩者進行與運算得 10010010 00101101 10110000 00000000
10010010 00101101 10110000 00000000轉為十進制146.45.176.0,即為網絡號
主機數=232-20-2=4094,前20位二進制位表示網絡號(含子網),剩下12位二進制位表示主機號,可表示212-2個(要扣掉全0,和全1兩個IP)。
網絡中可用的IP地址從:10010010 00101101 10110000 00000001(146.45.176.1)
到:10010010 00101101 10111111 11111110(146.45.191.254)
該IP地址的網絡號:146.45.176.0,廣播地址:146.45.191.255,子網掩碼:255.255.240.0
三、怎么確定可變子網掩碼的長度?
確定可變子網掩碼長度的過程其實就是划分子網的過程。
當從主機位中借1位二進制位時,當前網絡可划分出2個子網,每個子網主機數是原來的1/2-2;當從主機位中借2位二進制位時,當前網絡可划分出4個子網,每個子網主機數是原來的1/4-2……當從主機位中借N位二進制位時,當前網絡可划分為2N個子網,每個子網主機數是原來的2-N-2。
例如:192.168.10.0/24這個C類網絡要划分出2個相等主機數的子網,則
1.網絡號與子網掩碼轉為二進制
網絡號 192.168.10.0 轉為二進制 11000000 10101000 00001010 00000000
子網掩碼 255.255.255.0 轉為二進制 11111111 11111111 11111111 00000000
2.要把一個網絡划分成兩個相等子網,子網掩碼要加1位,變成
11111111 11111111 11111111 10000000
3.網絡號從主機位借一位用於子網11000000 10101000 00001010 XYYYYYYY
X位代表借入的,用於表示子網號,7個Y代表剩余主機位,X有兩個值0和1。
1)為0時:
11000000 10101000 00001010 0YYYYYYY
當Y全為0,表示划分出的這個子網的網絡號,為11000000 10101000 00001010 00000000
其主機可用IP地址范圍是:
11000000 10101000 00001010 0 0000001(192.168.10.1,掩碼:255.255.255.128)
至
11000000 10101000 00001010 0 1111110(192.168.10.126,掩碼:255.255.255.128)
2)為1時
11000000 10101000 00001010 1YYYYYYY
當Y全為0,表示划分出的這個子網的網絡號,為11000000 10101000 00001010 10000000
其主機可用IP地址范圍是:
11000000 10101000 00001010 1 0000001(192.168.10.129,掩碼:255.255.255.128)
至
11000000 10101000 00001010 1 1111110(192.168.10.254,掩碼:255.255.255.128)
綜述,192.168.10.0/24要划分成兩個相等主機數的子網,子網掩碼要改為25位,划分出的兩個子網情況是:
子網1:
網絡號:192.168.10.0 子網掩碼:255.255.255.128 廣播地址:192.168.10.127
主機IP地址范圍:192.168.10.1至192.168.10.126
子網2:
網絡號:192.168.10.128 子網掩碼:255.255.255.128 廣播地址:192.168.10.255
主機IP地址范圍:192.168.10.129至192.168.10.254
在子網划分的實際應用中,制定子網划分的方案,要首先確定子網的規模,即子網包含的主機數是多少,再根據主機數的確定要借用多少主機位用於表示子網。
例如:某學校有個部門獲得一個C類網絡(地址段)的獨立使用權,該網絡(網段)為192.168.20.0。該部門有三間機房和一間辦公室,每間機房有51台計算機,辦公室有10台計算機,機房和辦公室都需要使用該網絡(網段)。請為該部門做一份子網規划方案以滿足這個部門的需要,要求每間機房、辦公室的主機在各自的一個子網中。
對一個網絡進行子網划分,根據其每個子網需要容納的主機數來確定需要從主機位中借幾位的二進制位用於表示子網。假設一個子網的主機數有51台,則主機位最少要使用6個二進制位才能滿足主機的編號,即2n-2>51(n就是二進制的位數)。
在現實應用中,對C類網絡划分子網的應用明顯比A、B兩類多得多。對於一個C類的網絡進行子網划分,可以參照下面總結的這張表:
借主機位數 |
可划分子網數 |
每個子網可容納下主機 |
掩碼 |
1 |
21=2 |
27-2=126 |
255.255.255.128 |
2 |
22=4 |
26-2=62 |
255.255.255.192 |
3 |
23=8 |
25-2=30 |
255.255.255.224 |
4 |
24=16 |
24-2=14 |
255.255.255.240 |
5 |
25=32 |
23-2=6 |
255.255.255.248 |
6 |
26=64 |
22-2=2 |
255.255.255.252 |
7 |
沒划分下去的必要了,沒有用於表示主機的編號了 |
||
8 |
(備注:有些教科書中把划分出的子網再減2,即借來的二進制位全0和全1代表的子網不使用,個人實踐驗證,使用也沒有問題)
通過對上面表格的參照,每間機房51台主機,如果加上網關就是52個IP,30<52<62,為最大化利用IP地址,應采用向主機位借2位的。即:
機房一:子網絡為192.168.20.0,掩碼為255.255.255.192,IP范圍為192.168.20.1至192.168.20.62,廣播地址192.168.20.63;
機房二:子網絡為192.168.20.64,掩碼為255.255.255.192,IP范圍為192.168.20.65至192.168.20.126,廣播地址192.168.20.127;
機房三:子網絡為192.168.20.128,掩碼為255.255.255.192,IP范圍為192.168.20.129至192.168.20.190,廣播地址192.168.20.191;
辦公室10台,如果加上網關是11個IP,6<11<14,為最大化利用IP地址,可采用向主機位借4位。其中借兩位的00、01、10(二進制代碼)的子網已在三個機房中使用,可以從11開始再借2位。即:
子網絡為192.168.20.192,掩碼為255.255.255.240,IP范圍為192.168.20.193至192.168.20.206,廣播地址192.168.20.207。
(備注:如果上面的表述看不清,就把點分十進制轉化為二進制表示會有助於理解)
四、PacketTracer模擬器中模擬
拓撲圖:
在三層交換機Multilayer Switch0上做如下配置:
Switch>enable
Switch#configure terminal
Switch(config)#interface f0/1
Switch(config-if)#no switchport
Switch(config-if)#ip address 192.168.20.1 255.255.255.192
Switch(config-if)#no shutdown
Switch(config-if)#interface f0/2
Switch(config-if)#no switchport
Switch(config-if)#ip address 192.168.20.65255.255.255.192
Switch(config-if)#no shutdown
Switch(config-if)#interface f0/3
Switch(config-if)#no switchport
Switch(config-if)#ip address 192.168.20.129255.255.255.192
Switch(config-if)#no shutdown
Switch(config-if)#interface f0/4
Switch(config-if)#no switchport
Switch(config-if)#ip address 192.168.20.193255.255.255.240
Switch(config-if)#no shutdown
Switch(config-if)#interface f0/5
Switch(config-if)#no switchport
Switch(config-if)#ip address 172.16.0.1 255.255.255.252
Switch(config-if)#no shutdown
Switch(config-if)#exit
Switch(config)#ip routing
Switch(config)#ip route 0.0.0.0 0.0.0.0 172.16.0.2
在Router0上做如下配置:
Router>enable
Router#configure terminal
Router(config)#interface f0/0
Router(config-if)#ip address 172.16.0.2 255.255.255.252
Router(config-if)#no shutdown
Router(config-if)#interface f0/1
Router(config-if)#ip address 192.168.30.1 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#exit
Router(config)#ip route192.168.20.0 255.255.255.0 172.16.0.1
在Router0上做回程路由時,采用路由匯聚將到達4個子網的4條路由匯聚成一條,這也是采用VLSM划分子網帶來的一個好處,減少了路由條目。