ftp命令

文件傳輸協議

文件傳輸協議(英語:File Transfer Protocol,縮寫:FTP)是一個用於在計算機網路上在客戶端和伺服器之間進行文件傳輸的應用層協議。文件傳送(file transfer)和文件訪問(file access)之間的區別在於:前者由FTP提供,後者由如NFS等應用系統提供。參考文獻RFC959定義了此規範。

FTP是一個8位的客戶端-伺服器協議,能操作任何類型的文件而不需要進一步處理,就像MIME或Unicode一樣。但是,FTP有著極高的延時,這意味著,從開始請求到第一次接收需求數據之間的時間,會非常長;並且不時的必須執行一些冗長的登錄進程。

伺服器歷史


原始規範由Abhay Bhushan編寫,並於1971年4月16日作為RFC114發布。直到1980年,FTP才在TCP/IP的前身NCP上運行。該協議先被TCP/IP版本,RFC765(1980年6月)取代,後來又被RFC959(1985年10月)所取代,這也是當前規範。RFC959提出了若干標準修改,例如RFC1579(1994年2月)使FTP能夠穿越NAT與防火牆(被動模式),RFC2228(1997年6月)提出安全擴展,RFC2428(1998年9月)增加了對IPv6的支持,並定義了一種新型的被動模式。

概述


FTP服務一般運行在20和21兩個埠。埠20用於在客戶端和伺服器之間傳輸數據流,而埠21用於傳輸控制流,並且是命令通向ftp伺服器的進口。當數據通過數據流傳輸時,控制流處於空閑狀態。而當控制流空閑很長時間后,客戶端的防火牆會將其會話置為超時,這樣當大量數據通過防火牆時,會產生一些問題。此時,雖然文件可以成功的傳輸,但因為控制會話,會被防火牆斷開;傳輸會產生一些錯誤。
FTP雖然可以被終端用戶直接使用,但是它是設計成被FTP客戶端程序所控制。
運行FTP服務的許多站點都開放匿名服務,在這種設置下,用戶不需要帳號就可以登錄伺服器,默認情況下,匿名用戶的用戶名是:“anonymous”。這個帳號不需要密碼,雖然通常要求輸入用戶的郵件地址作為認證密碼,但這只是一些細節或者此郵件地址根本不被確定,而是依賴於FTP伺服器的配置情況。

實現的目標


● ● 促進文件的共享(計算機程序或數據)
● ● 主條目:FTP命令列表主條目:FTP伺服器返回碼主條目:FTPS主條目:SFTP主條目:TFTP
● ● 鼓勵間接或者隱式的使用遠程計算機
● ● 向用戶屏蔽不同主機中各種文件存儲系統(File system)的細節
● ● 可靠和高效的傳輸數據

主動被動模式


FTP有兩種使用模式:主動和被動。主動模式要求客戶端和伺服器端同時打開並且監聽一個埠以創建連接。在這種情況下,客戶端由於安裝了防火牆會產生一些問題。所以,創立了被動模式。被動模式只要求伺服器端產生一個監聽相應埠的進程,這樣就可以繞過客戶端安裝了防火牆的問題。
一個主動模式的FTP連接創建要遵循以下步驟:
客戶端打開一個隨機的埠(埠號大於1024,在這裡,我們稱它為x),同時一個FTP進程連接至伺服器的21號命令埠。此時,該tcp連接的來源地埠為客戶端指定的隨機埠x,目的地埠(遠程埠)為伺服器上的21號埠。
客戶端開始監聽埠(x+1),同時向伺服器發送一個埠命令(通過伺服器的21號命令埠),此命令告訴伺服器客戶端正在監聽的埠號並且已準備好從此埠接收數據。這個埠就是我們所知的數據埠。
伺服器打開20號源埠並且創建和客戶端數據埠的連接。此時,來源地的埠為20,遠程數據(目的地)埠為(x+1)。
客戶端通過本地的數據埠創建一個和伺服器20號埠的連接,然後向伺服器發送一個應答,告訴伺服器它已經創建好了一個連接。

瀏覽器支持


