Why Subnetting
- 分散網路 traffic, 避免不必要的 packet 在 LAN 裡頭流動
- 如果全世界的機器都在同一 subnet, 那麼這個網路將會非常的擁擠
- 分 subnet 之後, 每部機器只會看到和自己同一 subnet 機器的相關 packet, 與自己 subnet 內無關的 packet 不會跑進來
![](http://turtle.ee.ncku.edu.tw/~tung/tcpip/netab.gif)
Netid與subnet
- 每部機器的 IP 都可分成
![](http://turtle.ee.ncku.edu.tw/~tung/tcpip/netid.gif)
- 當兩部機器的 netid 相同時, 我們說這兩部機器在同一個 subnet
- 那如何決定一個 IP 的 netid 是多少呢?
- by IP class (default)
- by NetMask
由 IP class 計算 Netid
- 例
120.1.1.2 與 120.2.2.2 算同一 subnet
140.1.1.2 與 140.2.2.2 算不同 subnet
140.1.1.2 與 140.1.2.2 算同一 subnet
192.1.1.2 與 192.1.2.2 算不同 subnet
192.1.1.2 與 192.1.1.3 算同一 subnet
由 Netmask 計算 Netid
在 IP Class A, hostid 有 24 bit, 就是說在一個 Class A的 net 中, 同時最多可以有 2 24部機器, 這個網路太大了, 一樣會有 traffic 過重的情形, 此時我們便會希望將網路切小一點. 同樣的情形也會發生在 Class B 的網路.
- Netmask 為一連串 bit 1 接著 一連串 0 , 總長度為 32 bit
255.255.255.0
(11111111.11111111.1111111.00000000)255.255.255.224
(11111111.11111111.1111111.11100000)
- 利用 Netmask 與 IP 作位元相乘, 所得出的部份便是 netid
- 通常是利用 Netmask 來把 IP 中的 netid 欄位變長, 也就是將網路切細一點
Netid 計算
- netid by IP class
140.116.72.219 netid=140.116.0.0
140.116.32.55 netid=140.116.0.0
=> 同一 subnet
- netid by netmask 255.255.255.0
140.116.72.219 netid=140.116.72.0
140.116.32.55 netid=140.116.32.0
=> 不同 subnet
![](http://turtle.ee.ncku.edu.tw/~tung/tcpip/netmask.gif)
分割 Subnet 步驟
- 先決定每個 subnet 上想要多少部機器
- 根據 step 1 選定一個 netmask
- 現有的 net 在經過 subnet 後, 第 0 個與最後一個subnet 不能被使用
- 對每個 subnet 而言,
第 0 個 IP address 要保留做為網路代表位址
最後一個 IP address 保留作為網路廣播位址
這兩者不能拿來當做機器的 IP 位址 - 對每個 subnet 而言, 在可用的 IP 位址中要選出一個當作 Gateway address
假設我們分到一個 Subnet , IP range 是140.116.49.xxx, 現在我我們要將其細分為數個約 20 部電腦的 subnet
- 20 部
- 20 < 25, =>hostid 5 bit, netid = 32-5 bit, 所以定 netmask 為 255.255.255.224(11111111.11111111.11111111.11100000)
- 我們得到 8 個 subnet
![](http://turtle.ee.ncku.edu.tw/~tung/tcpip/subnet.gif)
Subnet 的另一用途
subnet 到 c class 大小時, 通常不會再往下細切, 因為如果是考量要降低廣播封包以提高網路效能, 一般會利用 switch 作為網路骨幹來解決這個問題. C class subnet 會再往下細切, 一般都是發生在要節省 IP 使用的場合
IP 在授權時, 一般都是以一個子網路為單位, 而由於目前 IP 位址漸漸有不足的情形, 因此很多時候 IP 授權單位會將 subnet 縮小再發給下層單位, 原因就是為了節省 IP 位址的使用量(不用一次發那麼多出去)