網絡協議之FTP協議

1、什麼是FTP協議?

FTP 是File Transfer Protocol(文件傳輸協議)。用於ftp客戶端和ftp服務器之間進行文本、文件傳輸的協議。與http的短連接不同,FTP協議是一種基於socket的長連接。

2、FTP協議的原理

FTP協議實際上是工作在TCP/IP協議族的應用層,其傳輸層協議是TCP協議。可以知道,他的文件傳輸是可靠的。

FTP的工作流程大致分爲四步:

  1. 啓動FTP。ftp的客戶端啓動一個socket連接到服務器。
  2. 建立控制連接。客戶端和服務器通過三次握手過程(21端口),建立連接,用於傳輸ftp協議的命令。
  3. 建立數據連接。客戶端和服務器建立數據連接(分爲主動模式和被動模式),用戶文件的傳輸。
  4. 關閉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>    上傳一個指定的文件,並將其存儲在指定的位置,如果文件已經存在,原文件被覆蓋,如果文件不存在,則創建新文件。


 

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