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

Java ServerSocket 資訊獲取與 FTP 主被動模式原理圖解

     編輯:Java 相關知識

前言

本文介紹 ServerSocket 獲取綁定端口與 IP 的三種方法,並以 FTP 協議的主動/被動模式為例,深入剖析匿名端口在資料傳輸通道建立中的關鍵角色。

一、獲取綁定資訊的方法

方法回傳值說明
getLocalPort()未綁定回傳 -1;綁定固定端口回傳該端口;綁定 0(匿名端口)回傳系統隨機分配的端口。
getInetAddress()回傳綁定的 InetAddress;未綁定 IP 回傳 0.0.0.0。
getLocalSocketAddress()回傳 SocketAddress,轉型為 InetSocketAddress 可同時取得 IP 與端口。

二、FTP 兩種傳輸模式

1. 主動模式

  • 命令通道:客戶端主動連接伺服器 21 號端口。
  • 資料通道:客戶端建立匿名端口 ServerSocket(0),透過命令通道告知伺服器;伺服器從 20 號端口 主動連接客戶端匿名端口。
  • 缺點:客戶端若在防火牆/NAT 後無法接受伺服器主動連入。

2. 被動模式

  • 命令通道:同主動模式(連接 21 號端口)。
  • 資料通道:伺服器建立匿名端口 ServerSocket(0),透過命令通道告知客戶端;客戶端主動連接伺服器匿名端口。
  • 優點:穿透防火牆/NAT,客戶端無需固定 IP。
  • 缺點:伺服器需開放大量高位端口(通常 1024~5000 甚至 65535),存安全風險。

現代 FTP 客戶端預設被動模式;若環境允許,主動模式較安全。

結語

理解 ServerSocket 匿名端口機制,不僅能靈活獲取綁定資訊,更是掌握 FTP、P2P 等需雙向建立連接協議的核心鑰匙。

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