首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java SE 網絡編程基礎:從網絡分類到 TCP 三次握手四次揮手全解析

     編輯:Java 綜合教學

Java SE 網絡編程基礎知識詳解

網絡編程是 Java 開發中不可或缺的核心技能。本文系統梳理計算機網絡分類、OSI 與 TCP/IP 分層模型、IP 地址與端口號機制,並深入剖析 TCP 協議的三次握手與四次揮手流程,為後續 Socket 開發打下堅實基礎。

一、計算機網絡分類

根據覆蓋範圍,計算機網絡主要分為三類:

  • 局域網(LAN):覆蓋較小地理範圍(通常幾千米內),連接各類網絡設備,可包含一個或多個子網。
  • 城域網(MAN):由城域範圍內多個局域網互連構成,覆蓋範圍介於 LAN 與 WAN 之間。
  • 廣域網(WAN):連接距離較遠的局域網與城域網,除計算機設備外還涉及電信通信設施,如互聯網即為典型 WAN。

二、網絡分層模型對比

OSI 七層模型TCP/IP 四層模型
應用層應用層
表示層
會話層
傳輸層傳輸層
網絡層網絡層
數據鏈路層物理層+數據鏈路層
物理層

TCP/IP 模型更簡潔實用,是互聯網實際運行的基礎架構。

三、IP 地址與端口號

IP 地址分類

IP 地址唯一標識網絡中的通信實體(主機、打印機、路由器端口等)。私有 IP 地址範圍:

  • A 類:10.0.0.0 ~ 10.255.255.255
  • B 類:172.16.0.0 ~ 172.31.255.255
  • C 類:192.168.0.0 ~ 192.168.255.255

端口號機制

端口是 16 位整數(0~65535),作為通信程序與外界交互的出入口,分為三類:

  • 公認端口(0~1023):預留給系統服務(如 HTTP 80、HTTPS 443、FTP 21)
  • 註冊端口(1024~49151):分配給用戶進程或應用程序
  • 動態/私有端口(49152~65535):客戶端臨時使用,通信結束後釋放

四、TCP/IP 協議與連接管理

TCP/IP 定義了主機接入互聯網及數據傳輸標準。TCP 提供面向連接、可靠的字節流服務,連接建立與終止分別通過「三次握手」與「四次揮手」完成。

三次握手(連接建立)

  1. 客戶端 → 服務端:發送 SYN=1,seq=x,進入 SYN_SENT 狀態
  2. 服務端 → 客戶端:回應 SYN=1,ACK=1,ack=x+1,seq=y,進入 SYN_RCVD 狀態
  3. 客戶端 → 服務端:發送 ACK=1,ack=y+1,seq=x+1,雙方進入 ESTABLISHED 狀態,開始傳輸數據

四次揮手(連接終止)

因 TCP 為全雙工,雙向需單獨關閉:

  1. 客戶端發送 FIN=1,seq=u,進入 FIN_WAIT_1
  2. 服務端回應 ACK=1,ack=u+1,進入 CLOSE_WAIT;客戶端進入 FIN_WAIT_2
  3. 服務端發送 FIN=1,ACK=1,seq=w,ack=u+1,進入 LAST_ACK
  4. 客戶端回應 ACK=1,ack=w+1,進入 TIME_WAIT(等待 2MSL 後釋放),服務端進入 CLOSED

關鍵狀態解析

  • FIN_WAIT_1:主動關閉方發送 FIN 後等待 ACK
  • FIN_WAIT_2:收到 ACK 後等待對方 FIN
  • TIME_WAIT:主動關閉方收到 FIN 後等待 2MSL 確保對方收到 ACK
  • CLOSE_WAIT:被動關閉方等待上層應用發出關閉指令

掌握這些基礎概念,有助於理解 Java Socket 編程、排查網絡超時、連接洩漏等實戰問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved