在學(xué)習(xí)可變長(zhǎng)度子網(wǎng)掩碼時(shí),必須先熟練掌握二進(jìn)制與十進(jìn)制的轉(zhuǎn)化、計(jì)算機(jī)中數(shù)據(jù)的單位(字節(jié)、位)等知識(shí)。
一、什么是可變長(zhǎng)度子網(wǎng)掩碼?
要理解可變長(zhǎng)度子網(wǎng)掩碼,先要理解子網(wǎng)掩碼;要理解子網(wǎng)掩碼,先要理解IP地址的組成。
在互聯(lián)網(wǎng)上,每臺(tái)計(jì)算機(jī)必須有一個(gè)唯一的IP地址作用這臺(tái)計(jì)算機(jī)在身份標(biāo)志,可以將IP地址理解成一臺(tái)計(jì)算機(jī)的×××號(hào)碼。在互聯(lián)網(wǎng)上不允許出現(xiàn)相同的IP地址(NAT技術(shù)另論,它是一種IP地址共享技術(shù),用于解決IP地址資源不足的問題)。×××的編號(hào)要按照一定的規(guī)則進(jìn)行,同樣,IP地址的編號(hào)也要按照一定的規(guī)則進(jìn)行。
IP地址(本文的IP指的都是IP v4)編號(hào)規(guī)則或特征:
- 一個(gè)IP地址由4個(gè)字節(jié)組成,采用點(diǎn)分十進(jìn)制方式表示
例如,一個(gè)4個(gè)字節(jié)的IP地址的二進(jìn)制形式是:11000000 10101000 11000111 00000001,其點(diǎn)分十進(jìn)制表示就是將每個(gè)字節(jié)依次轉(zhuǎn)化為十進(jìn)制并用點(diǎn)分隔開,即:192.168.199.1。
在全國(guó)計(jì)算機(jī)等級(jí)考試一級(jí)中常會(huì)出現(xiàn)一道這樣的題目:
判讀以下IP地址哪個(gè)是正確的IP地址()
(A)192.256.4.4 (B)124.45.2.3.3 (C)45.21.4.3 (D)78.4.5
很明顯正確答案是C。
A錯(cuò)在點(diǎn)分十進(jìn)制表示的IP地址中,每個(gè)點(diǎn)分隔開的數(shù)值不能大于255,因?yàn)橐粋€(gè)字節(jié)轉(zhuǎn)化為十進(jìn)制最大為255;B、D錯(cuò)在IP使用點(diǎn)分十制表示是4段(三個(gè)點(diǎn)分隔開4個(gè)十進(jìn)制數(shù))。
2. IP地址的分類

