javaftp被動模式
一.FTP的PORT(主動模式)和PASV(被動模式)
1.
PORT(主動模式)
PORT中文稱為主動模式,工作的原理:
FTP客戶端連接到FTP伺服器的21埠,發送用戶名和密碼登錄,登錄成功後要list列表或者讀取數據時,客戶端隨機開放一個埠(1024以上),發送
PORT命令到FTP伺服器,告訴伺服器客戶端採用主動模式並開放埠;FTP伺服器收到PORT主動模式命令和埠號後,通過伺服器的20埠和客戶端開放的埠連接,發送數據.
2.
PASV(被動模式)
PASV是Passive的縮寫,中文成為被動模式,工作原理:FTP客戶端連接到FTP伺服器的21埠,發送用戶名和密碼登錄,登錄成功後要list列表或者讀取數據時,發送PASV命令到FTP伺服器,
伺服器在本地隨機開放一個埠(1024以上),然後把開放的埠告訴客戶端,
客戶端再連接到伺服器開放的埠進行數據傳輸。
二.兩種模式的比較
從上面的運行原來看到,主動模式和被動模式的不同簡單概述為:
主動模式傳送數據時是「伺服器」連接到「客戶端」的埠;被動模式傳送數據是「客戶端」連接到「伺服器」的埠。
主動模式需要客戶端必須開放埠給伺服器,很多客戶端都是在防火牆內,開放埠給FTP伺服器訪問比較困難。
被動模式只需要伺服器端開放埠給客戶端連接就行了。
三.不同工作模式的網路設置
實際項目中碰到的問題是,FTP的客戶端和伺服器分別在不同網路,兩個網路之間有至少4層的防火牆,伺服器端只開放了21埠,
客戶端機器沒開放任何埠。FTP客戶端連接採用的被動模式,結果客戶端能登錄成功,但是無法LIST列表和讀取數據。很明顯,是因為伺服器端沒開放被動模式下的隨機埠導致。
由於被動模式下,伺服器端開放的埠隨機,但是防火牆要不能全部開放,解決的方案是,在ftp伺服器配置被動模式下開放隨機埠在
50000-60000之間(范圍在ftp伺服器軟體設置,可以設置任意1024上的埠段),然後在防火牆設置規則,開放伺服器端50000-60000之間的埠端。
主動模式下,客戶端的FTP軟體設置主動模式開放的埠段,在客戶端的防火牆開放對應的埠段。
四.如何設置
工作模式
實時上FTP伺服器一般都支持主動和被動模式,連接採用何種模式是有FTP客戶端軟體決定。
㈡ java ftp被動模式 可以限制埠號范圍嗎
這個是FTP軟體配置,,,,,,客戶端和伺服器端,就會協商。
以vsFTP為例子. 修改/etc/vsFTPd/vsFTPd.conf
新增底下四行
listen_port=21
pasv_enable=YES
pasv_min_port=9981
pasv_max_port=9986
㈢ java ftp 和 sftp的區別
FTP是文件傳輸協議。在網站上,如果你想把文件和人共享,最便捷的方式莫過於把文件上傳到FTP伺服器上,其他人通過FTP客戶端程序來下載所需要的文件。 FTP進行文件傳輸需要通過埠進行。一般所需埠為: 1. 控制鏈路—TCP埠21。控制器端。用於發送指令給伺服器以及等待伺服器響應。 2. 數據鏈路---TCP埠20。數據傳輸埠。用來建立數據傳輸通道的。主要用來從客戶向伺服器發送一個文件、從伺服器向客戶發送一個文件、從伺服器向客戶發送文件或目錄列表。 FTP為了適應不同的網路環境,支持主動連接和被動連接兩種模式。這兩種模式都主要針對數據鏈路進行的,跟控制鏈路無關。 FTP的安全隱患: 一、FTP伺服器軟體漏洞。 二、明文口令。 三、FTP旗標。 四、通過FTP伺服器進行埠掃描。 五、數據劫持。 FTP的安全策略: 一、使用較比安全的系統和FTP服務軟體。 二、使用密文傳輸用戶名和口令。 三、更改服務軟體的旗標。 四、加強協議安全性。 SFTP是Secure File Transfer Protocol的縮寫,是安全文件傳送協議。可以為傳輸文件提供一種安全的加密方法。跟ftp幾乎語法功能一樣。 SFTP是SSH的一部分,是一種傳輸檔案至Blogger伺服器的安全方式。它...
㈣ java ftpclient 是主動還是被動模式
正常情況下,默認使用主動模式 連接ftp;如果ftp仍然是登陸成功但是沒有上傳或下載文件,就在登陸後加入一行代碼,客戶端使用被動方式連接ftp服務端
ftpC.login(user, password);
// ftpC.enterLocalPassiveMode();
if (null != remotePath) {
// 打開進入指定目錄
ftpC.changeWorkingDirectory(remotePath);
}
㈤ java連接ftp是主動模式還是被動模式
正常情況下,默認使用主動模式 連接ftp;如果ftp仍然是登陸成功但是沒有上傳或下載文件,就在登陸後加入一行代碼,客戶端使用被動方式連接ftp服務端
ftpC.login(user, password);
// ftpC.enterLocalPassiveMode();
if (null != remotePath) {
// 打開進入指定目錄
ftpC.changeWorkingDirectory(remotePath);
}
㈥ Java已經連接到ftp上了 但是不能在ftp上面操作
如果代碼沒有問題 就是許可權
㈦ java里使用ftpClient的被動方式訪問ftp伺服器讀取一系列文件夾,只有第一個內容能讀到,其他讀不到
你basePath應該有問題,basePath應該指向要刪除目錄的上一級目錄.
㈧ java ftp上傳時報錯。急。
ftp的工作原理
ftp要用到兩個tcp連接即要使用兩個埠
一個是命令鏈路:用來傳遞命令
一個是數據鏈路:用來上傳下載數據
連接ftp server時有active和passive兩種模式
通常使用主動模式可完成上傳下載
主動模式工作原理
客戶端使用命令鏈路主動告訴服務端:我打開了XX埠,你來連我吧
被動模式工作原理
跟主動模式相反,服務端告訴客戶端:我打開了XX埠,你來連我吧
被動模式常用於有防火牆的情況
===============================================
錯誤:
引用
Host attempting data connection ip address is not same as server
解決方法:
引用
remoteverification
This parameter allows to enable/disable remote host connections verification. It should help when getting "Host attempting data connection ip address is not same as server" issue. Disable verification with remoteverification="false". Default is value is "true".
Java代碼
client.setRemoteVerificationEnabled(false);
㈨ 關於JAVA FTP 客戶端程序異常
501 PORT not allowed after EPSV ALL~~~說明還是網路的問題,我對網路不熟~~~比如用ftp工具的時候,有些ftp站點必須採用被動模式才能連接。下面的你看看吧,或許有用,找網管看看應該使用哪種方式訪問
***************************************************
3. EPSV命令
EPSV請求伺服器在一個數據埠上偵聽等待連接,它可以帶參數。對它的響應是TCP埠號。響應的格式與EPRT參數的很象。這對實現上有很大的方便。而且響應還留下了網路協議和/或網路地址的空位,可以供以後使用。使用擴展地址進行被動模式的響應碼必須是229,對它的解釋如下:
2yz 主動完成
x2z 連接
xy9 進行擴展的被動模式
響應的格式如下:
<指示伺服器已經進入初擴展的被動模式>
(<d><d><d><TCP埠><d>)
包括在括弧內的字元串必須是EPRT打開數據連接的埠。具體如上所未,這里就不多說了。數據連接使用的協議必須和控制連接使用的協議和地址一致,下面是響應的一個例子:
Entering Extended Passive Mode (|||6446|)
標准錯誤代碼500和501對EPSV已經足夠了。在EPSV命令沒有使用參數時,伺服器會基於控制連接所使用的協議選擇數據連接使用的網路協議。但是在有代理的情況下,這種機制可能不合適。因此客戶也需要能夠要求一個指定協議。如果伺服器返回說明它在指定埠不支持此協議,客戶必須發送ABOR(放棄)命令使伺服器關閉連接,然後客戶再使用EPSV命令要求使用特定的網路協議,具體格式如下:
EPSV<空格><網路協議>
如果請求的網路協議是伺服器支持的,那就必須使用此協議;如果不支持,則返回522。最後,EPSV命令可以使用參數"ALL"通過網路地址翻譯器,EPRT命令不再使用。下面是例子:
EPSV<空格>ALL
接收到此命令後,伺服器要拒絕除了EPSV以外所有建立連接的命令。在下一節我們將詳細說明此命令的功能。
**********************************************************************
㈩ java遠程進行telnet ftp ssh連接的方法
文件傳輸協議(File Transfer Protocol, FTP)FTP是用於在網路上進行文件傳輸的一套標准協議。 它屬於網路協議組的應用層。 FTP是一個8位的客戶端-伺服器協議, 能操作任何類型的文件而不需要進一步處理, 就像MIME或Unencode一樣。但是, FTP有著極高的延時,這意味著, 從開始請求到第一次接收需求數據之間的時間會非常長, 並且不時的必需執行一些冗長的登陸進程。 概述 FTP服務一般運行在20和21兩個埠。 埠20用於在客戶端和伺服器之間傳輸數據流, 而埠21用於傳輸控制流,並且是命令通向ftp伺服器的進口。 當數據通過數據流傳輸時,控制流處於空閑狀態。 而當控制流空閑很長時間後,客戶端的防火牆會將其會話置為超時, 這樣當大量數據通過防火牆時,會產生一些問題。此時, 雖然文件可以成功的傳輸,但因為控制會話會被防火牆斷開, 傳輸會產生一些錯誤。 FTP實現的目標: 促進文件的共享(計算機程序或數據) 鼓勵間接或者隱式的使用遠程計算機 向用戶屏蔽不同主機中各種文件存儲系統的細節 可靠和高效的傳輸數據 缺點: 密碼和文件內容都使用明文傳輸,可能產生不希望發生的竊聽。 因為必需開放一個隨機的埠以建立連接,當防火牆存在時, 客戶端很難過濾處於主動模式下的FTP流量。 這個問題通過使用被動模式的FTP得到了很大解決。 伺服器可能會被告知連接一個第三方計算機的保留埠。 FTP雖然可以被終端用戶直接使用, 但是它是設計成被FTP客戶端程序所控制。 運行FTP服務的許多站點都開放匿名服務,在這種設置下, 用戶不需要帳號就可以登錄伺服器,默認情況下, 匿名用戶的用戶名是:「anonymous」。 這個帳號不需要密碼, 雖然通常要求輸入用戶的郵件地址作為認證密碼, 但這只是一些細節或者此郵件地址根本不被確定, 而是依賴於FTP伺服器的配置情況。 [編輯] 主動和被動模式 FTP有兩種使用模式:主動和被動。 主動模式要求客戶端和伺服器端同時打開並且監聽一個埠以建立連 接。在這種情況下,客戶端由於安裝了防火牆會產生一些問題。 所以,創立了被動模式。 被動模式只要求伺服器端產生一個監聽相應埠的進程, 這樣就可以繞過客戶端安裝了防火牆的問題。 一個主動模式的FTP連接建立要遵循以下步驟: 客戶端打開一個隨機的埠(埠號大於1024,在這里, 我們稱它為x), 同時一個FTP進程連接至伺服器的21號命令埠。此時, 源埠為隨機埠x,在客戶端,遠程埠為21,在伺服器。 客戶端開始監聽埠(x+1),同時向伺服器發送一個埠命令( 通過伺服器的21號命令埠), 此命令告訴伺服器客戶端正在監聽的埠號並且已准備好從此埠接 收數據。這個埠就是我們所知的數據埠。 伺服器打開20號源埠並且建立和客戶端數據埠的連接。此時, 源埠為20,遠程數據埠為(x+1)。 客戶端通過本地的數據埠建立一個和伺服器20號埠的連接, 然後向伺服器發送一個應答,告訴伺服器它已經建立好了一個連接。 [編輯] FTP和網頁瀏覽器 大多數最新的網頁瀏覽器和文件管理器都能和FTP伺服器建立連接 。這使得在FTP上通過一個介面就可以操控遠程文件, 如同操控本地文件一樣。 這個功能通過給定一個FTP的URL實現,形如ftp://< 伺服器地址>(例如, ftp://ftp.gimp.org )。是否提供密碼是可選擇的,如果有密碼,則形如ftp://< login>:<password>@< ftpserveraddress>。 大部分網頁瀏覽器要求使用被動FTP模式, 然而並不是所有的FTP伺服器都支持被動模式。