Learning Objectives
- 把一個網段等分切成 2、4、8… 個子網路,算出每個子網路的範圍
- 依各單位的主機數,用 VLSM 由大到小分配大小不同的子網路
- 說明子網路必須從自己大小的整數倍開始,而且彼此不能重疊
- 把幾個連續的網段彙總成一條路由,並判斷彙總是否過寬
為什麼要把網段切小
假設學校分給系館一段 192.168.10.0/24,共 256 個位址。全部放在同一個網段裡當然可以,但有幾個問題:
- 廣播會傳到每一台:ARP、DHCP 這些廣播在同一個網段內人人都收到,網段越大越吵。
- 難以分開管理:系辦、實驗室、教室的設備混在一起,防火牆規則(第 23 課)沒辦法依單位設定。
- 出問題時範圍大:一台設備設錯或中毒,影響整個網段。
所以通常會把一段位址再切成幾個子網路(subnet),每個單位一個,中間用路由器(或第 4 課的 VLAN 加路由)隔開。 切割的方法是從主機部分借位元給網路部分:前綴越長,子網路越多、每個越小。
等分切割:借幾個位元
從主機部分借 k 個位元,就切成 2^k 個大小相同的子網路:
| 借幾個位元 | 子網路數 | 新的前綴 | 每個子網路的位址數 | 可用主機數 |
|---|---|---|---|---|
| 1 | 2 | /25 | 128 | 126 |
| 2 | 4 | /26 | 64 | 62 |
| 3 | 8 | /27 | 32 | 30 |
| 4 | 16 | /28 | 16 | 14 |
192.168.10.0/24 切成 4 個 /26:
| 子網路 | 可用的主機位址 | 廣播位址 |
|---|---|---|
| 192.168.10.0/26 | .1~.62 | .63 |
| 192.168.10.64/26 | .65~.126 | .127 |
| 192.168.10.128/26 | .129~.190 | .191 |
| 192.168.10.192/26 | .193~.254 | .255 |
每個子網路的網路位址都是 64 的倍數,這是位元運算自然的結果:借來的 2 個位元依序是 00、01、10、11。
等分切割簡單,但每個單位拿到的大小都一樣。系辦要 50 台,一個 /26(62)剛好;兩台路由器之間的連線只要 2 個位址,也得用掉一整個 /26,浪費 60 個。
VLSM:依需求切出大小不同的子網路
VLSM(Variable Length Subnet Mask,可變長度子網路遮罩)讓同一段位址裡的子網路用不同的前綴長度。步驟:
- 列出每個單位需要的主機數,由大到小排序。
- 每個單位找「容得下的最長前綴」:可用主機數 2^n − 2 ≥ 需求。
- 從位址空間的開頭依序分配,每一塊都要從自己大小的整數倍開始。
以系館為例:
| 單位 | 需要 | 前綴 | 可用 | 分配到 |
|---|---|---|---|---|
| 系辦 | 50 台 | /26 | 62 | 192.168.10.0/26 |
| 實驗室 | 25 台 | /27 | 30 | 192.168.10.64/27 |
| 教室 | 12 台 | /28 | 14 | 192.168.10.96/28 |
| 路由器之間的點對點連線 | 2 台 | /30 | 2 | 192.168.10.112/30 |
一共用掉 64+32+16+4 = 116 個位址,還剩 140 個可以留給以後。
為什麼要由大到小:大的區塊對齊要求比較嚴(/26 只能從 0、64、128、192 開始)。如果先放小的,例如先把 /30 放在 .0, /26 就不能從 .4 開始,只能跳到 .64,中間 .4~.63 就被切碎了。先放大的,後面小的區塊總能剛好接上,不留空隙。
不能重疊:兩個子網路如果有共同的位址,路由器收到給那個位址的封包時,會不知道該送去哪一個子網路。
小測驗:子網路切割
172.16.0.0/16 要切成至少 50 個大小相同的子網路,最少要借幾個位元?
192.168.10.0/24 等分成 8 個子網路,第 3 個子網路是?
下列哪一個不是合法的子網路寫法(網路位址不是網段的起點)?
VLSM 分配時為什麼要由大到小?
路由彙總:把連續的網段合成一條
切割是把大的網段分成小的;路由彙總(route summarization,也叫 supernetting)反過來,把幾個連續的網段寫成一條較短前綴的路由。
研究大樓的路由器 R2 後面有四個網段:10.1.0.0/24、10.1.1.0/24、10.1.2.0/24、10.1.3.0/24。把第 3 段寫成二進位:
10.1.0.0 → 00001010.00000001.000000|00.00000000
10.1.1.0 → 00001010.00000001.000000|01.00000000
10.1.2.0 → 00001010.00000001.000000|10.00000000
10.1.3.0 → 00001010.00000001.000000|11.00000000
直線左邊的 22 個位元完全相同,所以四條路由可以合成 10.1.0.0/22。校園其他路由器只要記這一條,路由表比較小, R2 後面某個網段的線路有變化時,其他路由器也不必跟著更新。
彙總要注意兩件事:
- 彙總的範圍要剛好:寫成 10.1.0.0/16 也涵蓋這四個網段,但同時涵蓋了 10.1.4.0~10.1.255.255,那些位址如果在別的地方,封包會被送錯。
- 網段不連續時會多包:10.2.1.0/24 與 10.2.2.0/24 的共同前綴只有 22 位元,彙總成 10.2.0.0/22 會連 10.2.0.0/24 和 10.2.3.0/24 一起包進來。 如果那兩段不在這個方向,就不要彙總,或另外加更精確的路由(第 9 課的最長前綴比對會選精確的那一條)。
規劃位址時把同一棟樓、同一個區域的網段排在連續的範圍,就是為了之後方便彙總。
小測驗:路由彙總
192.168.16.0/24 到 192.168.23.0/24 共 8 個網段,最精確的彙總路由是?
10.5.4.0/24 與 10.5.5.0/24 彙總成哪一條,不會多包任何位址?
10.3.1.0/24 與 10.3.2.0/24 彙總成 10.3.0.0/22,多包進了哪些位址?
重點整理
- 等分切割:從主機部分借 k 個位元,得到 2^k 個子網路,前綴加 k,每個子網路的大小減半 k 次。
- VLSM:依需求用不同的前綴長度;每個單位用容得下的最長前綴,由大到小從位址空間開頭依序分配。
- 子網路必須從自己大小的整數倍開始,而且不能重疊。
- 路由彙總:找出幾個連續網段共同的開頭位元,合成一條較短前綴的路由;範圍要剛好,太寬會把封包送錯,甚至形成迴圈。
到這裡你已經會規劃位址了。下一課回到封包本身:同一個網段裡,電腦怎麼用 ARP 從 IP 位址問到對方的 MAC 位址,跨網段時為什麼要把封包交給預設閘道。