萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 網路安全 >  >> 網路基礎知識

Java Socket編程入門:核心術語、TCP/IP協議棧與通信流程

前言:網絡編程的基石

計算機程序間的網絡通信是互聯網存在的基礎。Java從設計之初即面向網絡,提供了豐富的Socket API實現程序間通信。掌握核心術語與概念,是進入Java網絡編程的第一步。

計算機網絡基礎模型

計算機網絡由主機與路由器通過通信信道互連組成。數據在協議棧中分層封裝,核心流程如下:

  1. 應用層生成數據流。
  2. 傳輸層(TCP/UDP)添加端口號,實現進程寻址與端到端傳輸。
  3. 網絡層(IP)添加IP地址,實現主機寻址與路由選擇。
  4. 數據鏈路層封裝幀,添加MAC地址。
  5. 物理層比特流傳輸。

TCP/IP網絡通信流程圖

核心術語解析

分組報文

網絡環境中程序創建和解釋的字節序列,是協議數據單元(PDU)的通稱。

協議

通信雙方共同遵守的約定,規定報文交換格式、語義、時序。互聯網核心協議族為TCP/IP。

IP協議

網絡層核心協議,提供無連接、不可靠的數據報傳遞服務,負責主機寻址與路由轉發。

傳輸層協議:TCP與UDP

均建立在IP層之上,稱為「端到端傳輸協議」,共同功能為尋址(使用端口號區分同一主機不同應用)。

  • TCP:面向連接、可靠、字節流、流量控制、擁塞控制、全雙工。適用於文件傳輸、郵件、Web等對可靠性要求高的場景。
  • UDP:無連接、不可靠、數據報文、無流量/擁塞控制、開銷小。適用於實時音視頻、DNS、廣播/組播等對實時性要求高、可容忍丟包的場景。

Socket編程核心概念

Socket(套接字)是應用層與傳輸層的接口抽象,代表一個通信端點。每個Socket由三元組唯一標識。Java提供java.net.Socket(TCP客戶端)、java.net.ServerSocket(TCP服務端)、java.net.DatagramSocket(UDP)等類。

典型TCP通信流程

  1. 服務端:ServerSocket.bind() → listen() → accept()阻塞等待連接。
  2. 客戶端:new Socket(ip, port)發起三次握手建立連接。
  3. 雙方通過InputStream/OutputStream或Reader/Writer讀寫數據。
  4. 通信結束調用close()釋放資源,觸發四次揮手斷開連接。

關鍵注意點

  • TCP粘包/拆包問題:需自定義應用層協議(定長、分隔符、長度前綴)處理邊界。
  • 異常處理與資源釋放:使用try-with-resources確保流與Socket關閉。
  • 非阻塞IO(NIO/NIO.2):高併發場景下提升擴展性,基於Channel、Buffer、Selector機制。

掌握上述基礎,即可開始編寫健壯的Java網絡應用。後續將深入實戰代碼示例與進階模式。

copyright © 萬盛學電腦網 all rights reserved