Ftp主動模式和被動模式以及java鏈接ftp模式設置

(1) PORT(主動模式)html

PORT中文稱爲主動模式,工做的原理: FTP客戶端鏈接到FTP服務器的21端口,發送用戶名和密碼登陸,登陸成功後要list列表或者讀取數據時,客戶端隨機開放一個端口(1024以上),發送 PORT命令到FTP服務器,告訴服務器客戶端採用主動模式並開放端口;FTP服務器收到PORT主動模式命令和端口號後,經過服務器的20端口和客戶端開放的端口鏈接,發送數據,原理以下圖。java

 

 (2) PASV(被動模式)服務器

    PASV是Passive的縮寫,中文成爲被動模式,工做原理:FTP客戶端鏈接到FTP服務器的21端口,發送用戶名和密碼登陸,登陸成功後要list列表或者讀取數據時,發送PASV命令到FTP服務器, 服務器在本地隨機開放一個端口(1024以上),而後把開放的端口告訴客戶端, 客戶端再鏈接到服務器開放的端口進行數據傳輸,原理以下圖:url

    2.兩種模式的比較htm

     從上面的運行原來看到,主動模式和被動模式的不一樣簡單概述爲: 主動模式傳送數據時是「服務器」鏈接到「客戶端」的端口;被動模式傳送數據是「客戶端」鏈接到「服務器」的端口。blog

    主動模式須要客戶端必須開放端口給服務器,不少客戶端都是在防火牆內,開放端口給FTP服務器訪問比較困難。登錄

    被動模式只須要服務器端開放端口給客戶端鏈接就好了。原理

參考文獻 http://www.cnblogs.com/mawanglin2008/articles/3607767.html服務器端

3.java中,內網用被動模式 ,外網鏈接時用主動模式,服務器相應改動(只用上線功能用被動模式去鏈接ftp報錯鏈接不上)ftp

FTPClient ftpClient = new FTPClient();

ftpClient.connect(url, port);

ftpClient.enterLocalActiveMode();    //主動模式 // ftpClient.enterLocalPassiveMode(); 被動模式 ftpClient.setControlEncoding("UTF-8"); ftpClient.changeWorkingDirectory(path);

相關文章
相關標籤/搜索