子網掩碼把 IP 切割成了網絡段和主機段兩部分。同一網段下的不同主機之間可以互通網絡。
掩碼
IPV4 默認情況下 IP 地址 192.168.0.x 可以分配 256 個主機地址(不考慮首尾兩個特殊的地址時)。
假設我們只需要用到 8 個主機,就可以借助子網掩碼來排除剩余的主機號,以便分配給其他人用。

在上圖中,我們需要為三臺服務器分配 ip 地址。其中 x 取 0 - 7,對應的二進制編碼為:
二進制:11111111 11111111 11111111 00000000
二進制:11111111 11111111 11111111 00000100
借助二進制的掩碼中的 1 來掩蓋 IPV4 對應二進制位,代表該位不能被用于主機號的分配。
則得到的二進制掩碼為:
11111111 11111111 11111111 11111000
對應的十進制掩碼為:
255.255.255.248
表示成子網起始點 + 子網掩碼的形式為:
192.168.0.0 255.255.255.248
如果采用 CIDR 表示法,則為:
192.168.0.0/29 # 其中 29 代表二進制掩碼的前 29 位是 1
網絡段、主機段
在上面的例子中,掩碼為 /29,表示有 2^29 個地址可以作為網絡段。2^3 個地址作為主機段。
如何區分是否為同一網絡段
以 192.168.0.2 和 192.168.0.5 為例,要判斷這兩個 IP 地址是否屬于同一網段,需要結合子網掩碼來計算網絡地址。假設常見的默認子網掩碼為 255.255.255.0(即24位掩碼),以下是分析過程:
步驟 1:將IP地址和子網掩碼轉換為二進制
- 192.168.0.2 的二進制形式:
11000000.10101000.00000000.00000010
- 192.168.0.5 的二進制形式:
11000000.10101000.00000000.00000101
- 子網掩碼 255.255.255.0 的二進制形式:
11111111.11111111.11111111.00000000
步驟 2:計算網絡地址
網絡地址 = IP地址 邏輯與(AND) 子網掩碼。
- 192.168.0.2 的網絡地址:
11000000.10101000.00000000.00000010
AND
11111111.11111111.11111111.00000000
=192.168.0.0
- 192.168.0.5 的網絡地址:
11000000.10101000.00000000.00000101
AND
11111111.11111111.11111111.00000000
=192.168.0.0
結論
- 對于常見的子網掩碼 255.255.255.0,兩個 IP 地址的網絡地址只要前 3 位相同,即可認為他們屬于同一個網段。
- 如果子網掩碼不同(例如 255.255.255.128),網絡地址可能不同,是否屬于同一個網段,需重新計算。