首先介紹一下主動模式與被動模式:服務器
一、PORT(主動模式)spa
ftpClient.enterLocalActiveMode();blog
PORT中文爲主動模式,工做的原理:FTP客戶端鏈接到FTP服務器的21端口,發送用戶名和密碼登陸,登陸成功後要list列表或者讀取數據的時候,客戶端隨機開放一個端口(1024以上),發送PORT命令道FTP服務器,告訴服務器客戶端採用主動模式並開放端口;登錄
FTP服務器收到PORT主動模式命令和端口號後,經過服務器的20端口和客戶端開放的寬口鏈接,發送數據,原理以下圖:原理
二、PASV(被動模式)ftp
// ftpClient.enterLocalPassiveMode();密碼
PASV是Passive的縮寫,中文稱爲被動模式,工做原理:FTP客戶端鏈接到FTP服務器的21端口,發送用戶名和密碼登陸,登陸成功後要list列表或者讀取數據時,發送PASV命令道FTP服務器,服務器在本地隨機開放一個端口(1024以上),而後把開放的寬口告訴客戶端,客戶端再次鏈接到服務器開放的端口進行數據傳輸,原理以下圖: im
兩種模式的比較d3
從上面的運行來看,主動模式和被動模式的不一樣簡單的能夠概述爲:數據
主動模式傳輸數據時是「服務器」鏈接到「客戶端」的端口;
被動模式是「服務器」開放端口給客戶端鏈接;
建議
內網使用被動模式,外網使用主動模式,服務器相應改動