2008年5月2日 星期五

VLSM計算

VLSM計算

分類:技術交流
2008/04/24 14:25
VLSM
全稱:Variable Length Subnet Mask
譯成是可變長度的子網路遮罩,
它的概念是讓我們可以在相同級別的位址,再使用不同的Subnet Mask,
好把有限的IP位址做更有效率的運用。

例如我們從ISP得到一個Class C網路,193.1.1.0/24。
但考量到公司部門的區分,要規劃成六個子網路。
這樣狀況的作法,就是一個VLSM的展現。

我先離題講講二進位的換算。
把以下幾個數據背起來...
2^0=1
2^1=2
2^2=4
2^3=8
2^4=16
2^5=32
2^6=64
2^7=128
2^8=256

十進位換二進位實例:
Q:193 => ?

2 L 193 餘 1
2 L 96 餘 0
2 L 48 餘 0
2 L 24 餘 0
2 L 12 餘 0
2 L 6 餘 0
2 L 3 餘 1
2 L 1 <= 再除以2的餘數為 1
(L是運算的圖形符號,不要誤會了!)

把所有的餘數由底往上檢視。得出 11000001 !
就是十進位制192換算成二進位制是 11000001 。
只要是小於256的數字,都正好能這樣得出8組餘數。

另外也能用一種簡單的算數換算。
原則是用193依次去減128,64,32,16,8,4,2,1。
然後減出負數填 0,減出正數填 1 ,減成 0 也填 1。
於是...
193 -128 = 65 => 1
65 -64 = 1 => 1
1 - 32 = -47 => 0
1- 16 = -15 => 0
1- 8 = -73 => 0
1- 4 = -3 => 0
1- 2 = -1 => 0
1- 1 = 0 => 1

(這個例子也能看出,除法和減法的一些異同,所以說,乘法是加法的延伸,除法是減法的延伸。)
嘿嘿!把最右側的數字,由上往下排列起來。也會是 11000001 !
和上面那個用連續短除法,得出的結果一樣。

OK!回來講 193.1.1.0/24 怎麼再分成六個子網路。
193.1.1.0 這個NETWORK,就等於是 11000001.00000001.00000001.00000000 。
遮罩值24,就是說它是一個C級網路,用 255.255.255.0 去 AND 運算出一個有254主機可用的網域出來。
但是我們還要再切成 6 個子網路啊,那該怎麼辦?
VLSM教我們向原本用來算HOST ID的遮罩值,「借」來當網路識別(NETWORK ID)的一部份。
於是把最後的八個位元(bit,等於是一個Byte),由左至右開始「借」來用。
借一個位元,等於是把遮罩值最後一個Byte從 0 變成 128 ,即 10000000 。
產生兩個子網路,193.1.1.1~193.1.1.127(網路193.1.1.0/25)和193.1.1.129~193.1.1.254(193.1.1.128/25)。

借兩個位元,那麼遮罩值最後一個Byte變成192,也就是11000000。
產生出四個子網路,193.1.1.0/26,193.1.1.64/26,193.1.1.128/26,193.1.1.192/26。

借三個位元,遮罩值最後一個Byte是224,也就是11100000。
產生出八個子網路,193.1.1.0/27,193.1.1.32/27,193.1.1.64/27,193.1.1.96/27,193.1.1.128/27,193.1.1.160/27,193.1.1.192/27,193.1.1.224/27。

很接近我們的需求了,我們要六個。
所以可以採納用遮罩值 255.255.255.224 來運用,從上面推算出的八個子網路中,選出六個來用。
而在早期,有些路由器(Router),不支援VLSM,也就是說,它分不出 193.1.1.0/27 和 193.1.1.0/24 的差異。
所以會有一個規定,第一個和最後一個子網路不能用。
那麼我們就要使用從193.1.1.32/27 到 193.1.1.192/27,截頭去尾,剛好六個,還附合我們的需求!

不過,目前的路由器都支援了VLSM,不用擔心。

