網絡編程的本質是「兩個端點按約定格式交換數據」。要建立連接,必須搞懂四大基石:IP 地址(定位設備)、域名(人類可讀別名)、端口(定位進程)、協議(數據格式契約)。本文系統梳理核心概念、分類規則、編碼細節與實戰注意點。
X.X.X.X,每段 0-255 (8 位)0.0.0.0:本機所有介面 / 預設路由127.0.0.1:環回地址,本機內部通信10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16:私有網段 (RFC 1918)169.254.0.0/16:鏈路本地地址 (DHCP 失敗時自分配)2001:0db8:85a3:0000:0000:8a2e:0370:73342001:db8:85a3:0:0:8a2e:370:7334:: 替換(僅能出現一次):2001:db8:85a3::8a2e:370:7334::ffff:192.168.1.1 (IPv4-mapped IPv6 address)::1/128:環回fe80::/10:鏈路本地fc00::/7:唯一本地地址 (ULA,類似 IPv4 私有網段)2000::/3:全球單播層級結構 (從右向左): . (根域) → com (頂級域 TLD) → example (二級域) → www (三級域/主機名) 完整 FQDN:www.example.com.
| 類別 | 範例 | 說明 |
|---|---|---|
| 通用頂級域 (gTLD) | .com, .org, .net, .edu, .gov, .io, .dev | 按用途分類 |
| 國家代碼頂級域 (ccTLD) | .cn, .us, .jp, .uk, .de | 按國家/地區分類 |
| 二級域 | example.com | 組織註冊的核心標識 |
| 三級域 | www.example.com, api.example.com | 業務子系統/主機標識 |
解析流程:應用調用 getaddrinfo() → 本地緩存 → 系統 DNS 客戶端 → 遞歸解析器 → 根/頂級/權威服務器 → 返回 A/AAAA 記錄 → 緩存並返回 IP。
| 特性 | TCP (傳輸控制協議) | UDP (用戶數據報協議) |
|---|---|---|
| 連接模式 | 面向連接 (三次握手/四次揮手) | 無連接 |
| 可靠性 | 可靠:序號、確認、重傳、流控、擁塞控制 | 不可靠:盡力交付,可能丟包、亂序、重複 |
| 有序性 | 保證順序交付 | 不保證順序 |
| 邊界 | 字節流,無消息邊界 (需應用層分幀) | 數據報,保留消息邊界 |
| 開銷 | 頭部 20-60 字節,狀態機維護成本高 | 頭部 8 字節,無狀態 |
| 典型場景 | Web、郵件、資料庫、SSH、檔案傳輸 | DNS、流媒體、即時遊戲、IoT 心跳、廣播/組播 |
協議定義「雙方如何編碼/解碼業務數據」。核心要素:
| 功能 | TCP (客戶端) | TCP (服務端) | UDP |
|---|---|---|---|
| Socket 類 | Socket | ServerSocket | DatagramSocket |
| 數據單元 | InputStream/OutputStream | InputStream/OutputStream | DatagramPacket |
| 地址封裝 | InetSocketAddress (IP + 端口) | InetSocketAddress | InetSocketAddress |
網絡編程不再神秘:IP 定位機器,端口定位進程,協議定義格式。掌握 IPv4/IPv6 寫法、DNS 解析鏈、TCP/UDP 特性對比、應用層協議設計原則,配合 Java NIO/NIO.2/Netty 等高級框架,即可構建健壯、高效的分布式系統。