FTP的運作方式

何謂FTP?
FTP(File Transfer Protocol),是「檔案傳輸協定」,透過TCP[註1]封包協定連線方式,可以將檔案在FTP Server 及 Client中進行傳輸,只要Client擁有適當地權限就可以上傳或下載資料到FTP Server上。
運作方式 FTP不同於其他協定(如:HTTP、Telnet、SSH等),FTP有兩個連線。
一個是「命令傳輸連線」,命令連線是負責把Client要求傳送給FTP Server,要先建立命令傳輸連線後,才能讓FTP Server能執行Client的動作。 另一個則是「資料傳輸連線」,當Client建立命令連線後,利用命令連線告訴FTP Server所要得服務時,例如:Client要下載的資料,FTP Server就會將資料傳送到Client,當傳送完畢後,資料傳輸連線就中斷,但命令傳輸連線還是保持著。
兩種傳輸模式 FTP為了能在不同的網路環境中傳輸,形成有兩種模式,有「主動模式(Active Mode)」、「被動模式(Passive Mode)」,主動及被動的觀點是以FTP Server來看。

以下介紹兩種模式:
ftp active mode

 

主動模式時,一開始當然是由Client對FTP Server要求服務,所以,Client開啟大於port 1024,來連接到FTP Server的port 21,在這時是用TCP協定方式建立「命令傳輸連線」,當Client需要上傳或下載等工作時,會透過命令傳輸連線告訴FTP Server,是要使用主動或被動來傳輸,如採用主動模式且Client會把所要建立資料傳輸連線的port給FTP Server,FTP Server開啟port 20與Client的大於port 1024(與命令傳輸連線的port不相同),當建立好連線時,就可以進行檔案傳輸,所以檔案傳輸並不是在建立命令傳輸連線時就建立的。
 
ftp passive mode
被動模式時,一開始一樣如同主動模式的建立「命令傳輸連線」的方式,也會告訴FTP Server要使用被動模式來連線,此時FTP Server會隨機開啟大於1024的port並監聽,且會透過命令傳輸連線告訴Client,接著,Client會開啟大於1024(跟命令傳輸連線的port不相同),以TCP協定建立連線,當建立完後,可以進行檔案傳輸。

 

註一:TCP在OSI模型中是屬於第四層,也就是傳輸層,TCP是一個較可靠的傳輸方式,在建立連線時,會利用三向交握(Three-Way Handshake)來確認Server及Client是否在進行傳輸,另外,透過TCP也讓傳輸的資料不易發生封包遺失等問題,詳細可參考維基百科。 如有錯誤,歡迎來信指導。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料