Subnet Mask 是什麼?子網路遮罩白話教學

2026/04/27

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,設備就無法判斷:

  1. 目標 IP 是否在同一個區域網路內(應該直接送達)
  2. 目標 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.100192.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.100192.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 MaskCIDR網路位元數主機位元數可用主機數常見用途
255.0.0.0/882416,777,214大型企業、ISP
255.255.0.0/16161665,534中型企業、校園網路
255.255.255.0/24248254家用/小型辦公室(最常見)
255.255.255.128/25257126較小的辦公室網路
255.255.255.192/2626662小型部門網路
255.255.255.224/2727530極小型網路
255.255.255.240/2828414小型伺服器群組
255.255.255.252/303022點對點連線(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 類/816,777,214太多,中小型組織根本用不完
B 類/1665,534對大多數企業還是太多
C 類/24254對許多用途又太少

這種固定分類造成大量 IP 位址浪費。CIDR 允許任意長度的網路前綴(如 /22/26),可以精確分配所需的 IP 位址數量,大幅提升 IPv4 的使用效率。


子網段劃分(Subnetting)入門

為什麼要做子網段劃分?

子網段劃分(Subnetting)是把一個大的網路切割成多個小的子網路的技術,主要有以下優點:

  1. 減少廣播流量:廣播封包只會在同一個網段內傳播,網段越小,廣播範圍越小,網路效能越好。
  2. 提升安全性:不同部門(例如財務部和工程部)可以放在不同的子網段,彼此之間需要透過路由器(可設定防火牆規則)才能通訊。
  3. 更有效管理 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.1192.168.1.254)。

Q3: 公司網路的 Subnet Mask 和家用有什麼不同?

家用網路通常使用 /24255.255.255.0),最多容納 254 台設備,對家庭使用綽綽有餘。公司或企業環境視規模而定:

  • 小型辦公室:/24/25(126 台)
  • 中型企業:/22(1022 台)或 /20(4094 台)
  • 大型企業/校園:/16(65534 台)或更大

此外,企業環境通常會依部門或功能把網路細分為多個子網段(例如 192.168.10.0/24 給工程部,192.168.20.0/24 給財務部),透過路由器的 ACL(存取控制清單)管理部門間的存取權限,提升安全性。