ftp 主動和被動

1. FTP的主動模式與被動模式:

FTP服務器使用20和21兩個網絡端口與FTP客戶端進行通信.

FTP服務器的21端口用於傳輸FTP的控制命令,20端口用於傳輸文件數據.

FTP主動模式:

 FTP客戶端向服務器的FTP控制端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路;當需要傳送數據時,客戶端在命令鏈路上用PORT的命令告訴服務器我開放了某端口,你過來連接我.於是服務器從20端口向客戶端的該端口發送連接請求,建立一條數據鏈路來傳送數據.在數據鏈路建立過程中是服務器主動請求,所以稱爲主動模式.

FTP被動模式:

FTP客戶端向服務器的FTP控制端口(默認21)發送連接請求,服務器接受連接,建立一條命令鏈路;當需要傳送數據時,服務器在命令鏈路上用PASV命令告訴客戶端,我打開了某端口,你過來連我.於是客戶端向服務器的該端口發送連接請求,建立一條數據鏈路來傳送數據.在數據鏈路建立的過程中是服務器被動等待客戶機的請求,所以稱被動模式.

由上面幾點可以看出,FTP服務器的主動與被動模式是以FTP服務器進行數據傳送連接的主動或被動爲依據的.

      對於FTP服務器與客戶機之間存在的網絡防火牆,不論是服務器側還是客戶機側的網絡防火牆設置策略都要保證FTP服務器和客戶端之間能夠正常建立命令鏈路和數據鏈路.

主動模式下:

客戶機服務器之間建立連接時,客戶機是大於1024的端口上,服務器是 20 端口。

客戶機的端口是大於1024的,而服務器的端口是 21 端口接收請求,而是 20 端口給客戶機迴應。

允許FTP客戶機從大於1024的端口連接服務器的21端口.

允許FTP服務器從21端口迴應FTP客戶機中大於1024端口的網絡連接.

允許FTP服務器從20端口主動連接FTP客戶機中大於1024的端口

允許FTP客戶機從大於1024的端口迴應來自FTP服務器的20端口的網絡連接.

被動模式下:

客戶機服務器之間建立連接都是在大於1024的端口上的。

客戶機的端口是大於1024的,而服務器的端口是 21 端口接收請求,而是從大於1024 端口給客戶機迴應。

允許FTP客戶機從大於1024的端口連接服務器的21端口.

允許FTP服務器從21端口迴應FTP客戶機中大於1024端口的網絡連接.

允計FTP客戶機從大於1024的端口連接FTP服務器的大於1024端口.

允許FTP服務器從大於1024的端口迴應來自FTP客戶機大於1024端口的網絡連接.

2. ftp客戶端有主動模式和被動模式是什麼意思?

2.1 主動FTP

主動方式的FTP是這樣的:客戶端從一個任意的非特權端口N(N>1024)連接到FTP服務器的命令端口,也就是21端口。然後客戶端開始監聽端

口N+1,併發送FTP命令port N+1”到FTP服務器。接着服務器會從它自己的數據端口(20)連接到客戶端指定的數據端口(N+1)。

2.1.1 支持主動方式FTP的條件:

針對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的客戶端並沒有實際建立一個到服務器數據端口的連接,它只是簡單的告訴服務器自己監聽的端口號,服務器

再回來連接客戶端這個指定的端口。對於客戶端的防火牆來說,這是從外部系統建立到內部客戶端的連接,這是通常會被阻塞的。

 

2.1.2主動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.

 

2.2、被動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時才支持被動...??的配置。

 

2.2.1 被動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.

 

2.3、總結 FTP主被動

 

下面的圖表會幫助管理員們記住每種FTP方式是怎樣工作的:

2.3.1 主動FTP

命令連接:客戶端 >1024端口 -> 服務器 21端口

數據連接:客戶端 >1024端口 <- 服務器 20端口

2.3.2 被動FTP

