1. 程式人生 > >FTP檔案傳輸協議詳解

FTP檔案傳輸協議詳解

       FTP 是File Transfer Protocol(檔案傳輸協議)的英文簡稱,而中文簡稱為“文傳協議”。用於Internet上的控制檔案的雙向傳輸。同時,它也是一個應用程式(Application)。基於不同的作業系統有不同的FTP應用程式,而所有這些應用程式都遵守同一種協議以傳輸檔案。在FTP的使用當中,使用者經常遇到兩個概念:"下載"(Download)和"上傳"(Upload)。"下載"檔案就是從遠端主機拷貝檔案至自己的計算機上;"上傳"檔案就是將檔案從自己的計算機中拷貝至遠端主機上。用Internet語言來說,使用者可通過客戶機程式向(從)遠端主機上傳(下載)檔案。   摘自--百度百科

FTP連線方式:

FTP是由兩個不同的TCP連線組成的應用:

      控制連線: 是基於TCP的連線,用於提供一個傳送指令和響應的通訊通道。使用者可以通過這種有效機制告訴伺服器請求的文件,正在使用的目錄及其他資訊。

      資料連線:這是TCP的第二個基本連線,用於真正意義上的傳輸使用者資料。在使用控制連線交換完請求文件的資訊後,使用資料連線在客戶端和伺服器傳輸文件。

使用這兩種連線時,兩種不同的操作方式:主動方式和被動方式,確定了連線的建立方向。  

FTP主動式連線(Active)(預設的連線方式)

A:建立命令通道的連線:客戶端會隨機獲取一個大於1024的埠來與FTP伺服器端的埠21連線,完成連線後客戶端通過這個連線來對FTP伺服器下達指令。 B:通知FTP伺服器端使用Acitve(主動式)並且告知連線的埠號:FTP伺服器端的21號埠主要用於命令的下達,客戶端在需要資料傳輸的情況下,會告知伺服器端用什麼方式連線,如果是Active(主動式)方式的話,客戶端會先隨機啟用一個埠,通過命令通道告知FTP伺服器連線方式和埠這兩個資訊,等待伺服器連線。 C:FTP伺服器主動向客戶端連線:FTP伺服器由命令通道連線到客戶端的需求後,會主動由20埠向客戶端告知的埠連線。 這樣就成功建立起“命令”和“資料傳輸”兩條通道。 2、客戶端被動式連線(PASV) A:建立命令通道的連線:客戶端會隨機獲取一個大於1024的埠來與FTP伺服器端的埠21連線,完成連線後客戶端通過這個連線來對FTP伺服器下達指令。 B:如果有使用資料通道的命令時,客戶端通過命令通道向伺服器發出PASV的被動式連線要求,並等待伺服器響應。 C:FTP伺服器啟動資料通道埠,並通知客戶端連線:如果FTP伺服器是能處理PASV方式的連線,伺服器會先啟動一個埠在監聽,這個埠是隨機的,也可能是預先定義的一個埠段裡的一個,然後伺服器會通過命令通道告知客戶端啟動的埠號,等待客戶端連線。 D:客戶端會隨機選用一個大於1024的埠來對FTP主機啟動的PASV埠進行連線,建立資料通道。 如果客戶端是在防火牆的後端,用主動式連線的話又可能會造成建立不了資料通道的情況,這樣可以通過防火牆提供的FTP檢測模組或者採用被動式連線的方式來解決。