最後,整理一下。
可以得出,當我們有一個 Class C 網路時,可以再有 2, 4, 8, 16, 32, 64,這些數量的子網路分法。
兩個子網路的遮罩值是 255.255.255.128 ! (2^7=128 )各有128 -2 = 126台主機可配IP。即有126 HOST ID。
四個子網路的遮罩值是 255.255.255.192 ! (2^7 + 2^6 = 192 )各有64 -2 = 62台主機可配IP。即有62 HOST ID。
八個子網路的遮罩值是 255.255.255.224 ! (2^7 + 2^6 + 2^5 = 224 )各有32 -2 = 30台主機可配IP。即有30 HOST ID。
16個子網路的遮罩值是 255.255.255.240 ! (2^7 + 2^6 + 2^5 + 2^4 = 240 )各有16 -2 = 14台主機可配IP。即有14 HOST ID。
32個子網路的遮罩值是 255.255.255.248 ! (2^7 + 2^6 + 2^5 + 2^4 + 2^3 = 248) 各有8 -2 = 6台主機可配IP。即有6 HOST ID。
64個子網路的遮罩值是 255.255.255.252 ! (2^7 + 2^6 + 2^5 + 2^4 + 2^3 + 2^2 = 252) 各有4 -2 = 2台主機可配IP。即有2 HOST ID。

沒有再分128個子網路的算法了,因為分成64個子網路時,各區網只能有兩台主機。
再往下細分,還有什麼意義!

可參考文件:
某網工教學資料
http://life.iiietc.ncu.edu.tw/xms/content/show.php?id=2676

二進制 Wikipedia
http://zh.wikipedia.org/w/index.php?title=%E4%BA%8C%E8%BF%9B%E5%88%B6&variant=zh-hant

7 則留言:

對妳的思念瀰漫我整個的世界 提到...

受教啦~~ 感謝吳大無私的分享

對妳的思念瀰漫我整個的世界 提到...
網誌管理員已經移除這則留言。
Unknown 提到...

雖然IPv6會是未來主流。
但IPv4的觀念,還是會在區網中延用下去的。

吉格艾諾 提到...

193.1.1.0 這個NETWORK,就等於是 11000001.00000001.00000001.00000000 。
遮罩值24,就是說它是一個C級網路,用 255.255.255.0 去 AND 運算出一個有254主機可用的網域出來。
----------------------------------
這段話有點問題,以下是觀念釐清

一個網路 (也就是這段話提到的Network) 是哪個層級,是用 Network ID 的前幾個位元來區分,與遮罩完全無關。

示意如下:

Class A: 0xxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx
Class B: 10xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx
Class C: 110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

故文中所舉的193.1.1.0,被劃分為Class C的原因,是其二進位碼的前三個位元為110,而不是因為使用24Bit的遮罩。

吉格艾諾 提到...

193.1.1.0 這個NETWORK,就等於是 11000001.00000001.00000001.00000000 。
遮罩值24,就是說它是一個C級網路,用 255.255.255.0 去 AND 運算出一個有254主機可用的網域出來。
----------------------------------
這段話有點問題,以下是觀念釐清

一個網路 (也就是這段話提到的Network) 是哪個層級,是用 Network ID 的前幾個位元來區分,與遮罩完全無關。

示意如下:

Class A: 0xxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx
Class B: 10xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx
Class C: 110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

故文中所舉的193.1.1.0,被劃分為Class C的原因,是其Network ID二進位碼的前三個位元為110,而不是因為使用24Bit的遮罩。

Unknown 提到...

感謝吉格艾諾的指正!
你的說法,的確才符合RFC的定義。

只是原發文重點在闡述如何切割子網域。
所以沒對ABC級的定義多加考證和解說,愧對網友了……

吉格艾諾 提到...

切割子網域,和子網路切割 (切割子網路) 又是不一樣的東西了。

切割子網域:主要操作對象是 Domain name (網域名稱) ,用意則是針對網域名稱做「層級劃分」,這個動作會有授權的問題,沒設定好就會天下大亂。出狀況的層級愈高,影響的範圍愈大 (例如根網域掛掉,全球的網際網路服務都會停擺)。

切割子網路:主要的操作對象是 IP 位址,一般所認知的用意,是為了分散區域網路的流量。這個動作基本上不會有授權問題 (暫時排除必須申請大範圍真實 IP 位址的情況),弄錯頂多造成某範圍的區域網路無法運作而已。

搜尋此網誌

本站大事記

這個部落格(網站)內容以分享LINUX和延伸出的技術文章為主!
特別是為了工作和進修需要,搜集了不少網站連結。
希望對來這裡觀文的朋友們,有提供一些有用的資訊或文章。
但這裡的文章中,也包含個人的心情扎記和隨興言談……
若是當中沒有對上你的口味,請多包涵!

原「琳娜絲與希斯寇的邂逅」,改名為「愛上琳娜絲」!

原「琳娜絲與希斯寇的邂逅」,改名為「愛上琳娜絲」!
--原序文--
就是當LINUX遇上CISCO啦!他們的結合還能作什麼事…不就是讓這個世界的網路,串…串起來啊…不然你們那能上這網站看部落格!