IP地址以第一個(gè)字節(jié)進(jìn)行分類的,可分為五類:A、B、C、D、E。
D類地址用于多點(diǎn)廣播,E類地址用于科研、保留(目前找不到具體的應(yīng)用資料),這兩類地址不在本文中討論。
3.各類IP地址的特征及判斷依據(jù)
A類地址:第一個(gè)字節(jié)第一位二進(jìn)制位為0,第一個(gè)字節(jié)十進(jìn)制值為[1,126];
B類地址:第一個(gè)字節(jié)前兩位二進(jìn)制位為10,第一個(gè)字節(jié)十進(jìn)制值為[128,191];
C類地址:第一個(gè)字節(jié)前三位二進(jìn)制位為110,第一個(gè)字節(jié)十進(jìn)制值為[192,223];
D類地址:第一個(gè)字節(jié)前四位二進(jìn)制位為1110,第一個(gè)字節(jié)十進(jìn)制值為[224,239]
E類地址:第一個(gè)字節(jié)前五位二進(jìn)制位為11110,第一個(gè)字節(jié)十進(jìn)制值為[240,254]。
在全國(guó)計(jì)算機(jī)計(jì)算機(jī)等級(jí)考試一級(jí)中,經(jīng)常給出多個(gè)IP地址,判斷這些IP地址所屬的類別,判斷的方法就是根據(jù)第一個(gè)字節(jié)的前幾位二進(jìn)制值或第一個(gè)字節(jié)的十進(jìn)制進(jìn)行判斷的。
- IP地址由兩部分組成:網(wǎng)絡(luò)號(hào)與主機(jī)號(hào)
×××號(hào)前兩位表示省代碼,3、4位表示市代碼,5、6位表示區(qū)代碼……通過每位賦予不同的意義可以分解出×××的信息。IP地址也一樣,一個(gè)IP地址包含兩部分信息,一部分代表IP地址屬于哪個(gè)網(wǎng)絡(luò)的,另一部分代表IP地址在這網(wǎng)絡(luò)中的編號(hào)是多少。IP地址屬于哪個(gè)網(wǎng)絡(luò)稱之為該IP地址的網(wǎng)絡(luò)號(hào),IP地址在其網(wǎng)絡(luò)中的編號(hào)稱之為該IP地址的主機(jī)號(hào),而且,網(wǎng)絡(luò)號(hào)在前,主機(jī)號(hào)在后。(備注:D、E兩類地址不區(qū)分網(wǎng)絡(luò)號(hào)與主機(jī)號(hào))
5. 通過子網(wǎng)掩碼計(jì)算網(wǎng)絡(luò)號(hào)與主機(jī)號(hào)
子網(wǎng)掩碼與IP地址的表示類似,也是使用4個(gè)字節(jié)(32bit)表示,也可以用點(diǎn)分十進(jìn)制表示。只是子網(wǎng)掩碼沒有網(wǎng)絡(luò)號(hào)、主機(jī)號(hào)之分了,而且它只有與IP地址一起合用,用于計(jì)算IP地址的網(wǎng)絡(luò)號(hào)與主機(jī)號(hào)才有意義。
4個(gè)字節(jié)32位bit位的子網(wǎng)掩碼組成:N個(gè)1后面跟著M個(gè)0(N+M=32)。
A類地址,子網(wǎng)掩碼為11111111 00000000 00000000 00000000(二進(jìn)制),即255.0.0.0。
B類地址,子網(wǎng)掩碼為11111111 11111111 00000000 00000000(二進(jìn)制),即255.255.0.0。
C類地址,子網(wǎng)掩碼為11111111 11111111 11111111 00000000(二進(jìn)制),即255.255.255.0。
通過子網(wǎng)掩碼計(jì)算網(wǎng)絡(luò)號(hào)與主機(jī)號(hào)的方法是:將IP地址轉(zhuǎn)化為二進(jìn)制數(shù),再與其對(duì)應(yīng)的子網(wǎng)掩碼(二進(jìn)制數(shù))進(jìn)行與運(yùn)算,得到的是網(wǎng)絡(luò)號(hào),剩下的是主機(jī)號(hào)。
例如:

備注:將點(diǎn)分十進(jìn)制的IP地址轉(zhuǎn)化為二進(jìn)制時(shí),如果轉(zhuǎn)化后不足8位,要在前面補(bǔ)0,補(bǔ)到8位滿為止。
通過上面的計(jì)算,可以觀察到,對(duì)于有類地址:A類IP的網(wǎng)絡(luò)號(hào)就是前面一個(gè)字節(jié)(或者前面8個(gè)bit位),B類IP的網(wǎng)絡(luò)號(hào)就是前面二個(gè)字節(jié)(或者前面16個(gè)bit位),C類IP的網(wǎng)絡(luò)號(hào)就是前面三個(gè)字節(jié)(或者前面18個(gè)bit位),剩余部分就是其主機(jī)號(hào)。
6. IP地址中的保留地址
IP地址中有一些是保留地址,不能在公網(wǎng)中使用的。