大多數最新的網頁瀏覽器和文件管理器都能和FTP伺服器創建連接。這使得在FTP上通過一個介面就可以操控遠程文件,如同操控本地文件一樣。這個功能通過給定一個FTP的URL實現,形如ftp://<伺服器地址>(例如,ftp://ftp.gimp.org)。是否提供密碼是可選擇的,如果有密碼,則形如ftp://:@。大部分網頁瀏覽器要求使用被動FTP模式,然而並不是所有的FTP伺服器都支持被動模式。

安全性


FTP不是一項安全的協議,並且具有許多安全漏洞。1999年5月發布的RFC2577中列出了以下幾個主要的漏洞:
● ● 蠻力攻擊
● ● FTP反彈攻擊
● ● 數據包捕獲
● ● 埠竊取(猜測下一個開放埠並篡奪合法連接)
● ● 欺騙攻擊
● ● 用戶名枚舉
通過FTP傳輸的流量不會被加密,所有傳輸通過明文進行的。任何能夠在網路上執行數據包捕獲(嗅探)的人都可以讀取用戶名、密碼、命令內容和數據。此問題在加密機制(如TLS或SSL)產生之前的許多Internet協議規範(如SMTP、Telnet、POP和IMAP)中較為普遍。此問題的常見解決方案包括:
● ● 使用協議的安全版本,例如FTPS而不是FTP,TelnetS而不是Telnet。
● ● 使用可以處理作業的不同的,更安全的協議,例如SSH文件傳輸協議或安全複製協議。
● ● 使用安全隧道(如Secure Shell或虛擬專用網)。

伺服器返回碼


包含由IETF在RFC959中標準化的所有伺服器返回碼。回復代碼是一個三位數值,第一個數字用於表示三種可能的結果之一——成功、失敗、表示錯誤或不完整的回復。

派生品


FTPS
FTPS是FTP標準的擴展,添加了安全套接層(SSL)以及其繼任者傳輸層安全性協議(TLS)的支持。
SSH文件傳輸協議
SSH文件傳輸協議(縮寫:SFTP)可用於傳輸文件並具有類似的用戶命令集,但使用Secure Shell協議(SSH)傳輸文件。與FTP不同,它對命令和數據進行加密,防止密碼和敏感信息通過網路公開傳輸。它無法與FTP兼容。
小型文件傳輸協議
小型文件傳輸協議(Trivial File Transfer Protocol,TFTP),是一種於1981年在RFC783中定義的簡化的文件傳輸協議(FTP)。
簡單文件傳輸協議
簡單文件傳輸協議(Simple File Transfer Protocol)由RFC913定義,其複雜程度介於TFTP和FTP之間。它從未在網際網路上被廣泛接受。它通過埠115運行,支持三種類型的數據傳輸:ASCII、二進位和連續。該協議還支持使用用戶名和密碼登錄、文件夾和文件管理(包括重命名、刪除、上傳、下載)。

簡介


與大多數Internet服務一樣,FTP也是一個客戶機/伺服器系統。用戶通過一個支持FTP協議的客戶機程序,連接到在遠程主機上的FTP伺服器程序。用戶通過客戶機程序向伺服器程序發出FTP命令,伺服器程序執行用戶所發出的FTP命令,並將執行的結果返回到客戶機。
FTP命令是Internet用戶使用最頻繁的命令之一,不論是在DOS、Windows的命令行、LINUX、UNⅨ
還是AⅨ操作系統下都可以使用FTP,都會遇到大量的FTP內部命令,熟悉並靈活應用FTP命令,可以大大方便使用者,並收到事半功倍之效。
比如說,用戶發出一條命令,要求伺服器向用戶傳送某一個文件的一份拷貝,伺服器會響應這條命令,將指定文件送至用戶的機器上。客戶機程序代表用戶接收到這個文件,將其存放在用戶目錄中。

基礎命令


