[MIS] 計算SubnetMask

摘要:[MIS] 計算SubnetMask

一.為何要使用subnet mask



在IPv4的協定下,IP位址是由4個8位元組成的數字來表達,如200.1.1.130。

一個IP位址分為網路位址(Network Address)+主機位址(Host Address),依網路位址所佔的位元數不同而分為A/B/C/D級網路。

IP數字的0及255是預設的主機及廣播位址無法使用,所以每個數字可用的IP位址變化只有254個(256-2),這也就是一般C級網段的Gateway IP都預設x.x.x.254的緣故。

IPv4的位址因為ABCD型網段的配法而無法完全應用到254四次方那樣多的可用IP值,隨著世界上主機數遞增,IP位址漸漸不夠用了!在IPv6的應用尚未完全普及之時,就得利用切分子網路(Subnet)的方式來有效分配IP位址。

將同一個IP位址等級的網路再切割成數個子網路,如此網路規模較小,避免降低網路效能。

切割後的子網路可正常與其他網路互相連接。

 

二.如何計算 subnet mask

某台網路主機,它的IP及子網路表示法為200.1.1.130/28,從這樣簡短的字句,你該立刻看出什麼呢?

1.子網路的遮罩位址為何?
該數字28是代表遮罩IP位址的網路位址所佔位元數,即:11111111.11111111.11111111.11110000,遮罩位元為1者是讓IP通過(合法),0者為阻擋,所以從上述的32位元分布,我們得知它的網段型態是屬於C型位址,因此十進位的遮罩位址就是255.255.255.240(只需要求算右邊那四個1),即 128 + 64 + 32 + 16 = 240

2.可切成幾個子網路?
數字1是讓IP通過,所以只要注意1的位元變化組合(因為後面的0怎麼變化都會被擋住),(1111)= 2^4 = 16,共有16種變化。

3.每個子網段有幾個IP值?
子網路ip數為 256/16 = 16 (有效IP為14,因為頭尾IP要去除)

4.每個子網路的IP起迄位址?
200.1.1.0-15,200.1.1.16-31,200.1.1.32-48,...,200.1.1.240-255
例如,主機IP為200.1.1.130/28的所在子網路起迄IP為: 130/16 = 8, 16 * 8 = 128,故在 200.1.1.128-143媕Y。

假如上述你都了解的話,讓我們反過來思考,用子網路IP起迄位址,反推出它的IP/Subnet表達格式?例如,我們要讓某C級網段(192.83.184.*)下的IP合法通過,這組子網路該怎麼用IP/Subnet格式表示呢?

首先,第四個IP值不遮封,因此遮罩IP位址的2進位是: 11111111.11111111.11111111.00000000 (255.255.255.0),其網路位址位元數共24個,因此寫法是: 192.83.184.0/24,依此類推,B級網段就是192.84.0.0/16,全部開放就是: 0.0.0.0/0。所以,從IP位址的二進位表示法的位元分布,就可看出其背後的隱藏資訊,只要您能了解這些概念就可直接看出來,不需再作IP(192.83.184.0)轉二進位的運算(江湖一點訣)。

 

三.結論

(結論的部份,是我自己綜合網路上關於子網路遮罩教學的文章,自己歸納出來的簡單算法,不曉得是不是真的完全適用,歡迎指教!)

如果要從IP資料反推出 subnet mask 的話,只要用256減去自己所配發到的IP總數,就可以知道自己的 subnet mask 是多少 (適用於class c 的網段)

例如:

分配到的IP為 200.1.1.128-143 共 16 個 IP,那麼用 256-16 = 240 即 subnet mask 就是 255.255.255.240

 

 

參考資料:

http://tw.group.knowledge.yahoo.com/computer-skill/listitem/view?iid=104

http://ithelp.ithome.com.tw/question/10007321

http://ithelp.ithome.com.tw/question/10016571

http://jangmt.com/wiki/index.php?title=Ccna_introduction_3#.E5.AD.90.E7.B6.B2.E8.B7.AF.E5.88.87.E5.89.B2.E7.9A.84.E5.9F.BA.E7.A4.8E

寫得很好的範例

http://www.homeweb.idv.tw/148?category=9