網路編程的起點是理解 IP 地址與域名體系。本文涵蓋 IPv4/IPv6 格式、分類、子網掩碼判斷同網段、DNS 解析機制、域名層級劃分,為後續 Java 網路 API 學習奠定基礎。
X.X.X.X (0~255)| 類別 | 範圍 | 標準掩碼 | 首字節範圍 | 可用網絡數 | 每網主機數 |
|---|---|---|---|---|---|
| A 類 | 0.0.0.0 – 127.255.255.255 | 255.0.0.0 (/8) | 0~127 | 126 | 16,777,214 |
| B 類 | 128.0.0.0 – 191.255.255.255 | 255.255.0.0 (/16) | 128~191 | 16,384 | 65,534 |
| C 類 | 192.0.0.0 – 223.255.255.255 | 255.255.255.0 (/24) | 192~223 | 2,097,152 | 254 |
現代網路以 CIDR (無類別域間路由) 為準,掩碼長度任意 (如 /28, /30),不再受 A/B/C 類限制。
兩 IP 與各自掩碼 按位與 (AND) 結果相同 → 同網段:
IP1: 192.168.18.10 掩碼: 255.255.255.0
IP2: 192.168.18.20 掩碼: 255.255.255.0
AND 結果: 192.168.18.0 → 同網段
// Java 實現
boolean sameSubnet(InetAddress ip1, InetAddress ip2, InetAddress mask) {
byte[] b1 = ip1.getAddress(), b2 = ip2.getAddress(), m = mask.getAddress();
for (int i = 0; i < b1.length; i++)
if ((b1[i] & m[i]) != (b2[i] & m[i])) return false;
return true;
}
ADSL/寬撥分配的通常為 C 類私有地址 (192.168.x.x, 10.x.x.x, 172.16~31.x.x)。
X:X:X:X:X:X:X:X (每段 4 位十六進制)A34E:DD3D:1234:4400:A123:B231:A111:DDAA003D → 3D, 0004 → 4A34E:0000:0000:0000:A123:B231:0:DDAA → A34E::A123:B231:0:DDAA雙冒號 :: 只能出現一次,否則產生歧義。
IPv6 後 32 位可寫為 IPv4 格式:
A34E::A123:B231:A111:DDAA → A34E::A123:B231:161.17.221.170
(最後 4 字節 0xA111DDAA = 161.17.221.170)
純 IPv4 客戶端訪問雙棧服務時,系統自動使用 IPv6 地址後 4 字節作為 IPv4 兼容地址。
| 層級 | 示例 | 說明 |
|---|---|---|
| 頂層域名 (TLD) | .com, .org, .cn, .us | 類型頂級域 (.com/.edu/.gov) + 國家代碼頂級域 (.cn/.us/.uk) |
| 頂級域名 (SLD) | microsoft.com, csdn.net | 註冊單位擁有的域名,Email @ 後部分 |
| 二級域名 | blog.csdn.net, www.csdn.net | 頂級域名下的子域名,**www 也是二級域名** |
| 三級域名 | abc.photo.163.com | 二級域名下的子域名,常用於用戶個性化空間 |
常見誤區:www.csdn.net是頂級域名 ❌。正確是csdn.net為頂級域名,www.csdn.net為其二級域名。習慣用www表示 Web 服務導致誤解。
掌握 IP 格式、分類、子網掩碼計算、IPv6 簡寫、DNS 解析流程、域名層級,是網路程式設計的基礎語言。下一章將進入 Java InetAddress API 實戰。