進入想要連接的FTP站點后,用戶就可以進行相應的文件傳輸操作了,其中一些重要的命令及相似的命令如下:
1、HELP、RHELP、REMOTEHELP
HELP顯示LOCAL端的命令說明,若不接受則顯示所有可用命令;
?相當於HELP,例如:?CD:
RHELP同HELP,只是它用來顯示REMOTE端的命令說明;
REMOTEHELP相當於RHELP。
2、ASC(ASCll)、bin(BINARY)、IMAGE、TYPE
ASCⅡ切換傳輸模式為文字模式(只能用來傳送DOC文件,因為是7-BIT);
BINARY切換傳輸模式為二進位模式(除文字文件外皆用此模式);
IMAGE相當於BINARY:
TYPE讓你更改或顯示傳輸模式。
3、BYE、QUIT
BYE退出FTP:
QUIT相當於BYE。
4、CD、CDUP、LCD、P~WD。
CD改變當前工作目錄,例如:CD\PUB;
CDUP回到上一層目錄,相當於你打CD:
LCD讓你更改或顯示LOCAL端的工作目錄,例如:LCD\TMP;
PWD顯示的工作目錄(REMOTE端):
!讓你執行外殼命令,例如:!LS。
5、DELETE、MDELETE、RENAME
DELETE刪除REMOTE端的文件:
MDELETE批量刪除文件,需配合?或,*
RENAME更改REMOTE端的文件名。
6、GET、MGET、PUT、MPUT、RECV、SEND
GET下傳文件;
MGET批量下傳文件,需配合萬用字元,例如:MGET*.GZ;
PUT上傳文件;
MPUT批量上傳文件,需配合萬用字元;
RECV相當於GET(RECV為RECEIVE的簡寫):
SEND相當於PUT。
7、HASH、PROMPT、VERBOSE、STATUS、BELL
HASH切換#字型大小的出現,每一個#字型大小表示傳送了1024/8192BYTES:
PROMPT切換iNTERACTⅣEON/OFF;
VERBOSE切換所有文件傳輸過程的顯示;
STATUS顯示的一些參數:
BELL當指令做完時會發出叫聲。
8、LS、DIR、MLS、MDIR、MKDIR、RMDIR
LS有點像UNIX下的LS(LIST)命令:
DIR相當於LS-L(LIST-LONG);
MLS只是將遠端某目錄下的文件存於LOCAL端的某文件里;
MDIR相當於MLS;
MKDIR像DOS下的MD(創建子目錄)一樣:
RMDIR像DOS下的RD(刪除子目錄)一樣。
9、OPEN、CLOSE、DISCONNECT、USER
OPEN連接某個遠端FTP伺服器;
CLOSE關閉連接;DISCONNECT相當於CLOSE;
USER再輸入一次用戶名和口令(有點像UNⅨ下的SU)。

命令進階


語法

ftp[-d][-g][-i][-n][-v][-f][-krealm][-q[-C]][HostName[Port]]
-C允許用戶指定:通過send_file命令發出的文件必須在網路高速緩衝區(NBC)中經過緩存處理。此標誌必須在指定了-q標誌的情況下使用。只有當文件在無保護的情況下以二進位方式發送時此標誌才適用。
-d將有關ftp命令操作的調試信息發送給syslogd守護進程。如果您指定-d標誌,您必須編輯/etc/syslog.conf文件並添加下列中的一項:
OR
user.debug FileName
請注意:syslogd守護進程調試級別包含信息級別消息。
如果不編輯/etc/syslog.conf文件,則不會產生消息。變更了/etc/syslog.conf文件之後,請運行refresh-ssyslogd或kill-1SyslogdPID命令,以通知syslogd守護進程其配置文件的變更。關於調試級別的更多信息,請參考/etc/syslog.conf文件。也請參考debug子命令。
-g禁用文件名中的元字元拓展。解釋元字元可參考為擴展(有時叫做文件名匹配替換)文件名。請參考glob子命令。
-i關閉多文件傳送中的互動式提示。請參考prompt、mget、mput和mdelete子命令,以取得多文件傳送中的提示的描述。
-n防止在起始連接中的自動登錄。否則,ftp命令會搜索$HOME/.netrc登錄項,該登錄項描述了遠程主機的登錄和初始化過程。請參考user子命令。
-q允許用戶指定:send_file子常式必須用於在網路上發送文件。只有當文件在無保護的情況下以二進位方式發送時此標誌才適用。
-v顯示遠程伺服器的全部響應,並提供數據傳輸的統計信息。當ftp命令的輸出是到終端(如控制台或顯示)時,此顯示方式是預設方式。
如果stdin不是終端,除非用戶調用帶有-v標誌的ftp命令,或發送verbose子命令,否則ftp詳細方式將禁用。
-f導致轉發憑證。如果Kerberos5不是當前認證方法,則此標誌將被忽略。
-krealm如果遠程站的域不同於本地系統的域,系統將允許用戶指定遠程站的域。因此,域和DCE單元是同義的。如果Kerberos5不是當前認證方法,則此標誌將被忽略。

