Subnet Mask 是什麼?子網路遮罩白話教學
Subnet Mask(子網路遮罩)是 IP 位址的好搭檔,負責告訴設備「哪個部分是網路位址、哪個部分是主機位址」,讓封包知道目標是在同一個網段還是需要透過 Gateway 轉發。本文用白話加上二進位範例,徹底說清楚子網路遮罩的原理、CIDR 表示法、以及子網段劃分的基礎概念。
更多網路基礎知識,請參考 IP、Subnet Mask、Gateway 完整教學。
什麼是 Subnet Mask?
Subnet Mask 的定義
Subnet Mask(子網路遮罩)是一個 32 位元的數值,和 IP 位址搭配使用,用來區分 IP 位址中哪些位元屬於「網路位址(Network Address)」,哪些位元屬於「主機位址(Host Address)」。
IP 位址本身只是一串數字,它沒有辦法自己說明「我屬於哪個網路」,這個工作就交給 Subnet Mask 來完成。
用郵遞區號來比喻
把 IP 位址想像成完整的地址,Subnet Mask 就是郵遞區號的劃分標準:
- 台北市信義區忠孝東路五段的郵遞區號是
110 - 台北市大安區忠孝東路三段的郵遞區號是
106
雖然都叫「忠孝東路」,但因為郵遞區號(相當於網路位址)不同,郵差知道要送到不同的區域。Subnet Mask 做的就是這件事——幫你從一串 IP 數字中「切出」網路位址,判斷兩個 IP 是不是在同一個「郵遞區域」內。
為什麼需要 Subnet Mask?
如果沒有 Subnet Mask,設備就無法判斷:
- 目標 IP 是否在同一個區域網路內(應該直接送達)
- 目標 IP 是否在不同的網路(應該送往 Gateway)
Subnet Mask 的 AND 運算提供了這個判斷基準,是整個 IP 路由機制的基礎。
Subnet Mask 如何運作
位元 AND 運算
Subnet Mask 使用位元 AND 運算來計算網路位址。AND 運算的規則非常簡單:只有兩個位元都是 1,結果才是 1;其中一個是 0,結果就是 0。
以最常見的 Subnet Mask 255.255.255.0 為例,假設 IP 是 192.168.1.100:
IP 位址(十進位): 192 . 168 . 1 . 100
IP 位址(二進位): 11000000.10101000.00000001.01100100
Subnet Mask(十進位):255 . 255 . 255 . 0
Subnet Mask(二進位):11111111.11111111.11111111.00000000
AND 運算結果:
11000000.10101000.00000001.00000000
= 192.168.1.0 ← 這就是「網路位址」
關鍵觀察:
- Subnet Mask 中,所有「1」的位置對應 IP 位址中的網路位址部分(保留下來)
- Subnet Mask 中,所有「0」的位置對應 IP 位址中的主機位址部分(遮罩掉,變成 0)
如何用來判斷是否同網段
判斷兩個 IP 是否在同一個網段,只需要讓兩個 IP 分別和相同的 Subnet Mask 做 AND 運算,再比較結果:
範例:IP 192.168.1.100 和 192.168.1.200 是否同網段(Subnet Mask 255.255.255.0)?
192.168.1.100 AND 255.255.255.0 = 192.168.1.0
192.168.1.200 AND 255.255.255.0 = 192.168.1.0
兩個結果相同(192.168.1.0)→ 同一個網段 ✓
可以直接通訊,不需要 Gateway
範例:IP 192.168.1.100 和 192.168.2.50 是否同網段?
192.168.1.100 AND 255.255.255.0 = 192.168.1.0
192.168.2.50 AND 255.255.255.0 = 192.168.2.0
兩個結果不同 → 不同網段 ✗
封包必須透過 Gateway 轉發
常見 Subnet Mask 對照表
| Subnet Mask | CIDR | 網路位元數 | 主機位元數 | 可用主機數 | 常見用途 |
|---|---|---|---|---|---|
255.0.0.0 | /8 | 8 | 24 | 16,777,214 | 大型企業、ISP |
255.255.0.0 | /16 | 16 | 16 | 65,534 | 中型企業、校園網路 |
255.255.255.0 | /24 | 24 | 8 | 254 | 家用/小型辦公室(最常見) |
255.255.255.128 | /25 | 25 | 7 | 126 | 較小的辦公室網路 |
255.255.255.192 | /26 | 26 | 6 | 62 | 小型部門網路 |
255.255.255.224 | /27 | 27 | 5 | 30 | 極小型網路 |
255.255.255.240 | /28 | 28 | 4 | 14 | 小型伺服器群組 |
255.255.255.252 | /30 | 30 | 2 | 2 | 點對點連線(P2P 鏈路) |
可用主機數的計算公式: 2^(主機位元數) - 2
減去 2 是因為每個網段有兩個保留地址:
- 網路位址(主機位元全為 0):例如
192.168.1.0 - 廣播位址(主機位元全為 1):例如
192.168.1.255
CIDR 表示法
什麼是 CIDR?
CIDR(Classless Inter-Domain Routing,無類別域間路由)是一種更簡潔的網路位址表示方式,直接在 IP 位址後加上斜線和網路位元數:
192.168.1.100/24
/24 的意思是:這個 IP 位址的前 24 個位元是網路位址部分,等同於 Subnet Mask 255.255.255.0。
CIDR 和 Subnet Mask 的對應
為什麼 /24 等於 255.255.255.0?計算過程如下:
/24 = 前 24 位元都是 1,後 8 位元都是 0
11111111.11111111.11111111.00000000
= 255.255.255.0
同理:
/16 = 11111111.11111111.00000000.00000000 = 255.255.0.0
/8 = 11111111.00000000.00000000.00000000 = 255.0.0.0
/25 = 11111111.11111111.11111111.10000000 = 255.255.255.128
為什麼 CIDR 取代了傳統的 A/B/C 類別?
早期 IPv4 使用固定的「分類(Classful)」系統:
| 類別 | 範圍 | 可用主機數 | 問題 |
|---|---|---|---|
| A 類 | /8 | 16,777,214 | 太多,中小型組織根本用不完 |
| B 類 | /16 | 65,534 | 對大多數企業還是太多 |
| C 類 | /24 | 254 | 對許多用途又太少 |
這種固定分類造成大量 IP 位址浪費。CIDR 允許任意長度的網路前綴(如 /22、/26),可以精確分配所需的 IP 位址數量,大幅提升 IPv4 的使用效率。
子網段劃分(Subnetting)入門
為什麼要做子網段劃分?
子網段劃分(Subnetting)是把一個大的網路切割成多個小的子網路的技術,主要有以下優點:
- 減少廣播流量:廣播封包只會在同一個網段內傳播,網段越小,廣播範圍越小,網路效能越好。
- 提升安全性:不同部門(例如財務部和工程部)可以放在不同的子網段,彼此之間需要透過路由器(可設定防火牆規則)才能通訊。
- 更有效管理 IP 位址:可以根據各部門實際需要的主機數量,精確分配合適大小的網段。
實際範例:把 /24 切成兩個 /25
假設你有一個網段 192.168.1.0/24(可用 254 個主機),要把它切成兩個等大小的子網段:
原始網段: 192.168.1.0/24
- 網路位址:
192.168.1.0 - 廣播位址:
192.168.1.255 - Subnet Mask:
255.255.255.0
切割方式: 把主機位元的第一個位元借用來當網路位元,/24 變成 /25
子網段 1(第一個位元為 0):
網路位址: 192.168.1.0 (二進位最後一段:0_0000000)
廣播位址: 192.168.1.127 (二進位最後一段:0_1111111)
可用範圍: 192.168.1.1 ~ 192.168.1.126
可用主機數:126 台
Subnet Mask:255.255.255.128(/25)
子網段 2(第一個位元為 1):
網路位址: 192.168.1.128 (二進位最後一段:1_0000000)
廣播位址: 192.168.1.255 (二進位最後一段:1_1111111)
可用範圍: 192.168.1.129 ~ 192.168.1.254
可用主機數:126 台
Subnet Mask:255.255.255.128(/25)
如此一來,一個 /24 網段就被切成了兩個各有 126 台主機空間的 /25 網段,兩者之間的通訊需要透過路由器(Gateway)。
實際操作
查看目前的 IP 和 Subnet Mask
Linux(ip addr 指令):
ip addr show
# 輸出範例
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ...
inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0
# ^^^^^^^^^^^^^^^^
# IP/CIDR 格式,/24 即 Subnet Mask 255.255.255.0
Linux/macOS(ifconfig 指令):
ifconfig
# macOS 輸出範例
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.1.100 netmask 0xffffff00 broadcast 192.168.1.255
# ^^^^^^^^^^
# netmask 0xffffff00 = 255.255.255.0
# 0xffffff00 換算:
# ff = 11111111 = 255
# ff = 11111111 = 255
# ff = 11111111 = 255
# 00 = 00000000 = 0
Windows(ipconfig 指令):
ipconfig
# 輸出範例
無線區域網路介面卡 Wi-Fi:
IPv4 位址 . . . . . . . . . . : 192.168.1.100
子網路遮罩 . . . . . . . . . . : 255.255.255.0
預設閘道 . . . . . . . . . . . : 192.168.1.1
設定靜態 IP 和 Subnet Mask(Ubuntu Netplan)
# 編輯 Netplan 設定檔
sudo nano /etc/netplan/01-netcfg.yaml
network:
version: 2
ethernets:
eth0:
dhcp4: false
addresses:
- 192.168.1.100/24 # IP 位址/CIDR(等同於 255.255.255.0)
routes:
- to: default
via: 192.168.1.1 # Gateway
nameservers:
addresses:
- 8.8.8.8
# 套用設定
sudo netplan apply
# 驗證(確認 IP 和 Subnet Mask 已套用)
ip addr show eth0
用指令計算網路資訊
# 安裝 ipcalc 工具(Ubuntu/Debian)
sudo apt install ipcalc
# 計算 192.168.1.100/24 的網路資訊
ipcalc 192.168.1.100/24
# 輸出範例
Address: 192.168.1.100 11000000.10101000.00000001. 01100100
Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000
Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111
=>
Network: 192.168.1.0/24 11000000.10101000.00000001. 00000000
HostMin: 192.168.1.1 11000000.10101000.00000001. 00000001
HostMax: 192.168.1.254 11000000.10101000.00000001. 11111110
Broadcast: 192.168.1.255 11000000.10101000.00000001. 11111111
Hosts/Net: 254 Class C, Private Internet
Subnet Mask 判斷後的跨網段通訊由 Gateway 處理,詳見 Gateway 是什麼?。
常見問題(FAQ)
Q1: 255.255.255.0 和 /24 是同一件事嗎?
是的,兩種表示法完全等價。255.255.255.0 是傳統的十進位表示法,/24 是 CIDR 表示法,/24 代表前 24 個位元都是 1(也就是 11111111.11111111.11111111.00000000,換算成十進位就是 255.255.255.0)。現代的 Linux 指令(如 ip addr)普遍使用 CIDR 表示法,而 Windows 的 ipconfig 輸出則仍然使用傳統的十進位格式。兩種方式在設定時都可以使用。
Q2: 為什麼 /24 網段只有 254 個可用主機,而不是 256 個?
因為每個網段有兩個保留位址不能分配給主機:
- 網路位址(主機位元全為 0):以
192.168.1.0/24為例,192.168.1.0是網路位址,代表整個網段本身。 - 廣播位址(主機位元全為 1):
192.168.1.255是廣播位址,發送到這個位址的封包會被網段內所有設備收到。
因此 256(2^8)減去 2 等於 254 個可用主機位址(192.168.1.1 到 192.168.1.254)。
Q3: 公司網路的 Subnet Mask 和家用有什麼不同?
家用網路通常使用 /24(255.255.255.0),最多容納 254 台設備,對家庭使用綽綽有餘。公司或企業環境視規模而定:
- 小型辦公室:
/24或/25(126 台) - 中型企業:
/22(1022 台)或/20(4094 台) - 大型企業/校園:
/16(65534 台)或更大
此外,企業環境通常會依部門或功能把網路細分為多個子網段(例如 192.168.10.0/24 給工程部,192.168.20.0/24 給財務部),透過路由器的 ACL(存取控制清單)管理部門間的存取權限,提升安全性。