網絡編程是 Java 開發中不可或缺的核心技能。本文系統梳理計算機網絡分類、OSI 與 TCP/IP 分層模型、IP 地址與端口號機制,並深入剖析 TCP 協議的三次握手與四次揮手流程,為後續 Socket 開發打下堅實基礎。
根據覆蓋範圍,計算機網絡主要分為三類:
| OSI 七層模型 | TCP/IP 四層模型 |
|---|---|
| 應用層 | 應用層 |
| 表示層 | |
| 會話層 | |
| 傳輸層 | 傳輸層 |
| 網絡層 | 網絡層 |
| 數據鏈路層 | 物理層+數據鏈路層 |
| 物理層 |
TCP/IP 模型更簡潔實用,是互聯網實際運行的基礎架構。
IP 地址唯一標識網絡中的通信實體(主機、打印機、路由器端口等)。私有 IP 地址範圍:
端口是 16 位整數(0~65535),作為通信程序與外界交互的出入口,分為三類:
TCP/IP 定義了主機接入互聯網及數據傳輸標準。TCP 提供面向連接、可靠的字節流服務,連接建立與終止分別通過「三次握手」與「四次揮手」完成。
SYN_SENT 狀態SYN_RCVD 狀態ESTABLISHED 狀態,開始傳輸數據因 TCP 為全雙工,雙向需單獨關閉:
FIN_WAIT_1CLOSE_WAIT;客戶端進入 FIN_WAIT_2LAST_ACKTIME_WAIT(等待 2MSL 後釋放),服務端進入 CLOSEDFIN_WAIT_1:主動關閉方發送 FIN 後等待 ACKFIN_WAIT_2:收到 ACK 後等待對方 FINTIME_WAIT:主動關閉方收到 FIN 後等待 2MSL 確保對方收到 ACKCLOSE_WAIT:被動關閉方等待上層應用發出關閉指令掌握這些基礎概念,有助於理解 Java Socket 編程、排查網絡超時、連接洩漏等實戰問題。