單一一個網段可能包含很多個 IP,有時候會希望不同單位使用不同區間的 IP 位址。這時候就可以把這一大個網段再細分成更多的小網段。這個區分方法也很直覺,就是 buddy system、set associate cache 分割成多個大小為 (1 << k)
的連續區間。
假定這個網段有 個 IP,把這個網段所有的 IP 細分為「大小為 」的區間。每一個這樣的 大小的區間,都會有相同的前 個位元。
對於一個子網段,那個「可以 mask 出這個子網段相同前綴」的位元遮罩,就稱為 subnet mask。舉例來說,若將一個 Class B 的所有 個網段,區分成 組大小為 個區間。那麼對於每一個這樣的子區間,他們的前 24 位元都會一樣。所以就可以用這前 24 個位元去辨認這個子網段:
而這時就稱「可以 mask 出前 24 位元的那個位元遮罩」,也就是 255.255.255.0
,為這個子網段的 subnet mask。只要把一個 IP 位置跟這個遮罩進行 AND 運算,得到的數值就能判斷是否屬於某一個 subnet。
這個 subnet mask 未必需要是連續的 1。
不同 subnet 只有內部的路由器可以區分得出來,對於外面來說,只看得到那個 class 的 IP。