命令連接:客戶端 >1024端口 -> 服務器 21端口

數據連接:客戶端 >1024端口 -> 服務器 >1024端口

2.3.3 主動與被動FTP優缺點的簡要總結:

主動FTP對FTP服務器的管理有利,但對客戶端的管理不利。因爲FTP服務器企圖與客戶端的高位隨機端口建立連接,而這個端口很有可能被客戶端的防火牆阻塞掉。

被動FTP對FTP客戶端的管理有利,但對服務器端的管理不利。因爲客戶端要與服務器端建立兩個連接,其中一個連到一個高位隨機端口,而這個端口很有可能被服務器端的防火牆阻塞掉。幸運的是,有折衷的辦法。既然FTP服務器的管理員需要他們的服務器有最多的客戶連接,那麼必須得支持被動FTP。我們可以通過爲FTP服務器指定一個有限的端口範圍來減小服務器高位端口的暴露。這樣,不在這個範圍的任何端口會被服務器的防火牆阻塞。雖然這沒有消除所有針對服務器的危險,但它大大減少了危險。

詳細信息參看附錄1。

1.3.4 參考資料

O'Reilly出版的《組建Internet防火牆》(第二版,Brent Chapman,Elizabeth Zwicky著)是一本很不錯的參考資料。裏面講述了各種Internet協議如何工作,以及有關防火牆的例子。

 

最權威的FTP參考資料是RFC 959,它是FTP協議的官方規範。RFC的資料可以從許多網站上下載,例如:ftp://nic.merit.edu/documents/rfc/rfc0959.txt 。

 

Active FTP vs. Passive FTP, Appendix 1

FTP主動與被動的好處和壞處:

在ISA工業標準架構體系Industry Standard ArchitectureIBM PC兼容機上的一種總線)的情況,如果採用被動模式,由於IIS是完全隨機的選擇一個端口,並告知客戶,然後客戶進行主動連接,這就意味着在ISA上,你要讓所有的端口都允許動態入站連接才行,這樣肯定不行,因爲太危險了,等於打開了所有的端口連接。 
       如果採用主動模式(PORT Mode),IIS選擇好端口後,主動與客戶進行連接,這時候不需要像PASV模式那樣打開所有的動態入站連接,而且正好相反,我們需要打開所有的動態出站連接即可,安全性增加很多。而且由ISA的IP PACKET FILTER只對ISA本機起作用,不會造成局域網內的客戶“放了羊”。

 

3. FTP主動模式及被動模式

FTP的特殊性: 
大多數的TCP服務是使用單個的連接,一般是客戶向服務器的一個周知端口發起連接,然後使用這個連接進行通訊。但是,FTP協議卻有所不同,它使用雙向的多個連接,而且使用的端口很難預計。一般,FTP連接包括:

一個控制連接(control connection) 
這個連接用於傳遞客戶端的命令和服務器端對命令的響應。它使用服務器的21端口,生存期是整個FTP會話時間。

幾個數據連接(data connection) 
這些連接用於傳輸文件和其它數據,例如:目錄列表等。這種連接在需要數據傳輸時建立,而一旦數據傳輸完畢就關閉,每次使用的端口也不一定相同。而且,數據連接既可能是客戶端發起的,也可能是服務器端發起的。

在FTP協議中,控制連接使用周知端口21,因此使用ISA的IP PACKET FILTER就可以這種連接進行很好的安全保護。相反,數據傳輸連接的目的端口通常實現無法知道,因此處理這樣的端口轉發非常困難。FTP協議使用一個標準的端口21作爲ftp-data端口,但是這個端口只用於連接的源地址是服務器端的情況,在這個端口上根本就沒有監聽進程。FTP的數據連接和控制連接的方向一般是相反的,也就是說,是服務器向客戶端發起一個用於數據傳輸的連接。連接的端口是由服務器端和客戶端協商確定的。FTP協議的這個特徵對ISA轉發以及防火牆和NAT的配置增加了很多困難。