每個(gè)網(wǎng)絡(luò)中還有兩個(gè)地址不能使用:一個(gè)是主機(jī)位全為0,用于表示這個(gè)網(wǎng)絡(luò)使用,另一個(gè)是主機(jī)位全為1,用于這個(gè)網(wǎng)絡(luò)的廣播使用。
例如:A類12.5.4.3/8(通常在IP地址后面加上/N用于表示子網(wǎng)掩碼的位數(shù)),其IP地址的二進(jìn)制表示是00001100 00000101 00000100 00000011,子網(wǎng)掩碼的二進(jìn)制是1111111100000000 00000000 00000000,其網(wǎng)絡(luò)號(hào)00001100 00000000 00000000 00000000(12.0.0.0),后面三個(gè)字節(jié)用于表示主機(jī)號(hào)。主機(jī)號(hào)上的二進(jìn)制全為0時(shí),即00001100 00000000 00000000 00000000(12.0.0.0),這個(gè)地址不能用于表示主機(jī);當(dāng)主機(jī)號(hào)全為1時(shí),即00001100 11111111 11111111 11111111(12.255.255.255),這個(gè)地址也不能用于表示主機(jī)(它用于12.0.0.0這個(gè)網(wǎng)絡(luò)的廣播使用)。
7. 三類網(wǎng)絡(luò)的數(shù)量與每個(gè)網(wǎng)絡(luò)的主機(jī)數(shù)

