概述:
文件傳輸協議(File Transfer Protocol,FTP)是專門用來傳輸文件的協議。FTP的主要作用就是讓用戶能夠把文件從遠程計算機上拷到本地,或者把本地計算機的文件傳送到遠程計算機上去。
早期在Internet上傳輸文件並不是一件容易的事。Internet是一個非常復雜的計算機系統,有PC、工作站、MAC、服務器、大型機等,而這些計算機可能運行不同的操作系統,有UNIX、DOS、Windows、MacOS等,各種操作系統之間的文件交流需要建立一個同意的文件傳輸協議,這就是FTP。雖然基於不同的操作系統有不同的FTP應用程序,而所有這些應用程序都遵守同一種協議,這樣用戶就可以把自己的文件傳送給別人,或者從其他用戶環境中獲得文件。
FTP也是一個客戶機/服務器(C/S)模式的系統。用戶通過一個文件FTP協議的客戶端進程連接到遠程主機上的FTP服務器進程。用戶通過客戶端進程向服務器進程發出命令,服務器進程執行用戶所發處的命令,並將執行的結果返回到客戶機。比如說,用戶發出一條命令,要求服務器向用戶傳送某一個文件,服務器會相遇這條命令,將指定文件送至用戶的機器上。客戶端進程接收到這個文件,將其存放在用戶指定的目錄中。FTP客戶端程序有字符界面和圖形界面兩種。字符界面所使用的FTP命令比較復雜、繁多;圖形界面的FTP 客戶端程序在操作上要簡潔方便的多。
工作原理
FTP使用TCP提供可靠傳輸服務。一個FTP服務器進程可以為多個客戶端進程提供服務。FTP的服務器進程有兩部分組成:主進程,負責接收新的客戶進程請求;若干個叢屬進程,負責處理單個客戶進程的請求。
主進程的作用或工作步驟為:監聽21端口,等待客戶端的進程連接;啟動叢屬進程處理客戶端進程的請求,叢屬進程處理完客戶端請求后即終止;繼續監聽21端口,處理其他客戶進程的請求。主進程與叢屬進程可以並發執行。
FTP 在進行文件傳輸時,客戶進程和服務器進程之間要建立兩個TCP連接;控制連接和數據連接。控制連接在會話過程中一直保持打開狀態,發送客戶端的傳輸請求給服務器端的控制進程,但控制連接進程並不傳輸文件,用於傳輸文件的是數據連接。
客戶端的控制進程使用本地的某一端口(x)連接到服務器的周知端口21上,建立連接,同時告訴服務器自己的數據傳輸端口(y)。服務器如果同意建立連接,則使用傳輸數據的周知端口21與客戶端的數據傳輸進程的端口(y)之間建立連接。使用兩個獨立連接的好處是使協議實現起來更加容易,數據連接與控制連接不會發生混亂。