除此之外,還有另外一種FTP模式,叫做被動模式(passive mod)。在這種模式下,數據連接是由客戶程序發起的,和剛纔討論過的模式(我們可以叫做主動模式)相反。是否採取被動模式取決於客戶程序,在ftp命令行中使用passive命令就可以關閉/打開被動模式。

前面我們講過,FTP協議的數據傳輸存在兩種模式:主動模式和被動模式。這兩種模式發起連接的方向截然相反,主動模式是從服務器端向客戶端發起;被動模式是客戶端向服務器端發起連接。

我們回到ISA的情況,如果採用被動模式,由於IIS是完全隨機的選擇一個端口,並告知客戶,然後客戶進行主動連接,這就意味着在ISA上,你要讓所有的端口都允許動態入站連接才行,這樣肯定不行,因爲太危險了,等於打開了所有的端口連接。 
如果採用主動模式(PORT Mode),IIS選擇好端口後,主動與客戶進行連接,這時候不需要像PASV模式那樣打開所有的動態入站連接,而且正好相反,我們需要打開所有的動態出站連接即可,安全性增加很多。而且由ISA的IP PACKET FILTER只對ISA本機起作用,不會造成局域網內的客戶“放了羊”。

所以,我個人這樣做的: 
(1)由於IIS和ISA都在一臺機器上,所以它倆都在偵聽21號端口(IIS默認情況下會偵聽所有地址的21端口),所以我們首先要讓IIS只偵聽內

網地址的PORT 21,在DOS下,你可以通過NETSTAT -NA > abc.txt,然後打開這個文件,你會看到0.0.0.0 21 LISTENING字樣。 
輸入如下命令: 
net stop msftpsvc (停止FTP服務) 
進入\Inetpub\adminscripts\目錄 
cscript adsutil.vbs set msftpsvc/disablesocketpooling true (停止偵聽) 
net start msftpsvc (啓動FTP服務) 
(2)在IIS控制檯裏面,ftp->Property->FTP Site->IP Address改爲內網地址。現在,FTP服務只偵聽內網IP的21號端口了。 
(3)大家可能這時候有疑問,如果是IIS主動連接客戶端,那客戶端的防火牆是不是會阻止這個連接(PASV模式不存在這個問題)。爲了防止這種情況,我們可以強制IIS不能與客戶端的任意端口進行連接,而只有客戶端連接IIS的端口進行數據傳輸。這樣就可以解決PORT MODE與客戶端防火牆的衝突。方法:修改註冊

表,HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Msftpsvc\Parameters\,將EnablePortAttack的值由0改爲1,然後重新啓動FTP服務。 
(4)在ISA裏面,使用SERVER PUBLISH的方法發佈FTP服務,其中:IP address of internal server 填寫ISA的內部網卡的IP,IP address of external server 填寫ISA的外部網卡的IP,Mapped server protocol 選擇 FTP Server。 
(5)然後在IP Packet Filter建立一條新RULES,Protocol->TCP,Direction->Outbound,Local Port->Dymanic,Remote Port->All。

這是我的解決辦法,但是並不完美,主要是: 
(1)客戶不能使用PASV方法進行連接,原因上面已經講了。 
(2)由於第五條,所以ISA服務器隨着保證了對外部訪問的限制,卻無法限制ISA本機對外部的訪問。

我也把我的方法做了一下實驗,使用serv-u做的,有一點錯誤,不過終歸做了出來,下面總結一下:

PASV服務器放在ISA後面,其實就是要解決兩個問題:

1。PASV的端口。我上面的方法提出使用secondary connection,但事實證明不對,應該每個PASV端口都建立一條primary connection,然後分別建立server publishing rules,有多少個PASV端口,就要建立多少條。

