1. 程式人生 > >Netmask (子網掩碼 )的用途與子網路的切分

Netmask (子網掩碼 )的用途與子網路的切分

Netmask(子網掩碼達成子網路的切分的最重要引數。

以 192.168.0.0~192.168.0.255 這個網域為範例演示Netmask

IP 網段可以分為 Net_ID 與 Host_ID,既然 Net_ID 是不可變的,那就假設他所佔據的 bits 已經被用光了 ( 全部
為 1 ),而 Host_ID 是可變的,就將他想成是保留著 ( 全部為 0 ),所以, Netmask 的表示就成為:

11000000.10101000.00000000.00000000  192.168.0.0
11000000.10101000.00000000.11111111  192.168.0.255
|----------Net_ID---------|-host--|


11111111.11111111.11111111.00000000 <== Netmask 二進位制
255 . 255 . 255 . 0 <== Netmask 十進位制

Class A, B, C 三個等級的 Netmask 表示方式:
A Class : 11111111.00000000.00000000.00000000 ==> 255. 0. 0. 0
B Class : 11111111.11111111.00000000.00000000 ==> 255.255. 0. 0
C Class : 11111111.11111111.11111111.00000000 ==> 255.255.255. 0

在 192.168.0.0 ~ 192.168.0.255 這個 IP 網段裡面的相關網路引數:

Netmask: 255.255.255.0 <==網域定義中,最重要的引數
Network: 192.168.0.0 <==第一個 IP
Broadcast: 192.168.0.255 <==最後一個 IP
可用以設定成為主機的 IP 數:
192.168.0.1 ~ 192.168.0.254

我們常常會以 Network 以及 Netmask 來表示一個網域:

Network/Netmask
192.168.0.0/255.255.255.0
192.168.0.0/24 <==因為 Net_ID 共有 24 個 bits

除了C Class之外,網域是可以切的更細。

例如C Class 的Net_ID佔24bits,將第一個Host_ID拿來做Net_ID,則整個Net_ID佔25bits,而Host_ID減少為佔7bits。在這樣的情況下,原來的一個 C Class 的網域就可以被切分為兩個子網域,而每個子網域就有256/2 - 2 = 126個可用的 IP 了。如此,該網域當中的主機在進行邏輯廣播時,響應的主機數量就少了一半, 優化網路效能。


原本的 C Class 的 Net_ID 與 Host_ID 的分別
11000000.10101000.00000000.00000000 Network: 192.168.0.0     (第一個IP)
11000000.10101000.00000000.11111111 Broadcast: 192.168.0.255  (最後一個 IP
|----------Net_ID---------|-host--|


切成兩個子網路之後的 Net_ID 與 Host_ID 為何?
11000000.10101000.00000000.0 0000000 多了一個 Net_ID 了, 為 0
11000000.10101000.00000000.1 0000000 多了一個 Net_ID 了, 為 1
|----------Net_ID-----------|-host--|


第一個子網路
Network:  11000000.10101000.00000000.0 0000000  192.168.0.0
Broadcast: 11000000.10101000.00000000.0 1111111  192.168.0.127
|----------Net_ID-----------|-host-|
Netmask: 11111111.11111111.11111111.1 0000000   255.255.255.128
所有 IP 與網域表示式:

192.168.0.0/25 或 192.168.0.0/255.255.255.128


第二個子網路
Network:  11000000.10101000.00000000.1 0000000  192.168.0.128
Broadcast: 11000000.10101000.00000000.1 1111111  192.168.0.255
|----------Net_ID-----------|-host-|
Netmask: 11111111.11111111.11111111.1 0000000   255.255.255.128
所有 IP 與網域表示式:
192.168.0.128/25 或 192.168.0.128/255.255.255.128


所以說,當再細分下去時,就會得到兩個子網域,而兩個子網域還可以再細分下去

經典例題:請試著計算出 172.16.0.0/23 這個網域的 Netmask, Network, Broadcast 等引數
由於 172.16.xxx.xxx 是在 Class B 的等級當中,亦即 172.16.0.0/16 才對。不過題目中詢問的是 172.16.0.0/23,等於是向 Host_ID 借了 7 個 bits 用在 Net_ID
當中。所以整個 IP 的地址會變成這樣:
預設: 
172 . 16 . 0000000 0.00000000   (藍色陰影為向Host_ID借的7個bits)
|-----Net_ID--------|--Host---|
Network: 172 . 16 .0000000 0.00000000 172.16.0.0
Broadcast: 172 . 16 .0000000 1.11111111 172.16.1.255
Netmask: 11111111.11111111.1111111 0.00000000 255.255.254.0