詳解

1、[crud[args)1:在本地機中執行交互shell,exit回到FTP環境,列如:!LS*.zip.
2、$macro-amc[args兒執行宏定義macro-name。
3、account[password]:提供登錄遠程系統成功后訪問系統資源所需的補充口令。
4、append local-file[remote-file]:將本地文件追加到遠程系統主機,若未指定遠系統文件名,則使用本地文件名。
5、ASCii:使用ascⅡ型傳輸方式。
6、bell:每個命令執行完畢後計算機響鈴—次
7、bin:使用二進位文件傳輸方式
8、bye..退出FTP會話過程—
9、case:在使用mget時,將遠程主文件名中的大寫字母轉為小寫字母
10、cdremote·dir:進入遠程主機目錄。
11、cdup..進入遠程主機目錄的父目錄。
12、chmodmodefile-name:將遠程主機文件file-name的存取方式設置為mode。列如:chmod777a.OUt。
13、close:中斷與遠程伺服器的FTP會話(與open對應)。
14、cr:使用ASCii“方式傳輸文件時,將回車換行轉換為回行
15、deleteremote-file-刪除遠程主機文件:
16、debugldebug-value3:設置調試方式,顯示發送至遠程主機的每條命令。例如:debug3,若設為0,表示取消debug。
17、dir[remote-dir][Local-file]:顯示遠程主機目錄,並將結果存入本地文件local-file:
18、disconnection-.同close。
19、formformat:將文件傳輸方式設置為format,預設為file方式。
20、getremote-file[10cal-file]:將遠程主機的文件remote-file傳至本地硬碟的local-file。
21、glob:設置mdelete,mget,mput的文件名擴展,預設時不擴展文件名,同命令行的-g參數。
22、hash:每傳輸1024位元組,顯示一個hash符號(#)。
23、help[cmd]:顯示FTP內部命令cmd的幫助信息,如.-helpget。
24、idle[seconds]:將遠程伺服器的休眠計時器設為[seconds]秒。
25、image:設置二進位傳輸方式(同binary)。
26、LCD[DIR]:將本地工作目錄切換至dir。
27、LS[remote-DIR][LOCAL-FILE]:顯示遠程目錄remote-dir,並存入本地文local-fileo
28、macdefmacro-name:定義一個宏,遇到macdef下的空行時,宏定義結束。
29、mdelete[remote-file]:刪除遠程主機文件。
30、mdirremote-fileslocal-file:與dlr類似,但可指定多個遠程文件。列如mdir*.O.*.zipoutfiLe。
31、mgetremote-files:傳輸多個遠程文件。
32、mkdirdirname:在遠程主機中建一目錄。
33、misremote-filelocal-file.同nlist,但可指定多個文件名。
34、mode[modename]:將文件傳輸方式設置為modename,預設為stream方式。
35、modtimefile-name..顯示遠程主機文件的最後修改時間。·
36、mputlocal-file:將多個文件傳輸至遠程主機,
37、newerfile-name:如果遠程機中file-name的修改時間比本地硬碟同名文件的時間巨近,則重新傳輸該文件。
得相應的許可權以後,方可上傳或下載文件。也就是說,要想同哪一台計算機傳送文件,就必須具有哪一台計算機的適當授權。換言之,除非有用戶ID和口令,否則便無法傳送文件。這種情況違背了Internet的開放性,Internet上的FTP主機何止千萬,不可能要求每個用戶在每一台主機上都擁有帳號。因此就衍生出了匿名FTP。