# IPv4 - Subnet [TOC] ## 課程影片 ### 第 7H 講 路由器運作原理以及網路互連技術 L07 8 {%youtube qmtMZoC2L-Y %} ## 目標:將大網段細分成小網段 單一一個網段可能包含很多個 IP,有時候會希望不同單位使用不同區間的 IP 位址。這時候就可以把這一大個網段再細分成更多的小網段。這個區分方法也很直覺,就是 ~~buddy system、set associate cache~~ 分割成多個大小為 `(1 << k)` 的連續區間。 假定這個網段有 $2^{N}$ 個 IP,把這個網段所有的 IP 細分為「大小為 $2^{k}$」的區間。每一個這樣的 $2^{k}$ 大小的區間,都會有相同的前 $(32-k)$ 個位元。 ### 術語:IP 遮罩 對於一個子網段,那個「可以 *mask* 出這個子網段相同前綴」的位元遮罩,就稱為 *subnet mask*。舉例來說,若將一個 Class B 的所有 $2^{16}$ 個網段,區分成 $2^{8}$ 組大小為 $2^{8}$ 個區間。那麼對於每一個這樣的子區間,他們的前 24 位元都會一樣。所以就可以用這前 24 個位元去辨認這個子網段: ![](https://i.imgur.com/DHWKOjc.png) 而這時就稱「可以 *mask* 出前 24 位元的那個位元遮罩」,也就是 `255.255.255.0`,為這個子網段的 *subnet mask*。只要把一個 IP 位置跟這個遮罩進行 AND 運算,得到的數值就能判斷是否屬於某一個 subnet。 > 這個 subnet mask 未必需要是連續的 1。 > 不同 subnet 只有內部的路由器可以區分得出來,對於外面來說,只看得到那個 class 的 IP。