Linux 下 FTP 連接配接使用方式及常用配置
- FTP 協定介紹
- 傳輸方式
- 支援模式
- FTP 用戶端注意事項
- FTP 協定連接配接步驟
- FTP 常用指令
- Linux下 FTP 常用指令
- Linux 下連接配接 FTP 伺服器
- Linux下 FTP 目錄操作
- Linux下 FTP 檔案操作
- 其它指令
- FTP 錯誤碼
FTP 協定介紹
FTP是FileTransferProtocol(檔案傳輸協定)的英文簡稱,而中文簡稱為“文傳協定”。用于Internet上的控制檔案的雙向傳輸。同時,它也是一個應用程式(Application)。基于不同的作業系統有不同的FTP應用程式,而所有這些應用程式都遵守同一種協定以傳輸檔案。在FTP的使用當中,使用者經常遇到兩個概念:“下載下傳”(Download)和"上傳"(Upload)。"下載下傳"檔案就是從遠端主機拷貝檔案至自己的計算機上;"上傳"檔案就是将檔案從自己的計算機中拷貝至遠端主機上。用Internet語言來說,使用者可通過客戶機程式向(從)遠端主機上傳(下載下傳)檔案。
FTP 采用 Internet 标準檔案傳輸協定 FTP 的使用者界面, 向使用者提供了一組用來管理計算機之間檔案傳輸的應用程式。
FTP 是基于客戶———伺服器(C/S)模型而設計的,在用戶端與 FTP 伺服器之間建立兩個連接配接。
開發任何基于 FTP 的用戶端軟體都必須遵循 FTP 的工作原理,FTP 的獨特的優勢同時也是與其它客戶伺服器程式最大的不同點就在于它在兩台通信的主機之間使用了兩條 TCP 連接配接,一條是資料連接配接,用于資料傳送;另一條是控制連接配接,用于傳送控制資訊(指令和響應),這種将指令和資料分開傳送的思想大大提高了 FTP 的效率,而其它客戶伺服器應用程式一般隻有一條 TCP 連接配接。圖 1 給出了 FTP 的基本模型。客戶有三個構件:使用者接口、客戶控制程序和客戶資料傳送程序。伺服器有兩個構件:伺服器控制程序和伺服器資料傳送程序。在整個互動的 FTP 會話中,控制連接配接始終是處于連接配接狀态的,資料連接配接則在每一次檔案傳送時先打開後關閉。
傳輸方式
FTP的傳輸有兩種方式:ASCII、二進制。
-
ASCII傳輸方式
假定使用者正在拷貝的檔案包含的簡單ASCII碼文本,如果在遠端機器上運作的不是UNIX,當檔案傳輸時ftp通常會自動地調整檔案的内容以便于把檔案解釋成另外那台計算機存儲文本檔案的格式。
但是常常有這樣的情況,使用者正在傳輸的檔案包含的不是文本檔案,它們可能是程式,資料庫,字處理檔案或者壓縮檔案。在拷貝任何非文本檔案之前,用binary 指令告訴ftp逐字拷貝。
-
二進制傳輸模式
在二進制傳輸中,儲存檔案的位序,以便原始和拷貝的是逐位一一對應的。即使目的地機器上包含位序列的檔案是沒意義的。例如,macintosh以二進制方式傳送可執行檔案到Windows系統,在對方系統上,此檔案不能執行。
如在ASCII方式下傳輸二進制檔案,即使不需要也仍會轉譯。這會損壞資料。(ASCII方式一般假設每一字元的第一有效位無意義,因為ASCII字元組合不使用它。如果傳輸二進制檔案,所有的位都是重要的。)
支援模式
FTP用戶端發起FTP會話,與FTP伺服器建立相應的連接配接。FTP會話期間要建立控制資訊程序與資料程序兩個連接配接。控制連接配接不能完成傳輸資料的任務,隻能用來傳送FTP執行的内部指令以及指令的響應等控制資訊;資料連接配接是伺服器與用戶端之間傳輸檔案的連接配接,是全雙工的,允許同時進行雙向資料傳輸。當資料傳輸完成後,資料連接配接會撤消,再回到FTP會話狀态,直到控制連接配接被撤消,并退出會話為止。
FTP支援兩種模式:Standard (PORT方式,主動方式),Passive (PASV,被動方式)。
-
Port模式
FTP 用戶端首先和伺服器的TCP 21端口建立連接配接,用來發送指令,用戶端需要接收資料的時候在這個通道上發送PORT指令。PORT指令包含了用戶端用什麼端口接收資料。在傳送資料的時候,伺服器端通過自己的TCP 20端口連接配接至用戶端的指定端口發送資料。FTP server必須和用戶端建立一個新的連接配接用來傳送資料。
-
Passive模式
建立控制通道和Standard模式類似,但建立連接配接後發送Pasv指令。伺服器收到Pasv指令後,打開一個臨時端口(端口号大于1023小于65535)并且通知用戶端在這個端口上傳送資料的請求,用戶端連接配接FTP伺服器此端口,然後FTP伺服器将通過這個端口傳送資料。
很多防火牆在設定的時候都是不允許接受外部發起的連接配接的,是以許多位于防火牆後或内網的FTP伺服器不支援PASV模式,因為用戶端無法穿過防火牆打開FTP伺服器的高端端口;而許多内網的用戶端不能用PORT模式登陸FTP伺服器,因為從伺服器的TCP 20無法和内部網絡的用戶端建立一個新的連接配接,造成無法工作。
FTP 用戶端注意事項
根據 FTP 用戶端是否有公網 IP、是否安裝防火牆以及連接配接的 FTP 伺服器的搭建方式,需要注意以下事項:
- 如果 FTP 用戶端沒有公網 IP,隻能使用 PASV 方式才能連接配接 FTP 伺服器;
- 如果 FTP 用戶端有公網 IP,且安裝了防火牆,當使用 PORT 方式連接配接 FTP 伺服器時,必須在防火牆上打開 1024 以上的高端端口,保證連接配接資料鍊路時,伺服器端向用戶端的連接配接請求不會被防火牆攔截
FTP 協定連接配接步驟
可以看這篇作者寫的,十分詳細
FTP 常用指令
上傳和下載下傳。 21端口用于連接配接,20端口用于傳輸資料。
進行FTP檔案傳輸中,用戶端首先連接配接到FTP伺服器的21端口,進行使用者的認證,認證成功後,要傳輸檔案時,伺服器會開一個端口為20來進行傳輸資料檔案。
Linux下 FTP 常用指令
Linux 下連接配接 FTP 伺服器
- 連接配接 FTP
# 格式:ftp [hostname | ip-address]
ftp 192.168.1.122
- 斷開FTP連接配接
quit
Linux下 FTP 目錄操作
- 檢視目前目錄
pwd
- 進入指定目錄
# 格式:cd remote-directory
cd
- 建立目錄
mkdir 目錄名
- 删除目錄
rmdir 目錄名
- 檢視目前目錄下所有目錄及檔案
# 格式:ls [remote-directory] [local-file]
# 說明:remote-directory 指定要檢視其清單的目錄。如果沒有指定将使用遠端計算機中的目前工作目錄。 local-file指要存儲清單的本地檔案,如果沒有将輸出将顯示在螢幕上。
ls
- 檢視指定字尾檔案
dir .jpg
Linux下 FTP 檔案操作
- 删除單個檔案
# 格式:delete remote-file
delete 檔案名
- 删除多個檔案
# 格式:mdelete remote-files [ ...]
mdelete 檔案名
- 重命名檔案
# 格式:rename filename newfilename
rename test atest
- 上傳檔案
# 格式:put local-file [remote-file]
put /home/a.txt /mydata/b.txt
- 下載下傳單個檔案
# 格式:get [remote-file] [local-file]
get /mydata/a.txt /apps/b.txt
- 下載下傳多個檔案
# 進入指定目錄
cd /usr/your/
# 格式:mget filename [filename ....]
mget *.*
其它指令
- 查詢所有指令
# help[cmd]:顯示FTP指令的幫助資訊,cmd是指令名,如果不帶參數,則顯示所有FTP指令
FTP 錯誤碼
碼 | 描述 | 讨論 |
100系列 | 已請求的行動已啟動; 期望另一個回複,然後繼續一個新的指令。 | |
110 | 重新啟動标記回複。 | 文本是确切的,不留給特定的實作; 它必須讀取“MARK yyyy = mmmm”,其中yyyy是使用者程序資料流标記,以及mmmm伺服器的等效标記(注意标記和“=”之間的空格)。 |
120 | 服務準備在nn分鐘。 | |
125 | 資料連接配接已打開; 轉移開始。 | |
150 | 檔案狀态okay; 即将打開資料連接配接。 | FTP使用兩個端口:21用于發送指令,20用于發送資料。狀态代碼150表示伺服器将在端口20上打開一個新連接配接以發送某些資料。 |
200系列 | 請求的操作已成功完成。 | |
200 | 指令okay。 | |
202 | 指令沒有實作,在這個網站是多餘的。 | |
211 | 系統狀态或系統幫助答複。 | |
212 | 目錄狀态。 | |
213 | 檔案狀态。 | |
214 | 幫助消息。 | |
215 | NAME系統類型。 | 其中NAME是“指定号碼”文檔中清單中的官方系統名稱。 |
220 | 服務準備好為新使用者。 | |
221 | 服務關閉控制連接配接。 | 如果适當,請登出。 |
225 | 資料連接配接打開; 沒有轉移正在進行。 | |
226 | 關閉資料連接配接。 | 請求的檔案操作成功(例如,檔案傳輸或檔案中止)。該指令在端口20上打開資料連接配接以執行操作,例如傳輸檔案。此操作成功完成,并且資料連接配接關閉。 |
227 | 進入被動模式。 | (h1,h2,h3,h4,p1,p2) |
230 | 使用者登入,繼續。在用戶端發送正确的密碼後,将顯示此狀态代碼。它表示使用者已成功登入。 | |
250 | 請求的檔案操作okay,完成。 | |
257 | 已建立“PATHNAME”。 | |
300系列 | 該指令已被接受,但所請求的操作處于保持狀态,等待接收進一步的資訊。 | |
331 | 使用者名okay,需要密碼。 | 在用戶端發送使用者名後,無論所提供的使用者名是否是系統上的有效帳戶,您都将看到此狀态代碼。 |
332 | 需要帳戶登入。 | 提供登入憑據 |
350 | 請求的檔案操作等待進一步的資訊。 | |
400系列 | 該指令未被接受并且請求的操作未發生,但錯誤條件是臨時的,并且可以再次請求該操作。 | |
421 | 錯誤421服務不可用,關閉控制連接配接。錯誤421達到使用者限制錯誤421您無權進行連接配接錯誤421已達到最大連接配接數錯誤421已超過最大連接配接數 | 如果服務知道它必須關閉,這可以是對任何指令的回複。請稍後嘗試登入。 |
425 | 無法打開資料連接配接。 | 從PASV更改為端口模式,檢查您的防火牆設定,或嘗試通過HTTP進行連接配接。 |
426 | 連接配接關閉; 傳輸中止。 | 該指令打開資料連接配接以執行操作,但該操作被取消,并且資料連接配接被關閉。嘗試重新登入; 聯系您的托管服務提供商,以檢查是否需要增加您的托管帳戶; 嘗試禁用您的PC上的防火牆,看看是否解決了這個問題。如果沒有,請與您的托管服務提供商或ISP聯系。 |
450 | 請求的檔案操作未執行。 | 檔案不可用(例如,檔案忙)。稍後再試。 |
451 | 請求的操作中止:進行中的本地錯誤。 | 確定指令和參數輸入正确。 |
452 | 請求的操作未執行。系統中存儲空間不足。 | 請FTP管理者增加配置設定的存儲空間,或歸檔/删除遠端檔案。 |
500系列 | 該指令未被接受,并且請求的操作未發生。 | |
500 | 文法錯誤,指令無法識别,指令行太長。 | 嘗試切換到被動模式。 |
501 | 參數或參數中的文法錯誤。 | 驗證您的輸入; 例如,確定沒有錯誤的字元,空格等。 |
502 | 指令未實作。 | 伺服器不支援此指令。 |
503 | 錯誤的指令序列。 | 驗證指令序列。 |
504 | 未對該參數實作指令。 | 確定輸入的參數正确。 |
530 | 使用者未登入。 | 確定鍵入正确的使用者名和密碼組合。某些伺服器在達到使用者限制時使用此代碼,而不是421 |
532 | 需要存儲檔案的帳戶。 | 登入的使用者沒有在遠端伺服器上存儲檔案的權限。 |
550 | 請求的操作未執行。檔案不可用,找不到,無法通路 | 驗證您是否嘗試連接配接到正确的伺服器/位置。遠端伺服器的管理者必須為您提供通過FTP進行連接配接的權限。 |
552 | 請求的檔案操作中止。超過存儲配置設定。 | 需要更多的磁盤空間。存檔遠端伺服器上不再需要的檔案。 |
553 | 請求的操作未執行。不允許檔案名。 | 更改檔案名中的檔案名或删除空格/特殊字元。 |
10,000系列 | 常見Winsock錯誤代碼(Winsock錯誤代碼的完整清單) | |
10054 | 連接配接由對等體複位。遠端主機強制關閉連接配接。 | |
10060 | 無法連接配接到遠端伺服器。 | 一般是逾時錯誤。嘗試從PASV切換到端口模式,或嘗試增加逾時值。 |
10061 | 無法連接配接到遠端伺服器。伺服器主動拒絕連接配接。 | 嘗試切換連接配接端口。 |
10066 | 目錄不為空。 | 當其中有檔案/檔案夾時,伺服器不會删除此目錄。如果要删除目錄,請首先歸檔或删除其中的檔案。 |
10068 |