這裏還可以引出另一個話題,就是對web publishing rules的運用,tony你應該知道,通過web publishing rules也可以發佈ftp服務器,但rule裏面只給了一個ftp端口的選項,很明顯,這是爲PORT模式的FTP服務器準備的,因爲PORT模式的數據連接是由服務器發起的,在服務器一邊,不存在穿過防火牆的問題。

使用web publishing rules還有一個很令人振奮的特性,就是支持動態公用IP用戶,不需要象server publishing rules那樣,每撥一次號都要修改一次外部地址。如果在web publishing rules中也能搞定PASV問題,那麼對於那些使用撥號上網而又想在內網發佈PASV服務器的人來說,簡直是天大的喜訊。

需要好好考慮的是如何通過那個只能填一個端口的選項來發布隨機的PASV端口?我從今天的實驗找到了一點靈感,就是也象上面說的那樣,每個PASV端口都設置一條web publishing rules!我還未做這個實驗,還不能證實這樣做行不行,相信晚上就會有結果了。

當然,還需要考慮如何控制PASV模式端口的範圍,serv-u可以設定,而IIS的FTP不行。

2。是服務器向客戶端傳送IP的問題。當FTP客戶端登錄進入服務器的時候,PASV模式服務器會向客戶端傳送本機的IP地址和數據端口,當服務器放在內網中的時候,服務器會向客戶端返回內網的IP,這當然是不能完成連接的,需要讓服務器返回ISA的外網地址。本來,解決方法可以使用firwall client的application settings中的nameresolutionforlocalhost參數,設爲P就可以讓應用程序返回ISA的外網地址,但這個參數是供firewall client使用的,而發佈服務器不能安裝firewall client,這很可惜。

幸好,還是有一個好消息,就是serv-u本身具有返回ISA外網地址這樣的功能,方法是先選中新建FTP服務器的屬性,在domain標籤裏選擇“enable dynamic dns”,此時會出現第二個標籤,叫“dynamic dns”,然後到tz0.com申請動態域名,申請後會得到一個key,在此標籤中填入此key即可。最後一步,是到新建服務器的settings屬性中,選擇advanced標籤,選中“allow passive mode data transfer”,旁邊的IP地址框留空。這個框對於撥號用戶不用填,只有出口使用固定地址才需要填。

這樣,serv-u向客戶端返回IP和端口前,會先向tz0.com查詢到ISA外網的地址,再發送給客戶端。

解決了這兩個問題,剩下的工作就簡單了。

從以上內容也可以說明一點,從內網不能發佈IIS的FTP服務器,因爲IIS既沒有選項可以選擇PASV端口的範圍,也沒有辦法讓其返回ISA外網的地址。而serv-u這兩條都可以滿足。當然,在微軟的網站上也可能有方法解決IIS的這兩個問題。

發佈FTP服務器的時候,要注意FTP服務器有PORT和PASV兩種模式。兩者的共同點,是都使用21端口進行用戶驗證及管理,差別在於傳送數據的方式不同,PORT模式的FTP服務器數據端口固定在20,而PASV模式則在1025-65535之間隨機。發佈的時候要考慮這個差別。 
如果FTP服務器在內部網絡中,在建立server publish rules時(雖然web publish rules也能發佈ftp服務器,但它並沒有提供對port和pasv模式的處理),protocol definitions中的21 inbound條目要建立一個secondary connection,爲20端口上的inbound或1025-65535端口之間的inbound。 
如果FTP服務器建立在ISA服務器上,就需要在ip packet filters中設置相關的條目,對於PORT模式,很簡單,開放20 inbound就是,但pasv模式就麻煩一點,因爲ip packet filters不能設置端口段,但我們也不可能把幾萬個端口逐個寫一遍,只能把local port設置爲dynamic,remote port設置爲all ports,當然,對安全性這是個損害。 
幸運的是,有些PASV模式的FTP服務器能夠設置PASV模式端口的範圍,比如serv-u,它能夠把PASV模式端口控制在最多50個端口範圍內,如果爲serv-u設置的併發用戶數不多,那麼我們就可以爲每個PASV端口寫一條filter,不需要開放所有的端口了。如果使用IIS的FTP服務器,這個FTP服務器沒有提供選擇PASV模式端口的功能,只能如上所述那樣,開放dynamic和all ports。 
從你上面的出錯信息來看,你應該是使用IE來訪問FTP服務器吧。IE的FTP客戶端與其它專業FTP客戶端不同,不能夠自動檢測FTP服務器的類型以及根據服務器的類型改變客戶端的種類。IE只提供了一個手工選項來改變PORT和PASV客戶端角色,就是internet選項->高級->爲FTP站點啓用文件夾視圖,選擇它,IE爲PASV模式客戶端,不選則爲PORT客戶端。你需要根據服務器的類型手工更改這個選項。如果服務器的出口是ADSL類的鏈路,還要把“使用被動FTP(爲防火牆和DSL調制解調器兼容性)”一項選上,這兩個選項只在IE5。5以上版本提供。

 