二、可變長(zhǎng)度子網(wǎng)掩碼能干什么?
在現(xiàn)實(shí)中,如果將一個(gè)A類網(wǎng)絡(luò)分配給一個(gè)組織使用,但是這個(gè)組織內(nèi)部的計(jì)算機(jī)又沒有16777214臺(tái),這就會(huì)造成大量的IP地址閑置與浪費(fèi)。因此,需要有一種更加靈活的方式根據(jù)網(wǎng)絡(luò)規(guī)模的大小來劃分網(wǎng)絡(luò)。思路就是將一個(gè)網(wǎng)絡(luò)再劃分為更小的多個(gè)子網(wǎng)供不同組織使用。這種劃分網(wǎng)絡(luò)的方式使用的技術(shù)就是可變長(zhǎng)度子網(wǎng)掩碼(VLSM)??勺冮L(zhǎng)度子網(wǎng)掩碼在公網(wǎng)與企業(yè)內(nèi)部中都可以使用。
采用可變長(zhǎng)度子網(wǎng)掩碼,網(wǎng)絡(luò)的類別已不重要了,網(wǎng)絡(luò)中主機(jī)的數(shù)量也不是固定的而是依據(jù)實(shí)際需要定。為了實(shí)現(xiàn)靈活的網(wǎng)絡(luò)大小規(guī)劃,在網(wǎng)絡(luò)號(hào)與主機(jī)號(hào)中間增加了一個(gè)概念——子網(wǎng)。子網(wǎng)概念的增加并沒有改變IP v4中IP地址的實(shí)際長(zhǎng)度,而是采用:從表示主機(jī)的二進(jìn)制位位數(shù)中借用一定的位數(shù)來表示子網(wǎng)的方法實(shí)現(xiàn)(網(wǎng)絡(luò)中主機(jī)數(shù)會(huì)減少)。同時(shí),子網(wǎng)掩碼也不再是8位、16、24位這些8的倍數(shù)了,它會(huì)根據(jù)實(shí)際需要使用不同的位數(shù)來表示網(wǎng)絡(luò)號(hào)。
例如:146.45.182.6/20
表示IP地址是146.45.182.6,子網(wǎng)掩碼是20位,即:255.255.240.0
子網(wǎng)掩碼二進(jìn)制的表示是11111111 11111111 11110000 00000000
20位
該地址如果按類分是個(gè)B類地址,子網(wǎng)掩碼應(yīng)該是255.255.0.0,即16位,主機(jī)數(shù)應(yīng)該可達(dá)65534。而采用可變長(zhǎng)度子網(wǎng)掩碼后,子網(wǎng)掩碼是255.255.240.0,即20位,主機(jī)數(shù)減少了(用于表示主機(jī)的二進(jìn)制位拿出4位,表示子網(wǎng))。
計(jì)算該IP的網(wǎng)絡(luò)號(hào)、主機(jī)數(shù)的方法如下:
146.45.182.6 轉(zhuǎn)為二進(jìn)制表示 10010010 00101101 10110110 00000110
255.255.240.0 轉(zhuǎn)為二進(jìn)制表示 11111111 11111111 11110000 00000000
兩者進(jìn)行與運(yùn)算得 10010010 00101101 10110000 00000000
10010010 00101101 10110000 00000000轉(zhuǎn)為十進(jìn)制146.45.176.0,即為網(wǎng)絡(luò)號(hào)
主機(jī)數(shù)=232-20-2=4094,前20位二進(jìn)制位表示網(wǎng)絡(luò)號(hào)(含子網(wǎng)),剩下12位二進(jìn)制位表示主機(jī)號(hào),可表示212-2個(gè)(要扣掉全0,和全1兩個(gè)IP)。
網(wǎng)絡(luò)中可用的IP地址從:10010010 00101101 10110000 00000001(146.45.176.1)
到:10010010 00101101 10111111 11111110(146.45.191.254)
該IP地址的網(wǎng)絡(luò)號(hào):146.45.176.0,廣播地址:146.45.191.255,子網(wǎng)掩碼:255.255.240.0
三、怎么確定可變子網(wǎng)掩碼的長(zhǎng)度?
確定可變子網(wǎng)掩碼長(zhǎng)度的過程其實(shí)就是劃分子網(wǎng)的過程。
當(dāng)從主機(jī)位中借1位二進(jìn)制位時(shí),當(dāng)前網(wǎng)絡(luò)可劃分出2個(gè)子網(wǎng),每個(gè)子網(wǎng)主機(jī)數(shù)是原來的1/2-2;當(dāng)從主機(jī)位中借2位二進(jìn)制位時(shí),當(dāng)前網(wǎng)絡(luò)可劃分出4個(gè)子網(wǎng),每個(gè)子網(wǎng)主機(jī)數(shù)是原來的1/4-2……當(dāng)從主機(jī)位中借N位二進(jìn)制位時(shí),當(dāng)前網(wǎng)絡(luò)可劃分為2N個(gè)子網(wǎng),每個(gè)子網(wǎng)主機(jī)數(shù)是原來的2-N-2。
例如:192.168.10.0/24這個(gè)C類網(wǎng)絡(luò)要?jiǎng)澐殖?個(gè)相等主機(jī)數(shù)的子網(wǎng),則
1.網(wǎng)絡(luò)號(hào)與子網(wǎng)掩碼轉(zhuǎn)為二進(jìn)制
網(wǎng)絡(luò)號(hào) 192.168.10.0 轉(zhuǎn)為二進(jìn)制 11000000 10101000 00001010 00000000
子網(wǎng)掩碼 255.255.255.0 轉(zhuǎn)為二進(jìn)制 11111111 11111111 11111111 00000000
2.要把一個(gè)網(wǎng)絡(luò)劃分成兩個(gè)相等子網(wǎng),子網(wǎng)掩碼要加1位,變成
11111111 11111111 11111111 10000000
3.網(wǎng)絡(luò)號(hào)從主機(jī)位借一位用于子網(wǎng)11000000 10101000 00001010 XYYYYYYY
X位代表借入的,用于表示子網(wǎng)號(hào),7個(gè)Y代表剩余主機(jī)位,X有兩個(gè)值0和1。
1)為0時(shí):
11000000 10101000 00001010 0YYYYYYY
當(dāng)Y全為0,表示劃分出的這個(gè)子網(wǎng)的網(wǎng)絡(luò)號(hào),為11000000 10101000 00001010 00000000
其主機(jī)可用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時(shí)
11000000 10101000 00001010 1YYYYYYY
當(dāng)Y全為0,表示劃分出的這個(gè)子網(wǎng)的網(wǎng)絡(luò)號(hào),為11000000 10101000 00001010 10000000
其主機(jī)可用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要?jiǎng)澐殖蓛蓚€(gè)相等主機(jī)數(shù)的子網(wǎng),子網(wǎng)掩碼要改為25位,劃分出的兩個(gè)子網(wǎng)情況是:
子網(wǎng)1:
網(wǎng)絡(luò)號(hào):192.168.10.0 子網(wǎng)掩碼:255.255.255.128 廣播地址:192.168.10.127
主機(jī)IP地址范圍:192.168.10.1至192.168.10.126
子網(wǎng)2:
網(wǎng)絡(luò)號(hào):192.168.10.128 子網(wǎng)掩碼:255.255.255.128 廣播地址:192.168.10.255
主機(jī)IP地址范圍:192.168.10.129至192.168.10.254
在子網(wǎng)劃分的實(shí)際應(yīng)用中,制定子網(wǎng)劃分的方案,要首先確定子網(wǎng)的規(guī)模,即子網(wǎng)包含的主機(jī)數(shù)是多少,再根據(jù)主機(jī)數(shù)的確定要借用多少主機(jī)位用于表示子網(wǎng)。
例如:某學(xué)校有個(gè)部門獲得一個(gè)C類網(wǎng)絡(luò)(地址段)的獨(dú)立使用權(quán),該網(wǎng)絡(luò)(網(wǎng)段)為192.168.20.0。該部門有三間機(jī)房和一間辦公室,每間機(jī)房有51臺(tái)計(jì)算機(jī),辦公室有10臺(tái)計(jì)算機(jī),機(jī)房和辦公室都需要使用該網(wǎng)絡(luò)(網(wǎng)段)。請(qǐng)為該部門做一份子網(wǎng)規(guī)劃方案以滿足這個(gè)部門的需要,要求每間機(jī)房、辦公室的主機(jī)在各自的一個(gè)子網(wǎng)中。
對(duì)一個(gè)網(wǎng)絡(luò)進(jìn)行子網(wǎng)劃分,根據(jù)其每個(gè)子網(wǎng)需要容納的主機(jī)數(shù)來確定需要從主機(jī)位中借幾位的二進(jìn)制位用于表示子網(wǎng)。假設(shè)一個(gè)子網(wǎng)的主機(jī)數(shù)有51臺(tái),則主機(jī)位最少要使用6個(gè)二進(jìn)制位才能滿足主機(jī)的編號(hào),即2n-2>51(n就是二進(jìn)制的位數(shù))。
在現(xiàn)實(shí)應(yīng)用中,對(duì)C類網(wǎng)絡(luò)劃分子網(wǎng)的應(yīng)用明顯比A、B兩類多得多。對(duì)于一個(gè)C類的網(wǎng)絡(luò)進(jìn)行子網(wǎng)劃分,可以參照下面總結(jié)的這張表:

(備注:有些教科書中把劃分出的子網(wǎng)再減2,即借來的二進(jìn)制位全0和全1代表的子網(wǎng)不使用,個(gè)人實(shí)踐驗(yàn)證,使用也沒有問題)
通過對(duì)上面表格的參照,每間機(jī)房51臺(tái)主機(jī),如果加上網(wǎng)關(guān)就是52個(gè)IP,30<52<62,為最大化利用IP地址,應(yīng)采用向主機(jī)位借2位的。即:
機(jī)房一:子網(wǎng)絡(luò)為192.168.20.0,掩碼為255.255.255.192,IP范圍為192.168.20.1至192.168.20.62,廣播地址192.168.20.63;
機(jī)房二:子網(wǎng)絡(luò)為192.168.20.64,掩碼為255.255.255.192,IP范圍為192.168.20.65至192.168.20.126,廣播地址192.168.20.127;
機(jī)房三:子網(wǎng)絡(luò)為192.168.20.128,掩碼為255.255.255.192,IP范圍為192.168.20.129至192.168.20.190,廣播地址192.168.20.191;
辦公室10臺(tái),如果加上網(wǎng)關(guān)是11個(gè)IP,6<11<14,為最大化利用IP地址,可采用向主機(jī)位借4位。其中借兩位的00、01、10(二進(jìn)制代碼)的子網(wǎng)已在三個(gè)機(jī)房中使用,可以從11開始再借2位。即:
子網(wǎng)絡(luò)為192.168.20.192,掩碼為255.255.255.240,IP范圍為192.168.20.193至192.168.20.206,廣播地址192.168.20.207。
(備注:如果上面的表述看不清,就把點(diǎn)分十進(jìn)制轉(zhuǎn)化為二進(jìn)制表示會(huì)有助于理解)
四、PacketTracer模擬器中模擬
拓?fù)鋱D:
在三層交換機(jī)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上做回程路由時(shí),采用路由匯聚將到達(dá)4個(gè)子網(wǎng)的4條路由匯聚成一條,這也是采用VLSM劃分子網(wǎng)帶來的一個(gè)好處,減少了路由條目。





