1、什麼是FTP協議?
FTP 是File Transfer Protocol(文件傳輸協議)。用於ftp客戶端和ftp服務器之間進行文本、文件傳輸的協議。與http的短連接不同,FTP協議是一種基於socket的長連接。
2、FTP協議的原理
FTP協議實際上是工作在TCP/IP協議族的應用層,其傳輸層協議是TCP協議。可以知道,他的文件傳輸是可靠的。
FTP的工作流程大致分爲四步:
- 啓動FTP。ftp的客戶端啓動一個socket連接到服務器。
- 建立控制連接。客戶端和服務器通過三次握手過程(21端口),建立連接,用於傳輸ftp協議的命令。
- 建立數據連接。客戶端和服務器建立數據連接(分爲主動模式和被動模式),用戶文件的傳輸。
- 關閉FTP。ftp客戶端清空數據流,並且關閉Socket。
3、FTP協議的工作詳解。
1、FTP協議的工作流程中爲什麼有控制連接和數據連接?
FTP協議的控制鏈接是用於客戶端向服務器發送ftp的命令用的,只要不想關閉FTP客戶端,就會一直保持該連接,用戶之後的命令交互。而數據連接,則是區別於控制鏈接之外的,用戶傳輸文件用的socket連接,當傳輸文件結束時,就關閉連接。
2、數據連接的主動模式和被動模式?
FTP的數據連接過程中的主動模式和被動模式,是相對於FTP服務器來說都。
主動模式:FTP客戶端在客戶端建立一個socket,端口爲B,並通過FTP控制連接的通道發送PORT命令,告訴FTP服務器:“客戶端已經對B端口進行了監聽”;然後FTP服務器主動與FTP客戶端的B端口建立連接。
被動模式:FTP客戶端通過FTP的控制連接的通道,發送PASV命令,告訴FTP服務器:“我要建立數據連接”;然後FTP服務器會隨機啓動一個端口X的監聽,並在返回信息中告訴FTP客戶端:“可以與X端口建立連接”;最後,FTP客戶端主動與FTP服務器的X端口建立連接。
4、FTP協議的命令大全
FTP COMMANDS
The following are the FTP commands:
USER <SP> <username> <CRLF> 登錄的用戶名
PASS <SP> <password> <CRLF> 密碼
ACCT <SP> <account-information> <CRLF>
CWD <SP> <pathname> <CRLF> 改變當前目錄
CDUP <CRLF> 返回上級目錄
SMNT <SP> <pathname> <CRLF>
QUIT <CRLF> 退出
REIN <CRLF> 重新登錄
PORT <SP> <host-port> <CRLF>
PASV <CRLF> 獲取數據傳輸端口
TYPE <SP> <type-code> <CRLF> 設置數據交換的類型{A(SCII),E(BCDIC),I(mage),L(ocal byte size)}
STRU <SP> <structure-code> <CRLF>
MODE <SP> <mode-code> <CRLF>
RETR <SP> <pathname> <CRLF>
STOR <SP> <pathname> <CRLF> 用覆蓋方式上傳一個文件到服務器
STOU <CRLF>
APPE <SP> <pathname> <CRLF> 用追加方式上傳一個文件到服務器
ALLO <SP> <decimal-integer>
[<SP> R <SP> <decimal-integer>] <CRLF>
REST <SP> <marker> <CRLF> 指定重新下在的字節數
RNFR <SP> <pathname> <CRLF> 指定需要改名的原文件
RNTO <SP> <pathname> <CRLF> 指定需要改名的新文件名
ABOR <CRLF> 取消前一指令
DELE <SP> <pathname> <CRLF> 在服務器上刪除指定文件
RMD <SP> <pathname> <CRLF> 在服務器上刪除指定目錄
MKD <SP> <pathname> <CRLF> 在服務器上創建目錄
PWD <CRLF> 顯示當前目錄
LIST [<SP> <pathname>] <CRLF> 列出當前目錄下所有文件和子目錄
NLST [<SP> <pathname>] <CRLF> 列出當前目錄下所有文件和子目錄的名字
SITE <SP> <string> <CRLF>
SYST <CRLF>
STAT [<SP> <pathname>] <CRLF>
HELP [<SP> <string>] <CRLF> 獲取幫助
NOOP <CRLF>
FTP Security commands and arguments
AUTH <SP> <mechanism-name> <CRLF>
ADAT <SP> <base64data> <CRLF>
PROT <SP> <prot-code> <CRLF>
PBSZ <SP> <decimal-integer> <CRLF>
MIC <SP> <base64data> <CRLF>
CONF <SP> <base64data> <CRLF>
ENC <SP> <base64data> <CRLF>
1.訪問命令:
USER <username> 用於指定登錄的用戶名,以便服務器進行身份驗證。USER命令通常是控制連接建立後發出的第一個命令。
PASS <password> 用於指定用戶密碼,該命令用於登錄用戶命令之後。
REIN 重新初始化用戶信息,該命令會終止當前 USER的傳輸,也會終止正在傳輸的數據,然後重置所有參數,並打開控制連接,以便客戶端再次發出USER命令。
QUIT 關閉與服務器之間的連接。
2.模式設置命令
PASV 告訴服務器,讓FTP服務器在指定的數據端口進行監聽,被動接受客戶端的請求。是默認模式。
PORT <address> 告訴FTP服務器,客戶端監聽的端口號是address,FTP服務器採用主動模式連接客戶端。
TYPE <data type> 指定要傳輸的數據類型,有ASCLL和二進制。
MODE <mode> 指定傳輸模式,S(流),B(塊),C(壓縮)。
3.文件管理命令
CWD <directory> 用戶可以在不同的目錄或數據集下工作而不改變登錄信息,directory一般是用戶名與系統相關的文件集合。
PWD 返回當前工作目錄。
MKD <directory>> 在指定目錄下創建新目錄,directory表示指定目錄的字符串。
CDUP 回到上層目錄。
RMD <directory> 刪除指定目錄。
LIST <name> 返回指定路徑下的子目錄及文件列表,name爲路徑,若省略,返回當前路徑下的文件列表。
NLIST <directory> 返回指定路徑下的目錄列表,省略路徑時,返回當前目錄。
RNFR <old path> 重新命名文件,該命令的下一條命令用RNTO指定新的文件名。
RNTO <new path> 和RNFR命令共同完成對文件的重命名。
DELE <filename> 刪除指定路徑下的文件。
4.文件傳輸命令
RETR <filename> 下載指定路徑的文件。
STOR <filename> 上傳一個指定的文件,並將其存儲在指定的位置,如果文件已經存在,原文件被覆蓋,如果文件不存在,則創建新文件。