ftp被動模式客戶端
『壹』 被動ftp模式是什麼模式
在被動方式FTP中,命令連接和數據連接都由客戶端,這樣就可以解決從伺服器到客戶端的數據埠的入方向連接被防火牆過濾掉的問題。
當開啟一個FTP連接時,客戶端打開兩個任意的非特權本地埠。第一個埠連接伺服器的21埠,但與主動方式的FTP不同,客戶端不會提交PORT命令並允許伺服器來回連它的數據埠,而是提交PASV命令。
這樣做的結果是伺服器會開啟一個任意的非特權埠,並發送PORT P命令給客戶端。然後客戶端發起從本地埠N+1到伺服器的埠P的連接用來傳送數據。
(1)ftp被動模式客戶端擴展閱讀
FTP的傳輸有兩種方式:ASCII、二進制。
1、ASCII傳輸方式
假定用戶正在拷貝的文件包含的簡單ASCII碼文本,如果在遠程機器上運行的不是UNIX,當文件傳輸時ftp通常會自動地調整文件的內容以便於把文件解釋成另外那台計算機存儲文本文件的格式。
但是常常有這樣的情況,用戶正在傳輸的文件包含的不是文本文件,它們可能是程序,資料庫,字處理文件或者壓縮文件。在拷貝任何非文本文件之前,用binary 命令告訴ftp逐字拷貝。
2、二進制傳輸模式
在二進制傳輸中,保存文件的位序,以便原始和拷貝的是逐位一一對應的。即使目的地機器上包含位序列的文件是沒意義的。例如,macintosh以二進制方式傳送可執行文件到Windows系統,在對方系統上,此文件不能執行。
如在ASCII方式下傳輸二進制文件,即使不需要也仍會轉譯。這會導致損壞數據。
『貳』 什麼是ftp的主動模式,被動模式,如何設
在使用ftp的時侯,經常遇到ftp鏈接後出現文件列表錯誤的情況,只是因為ftp的模式不正確,如何設置ftp的工作模式,什麼是主動模式,什麼又是被動模式,主動模式和被動模式有什麼區別,今天搜集了相關資料和常用ftp軟體工作模式的設置的方法:
一、什麼是PASV和PORT方式
(1)PORT其實是Standard模式的另一個名字,又稱為Active模式。中文意思是「主動模式。
(2)PASV也就是Passive的簡寫。中文就是「被動模式。
二、兩者不同
不同之處是由於PORT(主動)這個方式需要在接上TCP
21埠後,伺服器通過自己的TCP
20來發出數據。並且需要建立一個新的連接來傳送檔案。而PORT的命令包含一些客戶端沒用的資料,所以有了PASv的出現。而PASV模式擁有PORT模式的優點,並去掉一些PORT的缺點。PASV運行方式就是當伺服器接收到客戶端連接請求時,就會自動從埠1024到5000中隨機選擇一個和客戶端建立連接傳遞數據。由於被動且自動建立連接,容易受到攻擊,所以安全性差。
三、常見的FTP客戶端軟體PORT方式與PASV方式的切換方法
大部分FTP客戶端默認使用PASV方式。IE默認使用PORT方式。
在大部分FTP客戶端的設置里,常見到的字眼都是「PASV」或「被動模式」,極少見到「PORT」或「主動模式」等字眼。因為FTP的登錄方式只有兩種:PORT和PASV,取消PASV方式,就意味著使用PORT方式。
(1)IE:工具
->
Internet選項
->
高級
->
「使用被動FTP」(需要IE6.0以上才支持)。
(2)CuteFTP:Edit
->
Setting
->
Connection
->
Firewall
->
「PASV
Mode」
或File
->
Site
Manager,在左邊選中站點
->
Edit
->
「Use
PASV
mode」
。
(3)FlashGet:工具
->
選項
->
代理伺服器
->
直接連接
->
編輯
->
「PASV模式」。
(4)FlashFXP:選項
->
參數選擇
->
代理/防火牆/標識
->
「使用被動模式」
或
站點管理
->
對應站點
->
選項
->
「使用被動模式」或快速連接
->
切換
->
「使用被動模式」。
『叄』 FTP主動模式和被動模式的區別
FTP主動模式就是FTP會用自己的20埠去主動得跟客戶端建立連接,當客戶端網路做NAT的時候會發生錯誤。把NAT的埠認為是客戶端與FTP 20埠建立連接的
被動模式就是當建立ftp連接後,客戶端發送一個被動模式請求給伺服器,伺服器選擇一個數據埠監聽,並把埠告訴客戶端,客戶端直接向數據埠發起連接,這樣,即使中間有做NAT也不影響FTP數據傳輸通道建立
『肆』 使用被動ftp模式需要關掉嗎
使用被動ftp模式不需要關掉。在被動方式FTP中,命令連接和數據連接都由客戶端,這樣就可以解決從伺服器到客戶端的數據埠的入方向連接被防火牆。
ftp的工作原理
FTP 採用 Internet 標准文件傳輸協議 FTP 的用戶界面, 向用戶提供了一組用來管理計算機之間文件傳輸的應用程序。FTP 是基於客戶模型而設計的,在客戶端與 FTP 伺服器之間建立兩個連接。開發任何基於 FTP 的客戶端軟體都必須遵循 FTP 的工作原理。
FTP 的獨特的優勢同時也是與其它客戶伺服器程序最大的不同點就在於它在兩台通信的主機之間使用了兩條 TCP 連接,一條是數據連接,用於數據傳送;另一條是控制連接,用於傳送控制信息命令和響應。
這種將命令和數據分開傳送的思想大大提高了 FTP 的效率,而其它客戶伺服器應用程序一般只有一條 TCP 連接。圖 1 給出了 FTP 的基本模型。客戶有三個構件:用戶介面、客戶控制進程和客戶數據傳送進程。
『伍』 java ftpclient 是主動還是被動模式
正常情況下,默認使用主動模式 連接ftp;如果ftp仍然是登陸成功但是沒有上傳或下載文件,就在登陸後加入一行代碼,客戶端使用被動方式連接ftp服務端
ftpC.login(user, password);
// ftpC.enterLocalPassiveMode();
if (null != remotePath) {
// 打開進入指定目錄
ftpC.changeWorkingDirectory(remotePath);
}
『陸』 ftp的主動模式和被動模式的區別
主動FTP對FTP伺服器的管理有利,但對客戶端的管理不利。因為FTP伺服器企圖與客戶端的高位隨機埠建立連接,而這個埠很有可能被客戶端的防火牆阻塞掉。
被動FTP對FTP客戶端的管理有利,但對伺服器端的管理不利。因為客戶端要與伺服器端建立兩個連接,其中一個連到一個高位隨機埠,而這個埠很有可能被伺服器端的防火牆阻塞掉。
『柒』 ftp客戶端有主動模式和被動模式是什麼意思
主動FTP
主動方式的FTP是這樣的:客戶端從一個任意的非特權埠N(N>1024)連接到FTP伺服器的命令埠,也就是21埠。然後客戶端開始監聽端
口N+1,並發送FTP命令「port N+1」到FTP伺服器。接著伺服器會從它自己的數據埠(20)連接到客戶端指定的數據埠(N+1)。
針對FTP伺服器前面的防火牆來說,必須允許以下通訊才能支持主動方式FTP:
1. 任何埠到FTP伺服器的21埠 (客戶端初始化的連接 S<-C)
2. FTP伺服器的21埠到大於1024的埠(伺服器響應客戶端的控制埠 S->C)
3. FTP伺服器的20埠到大於1024的埠(伺服器端初始化數據連接到客戶端的數據埠 S->C)
4. 大於1024埠到FTP伺服器的20埠(客戶端發送ACK響應到伺服器的數據埠 S<-C)
在第1步中,客戶端的命令埠與FTP伺服器的命令埠建立連接,並發送命令「PORT
1027」。然後在第2步中,FTP伺服器給客戶端的命令埠返回一個"ACK"。在第3步中,FTP伺服器發起一個從它自己的數據埠(20)到客
戶端先前指定的數據埠(1027)的連接,最後客戶端在第4步中給伺服器端返回一個"ACK"。
主動方式FTP的主要問題實際上在於客戶端。FTP的客戶端並沒有實際建立一個到伺服器數據埠的連接,它只是簡單的告訴伺服器自己監聽的埠號,伺服器
再回來連接客戶端這個指定的埠。對於客戶端的防火牆來說,這是從外部系統建立到內部客戶端的連接,這是通常會被阻塞的。
主動FTP的例子
下面是一個主動FTP會話的實際例子。當然伺服器名、IP地址和用戶名都做了改動。在這個例子中,FTP會話從
testbox1.slacksite.com
(192.168.150.80),一個運行標準的FTP命令行客戶端的Linux工作站,發起到testbox2.slacksite.com
(192.168.150.90),一個運行ProFTPd
1.2.2RC2的Linux工作站。debugging(-d)選項用來在FTP客戶端顯示連接的詳細過程。紅色的文字是
debugging信息,顯示的是發送到伺服器的實際FTP命令和所產生的回應信息。伺服器的輸出信息用黑色字表示,用戶的輸入信息用粗體字表示。
仔細考慮這個對話過程我們會發現一些有趣的事情。我們可以看到當 PORT
命令被提交時,它指定了客戶端(192.168.150.80)上的一個埠而不是伺服器的。當我們用被動FTP時我們會看到相反的現象。我們再來關注
PORT命令的格式。就象你在下面的例子看到的一樣,它是一個由六個被逗號隔開的數字組成的序列。前四個表示IP地址,後兩個組成了用於數據連接的埠
號。用第五個數乘以256再加上第六個數就得到了實際的埠號。下面例子中埠號就是( (14*256) + 178) =
3762。我們可以用netstat來驗證這個埠信息。
testbox1: {/home/p-t/slacker/public_html} % ftp -d testbox2
Connected to testbox2.slacksite.com.
220 testbox2.slacksite.com FTP server ready.
Name (testbox2:slacker): slacker
---> USER slacker
331 Password required for slacker.
Password: TmpPass
---> PASS XXXX
230 User slacker logged in.
---> SYST
215 UNIX Type: L8
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
ftp: setsockopt (ignored): Permission denied
---> PORT 192,168,150,80,14,178
200 PORT command successful.
---> LIST
150 Opening ASCII mode data connection for file list.
drwx------ 3 slacker users 104 Jul 27 01:45 public_html
226 Transfer complete.
ftp> quit
---> QUIT
221 Goodbye.
被動FTP
為了解決伺服器發起到客戶的連接的問題,人們開發了一種不同的FTP連接方式。這就是所謂的被動方式,或者叫做PASV,當客戶端通知伺服器它處於被動模式時才啟用。
在被動方式FTP中,命令連接和數據連接都由客戶端,這樣就可以解決從伺服器到客戶端的數據埠的入方向連接被防火牆過濾掉的問題。當開啟一個
FTP連接時,客戶端打開兩個任意的非特權本地埠(N >
1024和N+1)。第一個埠連接伺服器的21埠,但與主動方式的FTP不同,客戶端不會提交PORT命令並允許伺服器來回連它的數據埠,而是提交
PASV命令。這樣做的結果是伺服器會開啟一個任意的非特權埠(P > 1024),並發送PORT
P命令給客戶端。然後客戶端發起從本地埠N+1到伺服器的埠P的連接用來傳送數據。
對於伺服器端的防火牆來說,必須允許下面的通訊才能支持被動方式的FTP:
1. 從任何埠到伺服器的21埠 (客戶端初始化的連接 S<-C)
2. 伺服器的21埠到任何大於1024的埠 (伺服器響應到客戶端的控制埠的連接 S->C)
3. 從任何埠到伺服器的大於1024埠 (入;客戶端初始化數據連接到伺服器指定的任意埠 S<-C)
4. 伺服器的大於1024埠到遠程的大於1024的埠(出;伺服器發送ACK響應和數據到客戶端的數據埠 S->C)
畫出來的話,被動方式的FTP連接過程大概是下圖的樣子:
在第1步中,客戶端的命令埠與伺服器的命令埠建立連接,並發送命令「PASV」。然後在第2步中,伺服器返回命令"PORT
2024",告訴客戶端(伺服器)用哪個埠偵聽數據連接。在第3步中,客戶端初始化一個從自己的數據埠到伺服器端指定的數據埠的數據連接。最後服
務器在第4 步中給客戶端的數據埠返回一個"ACK"響應。
被動方式的FTP解決了客戶端的許多問題,但同時給伺服器端帶來了更多的問題。最大的問題是需要允許從任意遠程終端到伺服器高位埠的連接。幸運的是,許多FTP守護程序,包括流行的WU-FTPD允許管理員指定FTP伺服器使用的埠范圍。詳細內容參看附錄1。
第二個問題是客戶端有的支持被動模式,有的不支持被動模式,必須考慮如何能支持這些客戶端,以及為他們提供解決辦法。例如,Solaris提供的FTP命令行工具就不支持被動模式,需要第三方的FTP客戶端,比如ncftp。
隨著WWW的廣泛流行,許多人習慣用web瀏覽器作為FTP客戶端。大多數瀏覽器只在訪問ftp://這樣的URL時才支持被動...??的配置。
被動FTP的例子
下面是一個被動FTP會話的實際例子,只是伺服器名、IP地址和用戶名都做了改動。在這個例子中,FTP會話從
testbox1.slacksite.com
(192.168.150.80),一個運行標準的FTP命令行客戶端的Linux工作站,發起到testbox2.slacksite.com
(192.168.150.90),一個運行ProFTPd
1.2.2RC2的Linux工作站。debugging(-d)選項用來在FTP客戶端顯示連接的詳細過程。紅色的文字是
debugging信息,顯示的是發送到伺服器的實際FTP命令和所產生的回應信息。伺服器的輸出信息用黑色字表示,用戶的輸入信息用粗體字表示。
注意此例中的PORT命令與主動FTP例子的不同。這里,我們看到是伺服器(192.168.150.90)而不是客戶端的一個埠被打開了。可以跟上面的主動FTP例子中的PORT命令格式對比一下。
testbox1: {/home/p-t/slacker/public_html} % ftp -d testbox2
Connected to testbox2.slacksite.com.
220 testbox2.slacksite.com FTP server ready.
Name (testbox2:slacker): slacker
---> USER slacker
331 Password required for slacker.
Password: TmpPass
---> PASS XXXX
230 User slacker logged in.
---> SYST
215 UNIX Type: L8
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> passive
Passive mode on.
ftp> ls
ftp: setsockopt (ignored): Permission denied
---> PASV
227 Entering Passive Mode (192,168,150,90,195,149).
---> LIST
150 Opening ASCII mode data connection for file list
drwx------ 3 slacker users 104 Jul 27 01:45 public_html
226 Transfer complete.
ftp> quit
---> QUIT
221 Goodbye.
總結
下面的圖表會幫助管理員們記住每種FTP方式是怎樣工作的:
主動FTP:
命令連接:客戶端 >1024埠 -> 伺服器 21埠
數據連接:客戶端 >1024埠 <- 伺服器 20埠
被動FTP:
命令連接:客戶端 >1024埠 -> 伺服器 21埠
數據連接:客戶端 >1024埠 -> 伺服器 >1024埠
下面是主動與被動FTP優缺點的簡要總結:
主動FTP對FTP伺服器的管理有利,但對客戶端的管理不利。因為FTP伺服器企圖與客戶端的高位隨機埠建立連接,而這個埠很有可能被客戶端的防火牆
阻塞掉。被動FTP對FTP客戶端的管理有利,但對伺服器端的管理不利。因為客戶端要與伺服器端建立兩個連接,其中一個連到一個高位隨機埠,而這個埠
很有可能被伺服器端的防火牆阻塞掉。
幸運的是,有折衷的辦法。既然FTP伺服器的管理員需要他們的伺服器有最多的客戶連接,那麼必須得支持被動FTP。我們可以通過為FTP伺服器指定一個有
限的埠范圍來減小伺服器高位埠的暴露。這樣,不在這個范圍的任何埠會被伺服器的防火牆阻塞。雖然這沒有消除所有針對伺服器的危險,但它大大減少了危
險。詳細信息參看附錄1。
參考資料
O'Reilly出版的《組建Internet防火牆》(第二版,Brent Chapman,Elizabeth Zwicky著)是一本很不錯的參考資料。裡面講述了各種Internet協議如何工作,以及有關防火牆的例子。
最權威的FTP參考資料是RFC 959,它是FTP協議的官方規范。RFC的資料可以從許多網站上下載,例如:ftp://nic.merit.e/documents/rfc/rfc0959.txt 。
Active FTP vs. Passive FTP, Appendix 1
『捌』 ftp客戶端有主動模式和被動模式是什麼意思
通常21埠是命令埠,20埠是數據埠。當混入主動/被動模式的概念時,數據埠就有可能不是20了。
『玖』 大白話解釋一下「被動FTP模式」是什麼意思
FTP中的兩種工作方式--Standard(PORT)和Passive
FTP是一種文件傳輸協議,它支持兩種模式,一種方式叫做Standard
(也就是
Active,主動方式),一種是
Passive
(也就是PASV,被動方式)。
Standard模式
FTP的客戶端發送
PORT
命令到FTP
server。Passive模式FTP的客戶端發送
PASV命令到
FTP
Server。
下面介紹一個這兩種方式的工作原理:
Standard模式FTP:客戶端首先和FTP
Server的TCP
21埠建立連接,通過這個通道發送命令,客戶端需要接收數據的時候在這個通道上發送PORT命令。
PORT命令包含了客戶端用什麼埠接收數據。在傳送數據的時候,伺服器端通過自己的TCP
20埠發送數據。
FTP
server必須和客戶端建立一個新的連接用來傳送數據。
Passive模式:在建立控制通道的時候和Standard模式類似,當客戶端通過這個通道發送PASV
命令的時候,FTP
server打開一個位於1024和5000之間的隨機埠並且通知客戶端在這個埠上傳送數據的請求,然後FTP
server
將通過這個埠進行數據的傳送,這個時候FTP
server不再需要建立一個新的和客戶端之間的連接。
『拾』 Linux裡面FTP主被動模式區別是什麼
題主你好,
首先要說的是FTP的通信是由兩部分組成的: 發送命令 + 傳輸數據.
換種說法就是: 發送命令 與 傳輸數據 是走的兩條道(不同的tcp連接).
發送命令 這條道方向是固定的, 總是由客戶端向服務端發起請求把這條道鋪起來.
而 傳輸數據 這條道方向就不是固定的了, 可能與 發送命令 一樣, 也是由客戶端向服務端發起請求, 還可能是反向的,即由服務端向客戶端發起請求來鋪起傳輸數據的這條道.
而題主的問題里所說的FTP主動被模式其實指的就是 傳輸數據 這條道的鋪設到底是 誰向誰發起請求? 這里的主被動是根據 服務端 來說的, 即 服務端主動向客戶端發起的就是所謂的主動模式, 反之, 客戶端向服務端發起的(服務端被連接),即是被動模式
最後再說下區別: 一開始的ftp只有主動模式,即服務端主動向客戶端發請求建立連接,然後利用建立的這個連接進行數據傳輸. 但後來客戶端這邊的防火牆很多時候為了安全考慮只相信自己向外發送的請求, 不相信外面連進來的請求,會把從外向內的請求給截斷,說白了就是數據傳輸這條道沒建成, 數據肯定就傳輸不了的. 所以後來又開發了被動模式,讓客戶端主動向服務端發請求建立連接, 這樣防火牆一看是從自己家主動發出去的,就不會攔截,這樣路鋪好了, 數據自然能成功傳輸了.
寫在最後: 希望可以幫到題主, 歡迎追問.