4. FTP使用經典常用命令

FTP命令是Internet用戶使用最頻繁的命令之一,不論是在DOS還是UNIX操作系統下使用FTP,都會遇到大量的FTP內部命令。 熟悉並靈活應用FTP的內部命令,可以大大方便使用者,並收到事半功倍之效。 
FTP的命令行格式爲: ftp -v -d -i -n -g [主機名] ,其中-v 顯示遠程服務器的所有響應信息;

-n 限制ftp的自動登錄,即不使用;

.n etrc文件;

-d 使用調試方式;

-g 取消全局文件名。

ftp使用的內部命令如下(中括號表示可選項):

1.![cmd[args}:在本地機中執行交互shellexit回到ftp環境,如:!ls*.zip.

2.$ macro-ame[args]:執行宏定義macro-name.

3.account[password]:提供登錄遠程系統成功後訪問系統資源所需的補充口令。

4.append local-file[remote-file]:將本地文件追加到遠程系統主機,若未指定遠程系統文件名,則使用本地文件名。

5.ascii:使用ascii類型傳輸方式。

6.bell:每個命令執行完畢後計算機響鈴一次。

7.bin:使用二進制文件傳輸方式。

8.bye:退出ftp會話過程。

9.case:在使用mget時,將遠程主機文件名中的大寫轉爲小寫字母。

10.cd remote-dir:進入遠程主機目錄。

11.cdup:進入遠程主機目錄的父目錄。

12.chmod mode file-name:將遠程主機文件file-name的存取方式設置爲mode,如: chmod 777 a.out 

13.close:中斷與遠程服務器的ftp會話(open對應)

14.cr:使用asscii方式傳輸文件時,將回車換行轉換爲回行。

15.delete remote-file:刪除遠程主機文件。

16.debug[debug-value]:設置調試方式,顯示發送至遠程主機的每條命令,如: deb up 3,若設爲0,表示取消debug

17.dir[remote-dir][local-file]:顯示遠程主機目錄,並將結果存入本地文件local-file

18.disconnection:同close

19.form format:將文件傳輸方式設置爲format,缺省爲file方式。

20.get remote-file[local-file]:將遠程主機的文件remote-file傳至本地硬盤的local-file

21.glob:設置mdeletemgetmput的文件名擴展,缺省時不擴展文件名,同命令行的-g參數。

22.hash:每傳輸1024字節,顯示一個hash符號(#)

23.help[cmd]:顯示ftp內部命令cmd的幫助信息,如:help get

24.idle[seconds]:將遠程服務器的休眠計時器設爲[seconds]秒。

25.image:設置二進制傳輸方式(binary)

26.lcd[dir]:將本地工作目錄切換至dir

27.ls[remote-dir][local-file]:顯示遠程目錄remote-dir,並存入本地文件local-file

28.macdef macro-name:定義一個宏,遇到macdef下的空行時,宏定義結束。

29.mdelete[remote-file]:刪除遠程主機文件。

30.mdir remote-files local-file:與dir類似,但可指定多個遠程文件,如: mdir *.o.*.zipoutfile 

31.mget remote-files:傳輸多個遠程文件。

32.mkdir dir-name:在遠程主機中建一目錄。

33.mls remote-file local-file:同nlist,但可指定多個文件名。

34.mode[modename]:將文件傳輸方式設置爲modename,缺省爲stream方式

35.modtime file-name:顯示遠程主機文件的最後修改時間。

36.mput local-file:將多個文件傳輸至遠程主機。

37.newer file-name:如果遠程機中file-name的修改時間比本地硬盤同名文件的時間更近,則重傳該文件。

38.nlist[remote-dir][local-file]:顯示遠程主機目錄的文件清單,並存入本地硬盤的local-file

39.nmap[inpattern outpattern]:設置文件名映射機制,使得文件傳輸時,文件中的某些字符相互轉換,如:nmap $1.$2.$3[$1$2].[$2$3],則傳輸文件a1.a2.a3時,文件名變爲a1a2。該命令特別適用於遠程主機爲非UNIX機的情況。

40.ntrans[inchars[outchars}:設置文件名字符的翻譯機制,如ntrans1R,則文件名LLL將變爲RRR

41.open host[port]:建立指定ftp服務器連接,可指定連接端口。

42.passive:進入被動傳輸方式。

43.prompt:設置多個文件傳輸時的交互提示。

44.proxy ftp-cmd:在次要控制連接中,執行一條ftp命令,該命令允許連接兩個ftp服務器,以在兩個服務器間傳輸文件。第一條ftp命令必須爲open,以首先建立兩個服務器間的連接。

45.put local-file[remote-file]:將本地文件local-file傳送至遠程主機

46.pwd:顯示遠程主機的當前工作目錄。

47.quit:同bye,退出ftp會話。

48.quote arg1arg2...:將參數逐字發至遠程ftp服務器,如:quote syst.

49.recv remote-file[local-file]:同get

50.reget remote-file[local-file]:類似於get,但若local-file存在,則從上次傳輸中斷處續傳。

51.rhelp[cmd-name]:請求獲得遠程主機的幫助。

52.rstatus[file-name]:若未指定文件名,則顯示遠程主機的狀態,否則顯示文件狀態。

53.rename[from][to]:更改遠程主機文件名。

54.reset:清除回答隊列。

55.restart marker:從指定的標誌marker處,重新開始getput,如:restart 130

56.rmdir dir-name:刪除遠程主機目錄。

57.runique:設置文件名唯一性存儲,若文件存在,則在原文件後加後綴..1.2等。

58.send local-file[remote-file]:同put

59.sendport:設置PORT命令的使用。

60.site arg1arg2...:將參數作爲SITE命令逐字發送至遠程ftp主機。

61.size file-name:顯示遠程主機文件大小,如:site idle 7200

62.status:顯示當前ftp狀態。

63.struct[struct-name]:將文件傳輸結構設置爲struct-name,缺省時使用stream結構。

64.sunique:將遠程主機文件名存儲設置爲唯一(runique對應)

65.system:顯示遠程主機的操作系統類型。

66.tenex:將文件傳輸類型設置爲TENEX機的所需的類型。

67.tick:設置傳輸時的字節計數器。

68.trace:設置包跟蹤。

69.type[type-name]:設置文件傳輸類型爲type-name,缺省爲ascii,如:
type binary,設置二進制傳輸方式。

70.umask[newmask]:將遠程服務器的缺省umask設置爲newmask,如:umask3

71.user user-name[password][account]:向遠程主機表明自己的身份,需要口令時,必須輸入口令,如:user anonymous my@email

72.verbose:同命令行的-v參數,即設置詳盡報告方式,ftp服務器的所有響應都將顯示給用戶,缺省爲on.

73.?[cmd]:同help.

ftp主動 (port) 與被動 (pasv) 模式區別

參考http://www.mydict.net/html/2006-03/522.html。網易學院文章。有編輯。

所謂port模式也就是主動模式。在FTP協議剛剛建立的時候,只定義了普通的連接模式,也就是port模式。

Port模式的連接過程是:在開始一個FTP的連接時,客戶端程序首先會爲自己隨機分配一個TCP端口,它使用這個個端口向服務器的FTP端口(默認爲21)發出連接請求,服務器接受請求之後會建立一條控制鏈路,然後客戶程序發出port命令(通常格式爲PORT A, A, A, A, I,I,其中A,A,A,A爲客戶端IP地址,I,I爲隨機的一個數據連接端口號)告訴服務器它的數據通道的端口打開了。當需要傳送數據時,服務器便從隨機選擇的一個端口向客戶端的20端口發送連接請求,請求被接受之後便開始傳輸數據,數據鏈路通道也就打開了。

---------------

所謂pasv模式也就是被動模式。隨着網絡的不斷髮展,出現了防火牆。老的FTP協議在遇到防火牆的時候就束手無策了,這是因爲20端口往往是防火牆的重點封堵對象,因此數據也就不能發送出去了,於是pasv模式就誕生了。

Pasv模式的連接過程是:在開始一個FTP的連接時,客戶端程序首先爲自己隨機分配一個TCP端口,它使用這個端口向服務器的FTP端口(默認爲21)發出連接請求,服務器接受請求之後會建立一條控制鏈路,然後客戶端程序發出PASV命令,代替原來PORT命令告訴服務器它的數據連接端口,於是服務器便爲自己隨機分配一個數據通道端口,並將這個端口號告訴客戶端程序。當需要傳送數據時,客戶端程序會向服務器的數據通道端口發送連接請求,請求被接受之後便開始傳輸數據,數據鏈路通道也就打開了。

---------------

1.所謂主動和被動可以看作是以服務器端爲基準,當服務器主動向客戶端發送數據連接請求時,爲主動模式;當客戶端主動向服務器發送數據連接請求時,爲被動模式。

2.無論客戶端還是服務器端有防火牆,或是兩邊都有防火牆,只要PASV模式下兩邊數據通道的連接端口在防火牆的攔截之外就可以建立成功。如果防火牆將所有的端口全部堵死,則不能建立數據通道。

---------------

FTP
使用中PASV模式的操作方法
(注:此方法只有在無法登錄和下載的情況下才可使用,因爲大部分服務都是pasv模式的。 )

取消 pasv 模式的方法
有許多朋友的 FTP 服務器是不支持 PASV 模式的,登入時要取消 PASV 模式才行。現將幾種 FTP 下載工具的取消方法公佈如下:

1.把 flashget 的 pasv 模式關掉的方法

點菜單上的“工具”->“選項”->“代理服務器”->“直接連接”->編輯->把“ pasv 模式”前的勾勾去掉,一路確定回來。

2.把 Cutftp 的 pasv 模式關掉的方法

點菜單上的“文件”->“站點管理”->在“站點管理器”窗口->“新建站點”->填上“域名”->“編輯”->“常規”->把“使用 pasv 模式”前的勾勾去掉。

3.把 FlashFXP 的 pasv 模式關掉的方法

點菜單上的“站點”->“站點管理器”->站點管理器窗口->“新建站點”->填上“域名”->“選項”->把“使用被動模式”前的勾勾去掉->“應用” 即可。

4.把 NetAnts 的 pasv 模式關掉的方法

點菜單上的"選項"->"參數設置"->"代理"->“直接連接”->編輯->把“ pasv 模式”前的勾勾去掉,一路確定回來。

5.把 IEpasv模式關掉方法

點菜單上的"工具"->"internet選"->"高級"->"使用ftp被動模式"鉤去掉。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章