FTP協議服務器安裝之ftp命令
FTP協議是我們最熟知的協議之一。它的作用就是進行文件傳送。那么我們今天閑來對這部分的基礎概念進行一下了解,然后對ftp命令進行服務器架構進行一下分析。
FTP在RFC 959中具體說明。HTTP和FTP都是文件傳送協議,它們有許多共同的特征,比如都運行在TCP之上等。不過這兩個應用層協議之間存在重要的差別。最重要的差別是FTP使用兩個并行的TCP連接,一個是控制連接,一個是數據連接。控制連接用于在客戶主機和服務器主機之間發送控制信息,例如用戶名和口令、改變遠程目錄的命令、取來或放回文件的命令。數據連接用于真正發送文件。在整個會話期間,FTP服務器必須維護關于用戶的狀態。具體地說,服務器必須把控制連接與特定的用戶關聯起來,必須隨用戶在遠程目錄樹中的游動跟蹤其當前目錄。為每個活躍的用戶會話保持這些狀態信息極大地限制了FTP能夠同時維護的會話數。無狀態的HTTP卻不必維護任何用戶狀態信息。FTP協議可以工作在主動模式(active)和被動模式(passive)二種模式下:
主動模式(一般FTP服務器默認模式):FTP客戶端開啟一個隨機選擇的TCP端口連接FTP服務器的21端口請求建立連接。當完成Three-Way Handshake后,連接就成功建立,但這僅是控制連接的建立。當兩端需要傳送數據的時候,客戶端通過命令通道用一個port command告訴服務器,客戶端可以用另一個TCP端口做數據通道。然后服務器用20端口和剛才客戶端所通知的TCP端口建立數據連接。注意:連接方向是從服務器到客戶端的,TCP分組中會有一個SYN flag。 然后客戶端會返回一個帶ACK flag的確認分組,并完成另一次的Three-Way Handshake 過程。這時候,數據連接才能成功建立。開始數據傳送。
被動模式:FTP客戶端開啟一個隨機選擇的TCP端口連接FTP服務器的21端口請求建立連接,完成控制連接的建立。當兩端需要傳送數據的時候,客戶端 通過命令通道發送一個PASV command給服務器,要求進入被動傳輸模式。然后 服務器像上述的主動模式第 2 步驟那樣,挑一個TCP端口,并用控制連接告訴 客戶端。 然后客戶端用另一個TCP端口連接剛才服務器告知的TCP端口來建立數據通道。此時分組中帶有SYN flag。服務器確認后回送一個ACK分組。并完成所有握手過程、成功建立數據通道,開始數據傳送。
目前可以實現FTP服務的軟件非常多,比如Windows平臺下的IIS、Serv-U,Linux平臺下的wuFTP、vsftp等。vsftp(Very Secure FTP)是一種在Unix/Linux中非常安全且快速穩定的FTP服務器,目前已經被許多大型站點所采用,vsftpd也是RHEL默認的ftp服務,本文主要講述vsftp相關配置方法。
一、安裝vsftp。
rpm -ivh vsftpd-2.0.5-12.el5.rpm
安裝完成后,vsftpd配置文件為/etc/vsftpd/vsftpd.conf,通過以下命令可啟動vsftpd并將其設置為自動啟動。
service vsftpd restartchkconfig vsftpd on
二、第一個FTP協議站點。
vsftp在安裝完成并啟動后,即可使用。默認情況下可以使用匿名用戶,下圖中使用ftp命令進行。
1:使用ftp命令連接到ftp服務器。
2:因為目前使用匿名用戶連接到ftp服務器,所有輸入匿名用戶(一般ftp服務器匿名為anonymous,這里的ftp用戶是在安裝vsftp時自動創建的,該用戶也是vsftp的匿名用戶)。
在連接到vsftp后,其默認目錄為該用戶的家目錄,而ftp用戶的家目錄位于/var/ftp,所有。下圖是用系統其它用戶連接ftp協議服務器(如果在RHEL中開啟SELinux,需要運行以下命令set sebool -P ftp_home_dir=1)。