FTP(文件傳輸協議)入門


  1、FTP服務器(vsftpd - Very Secure FTP Daemon

  1)安裝:sudo apt-get install vsftpd(Ubuntu)。

  2)運行:安裝完成后該服務會在后台運行。vsftpd在啟動時讀取配置文件/etc/vsftpd.conf(默認)。以下是vsftpd.conf的一些常用選項,更多說明可參考其man page:

# 該服務以獨立進程方式運行(YES),還是由“超級服務器”(inetd或xinetd)啟動
listen=YES
# 是否允許匿名FTP。匿名FTP的用戶名為anonymous或ftp,密碼為空
anonymous_enable=NO
# 是否允許本地用戶登錄
enable=YES

  3)FTP應答:

  應答的3位碼中每一位數字都有不同的含義,如2yz表示“肯定完成應答。一個新命令可以發送”、x0z表示“語法錯誤”等。具體可參照《TCP/IP詳解 卷1:協議》圖27-3。以下是一些常用的應答和一個示例:

  125:數據連接已經打開,傳輸開始;200:就緒命令;331:用戶名就緒,要求輸入密碼;425:不能打開數據連接;500:語法錯誤(未認可的命令);501:語法錯誤(無效參數)。

  

 

  2、FTP客戶端

  1)啟動:ftp host [port],並輸入用戶名和密碼。

  2)常用選項:-4:只使用IPv4;-6:只使用IPv6;-e:關閉命令編輯和歷史功能;-v:輸出詳盡信息;-d:開啟調試功能。

  3)常用的用戶命令:除了和Linux類似的ls、pwd、cd、chmod、rename等命令外,還支持以下常用命令:

  open host [port]:在未連接狀態下,建立一個到指定FTP服務器的連接。

  get remote-file [local-file]:獲取(下載)遠程主機的remote-file,將它存儲在本地。

  put local-file [remote-file]:將本地的local-file上傳到遠程主機(需要在vsftpd.conf中設置write_enable=YES)

  close:關閉與遠程服務器的FTP會話。此時還會顯示"ftp>"提示符,但狀態是未連接的。

  mode [mode-name]:設置傳輸方式為mode-name,默認值是stream(只支持stream)。文件以字節流的形式傳輸。對於文件結構,發方在文件尾提示關閉數據連接。

  type [type-name]:設置文件類型為type-name,默認值是network ASCII(只支持ascii、binary)。對於ASCII碼文件類型,文本文件以NVT ASCII碼形式在數據連接中傳輸。其中,用NVT ASCII碼傳輸的每行都帶有一個回車,而后是一個換行。這意味着收方必須掃描每個字節,查找CR、LF對;對於二進制文件類型(也稱為圖像文件類型),數據發送呈現為一個連續的比特流。

  form [format]:設置格式控制選項,默認值是non-print(只支持non-print)。non-print格式:文件中不含有垂直格式信息。

  struct [struct-name]:設置結構為struct-name,默認值是file(只支持file)。file結構:文件被認為是一個連續的字節流。不存在內部的文件結構。

  status:顯示FTP的狀態(Mode、Type、Form、Structure等)。

  size file-name:返回遠程主機上file-name的大小。

  4)FTP命令(一個用戶命令會被解析成一個或多個FTP命令)。它們都是3或4個字節的大寫ASCII碼字符,其中一些帶選項參數。如:

  LIST filelist:列表顯示文件或目錄;PASS password:服務器上的密碼;PORT n1, n2, n3, n4, n5, n6:客戶端IP地址(n1.n2.n3.n4)和端口(n5 * 256 + n6);RETR filename:檢索(取)一個文件;STOR filename:存儲(放)一個文件;TYPE type:說明文件類型。A表示ASCII碼,I表示二進制;USER username:服務器上的用戶名。

 

  3、FTP客戶端與服務器之間的連接管理

  1)FTP使用兩個TCP連接來傳輸一個文件。

  (1)控制連接:服務器以被動方式打開21端口,等待客戶的連接。控制連接始終等待客戶與服務器之間的通信。FTP命令和應答在控制連接上以NVT ASCII碼的形式傳送,即每行(每個命令或應答)結尾都返回CR、LF對。

  以下為用戶輸入pwd命令時,FTP命令和應答對應的數據包:

  

  IP對控制連接的服務類型:最大限度地減小時延。

  (2)數據連接:用於在客戶與服務器之間傳輸文件等。服務器的數據連接端使用端口20。

  IP對數據連接的服務類型:最大限度提高吞吐量。

  2)數據連接的三大用途:

  (1)從客戶向服務器發送一個文件。

  (2)從服務器向客戶發送一個文件。

  (3)從服務器向客戶發送文件或目錄列表。

  在stream傳輸方式下,因為文件結尾是以關閉數據連接為標志,所以對每一個文件傳輸或目錄列表來說都要建立一個全新的數據連接。過程一般如下:

  客戶發出命令要求建立數據連接 -> 客戶端為所在數據連接端選擇一個臨時端口號,並從該端口發布一個被動打開 -> 客戶使用PORT命令從控制連接上把臨時端口號發給服務器 -> 服務器收到客戶端端口號后,向該端口發布一個主動打開(通常它也負責主動關閉)。

 

  參考資料:

  《TCP/IP詳解 卷1:協議》

 

 

 

 

 

 

不斷學習中。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM