FTP(File Transfer Protocol)是TCP/IP協議組中的協議之一,該協議是Internet文件傳送的基礎,它由一系列規格說明文檔組成,目標是提升文件的共享性,提供非直接使用遠程計算機,使存儲介質對用戶透明和可靠高效地傳送數據。假設有兩臺不一樣的主機,運行在不一樣的操做系統下、使用不一樣的文件結構和字符集。若是須要將一個完整的文件從一臺主機複製到另外一個主機上去,則能夠採用FTP的傳輸方式。Telnet協議也能夠完成不一樣操做系統之間的文件傳輸。但與Telnet不一樣的是:FTP採用2個TCP鏈接來傳輸文件,而不須要強制兩端都採用同一個標準。服務器
FTP採用2個TCP鏈接來傳輸文件:ide
一、控制鏈接this
以客戶端/服務器方式創建。服務器以被動方式打開用於FTP的公共端口21,等待客戶端來鏈接;客戶端則以主動方式打開公共端口21,發起鏈接的創建請求。spa
控制鏈接始終等待客戶端和服務器之間的通訊,而且將相關命令從客戶端傳送給服務器,同時將服務器的應答傳送給客戶端。操作系統
二、數據鏈接.net
服務器的數據鏈接端使用端口20。服務器執行主動打開數據鏈接,一般也執行主動關閉數據鏈接,可是,當客戶端向服務器發送流形式的文件時,則須要客戶端關閉數據鏈接。文檔
FTP中傳輸方式是流方式,而且文件結尾以關閉數據鏈接爲標誌,因此對每個文件傳輸或目錄列表來講,都要創建一個全新的數據鏈接。所以,當一個文件在客戶端與服務器之間傳輸時,一個數據鏈接就創建起來了。get
創建FTP數據鏈接的過程以下:it
以下圖所示,假設FTP客戶端用於控制鏈接的臨時端口號爲2345,用戶數據鏈接的臨時端口號是2346。class
一、服務器以被動方式打開端口21,等待鏈接。
二、客戶端發起控制鏈接的主動打開,創建鏈接。
三、客戶端用於控制鏈接的臨時端口,與服務器21號端口之間的控制鏈接創建完畢。
四、客戶端發起創建數據鏈接的命令。
五、客戶端爲該數據鏈接選擇一個臨時端口號,而且使用PORT命令經過控制鏈接把端口號發送給服務器。
六、服務器經過控制鏈接的接收端口號,向客戶端發佈一個主動的數據鏈接的打開。
七、客戶端用於數據鏈接的臨時端口,與服務器的20號端口之間的數據鏈接創建完畢。
注意:客戶端也有可能不發出PORT命令,而由服務器向正被客戶端使用的同一個端口號發出主動打開消息,用當前創建控制鏈接的臨時端口來進行數據鏈接,這樣控制鏈接被迫關閉。經過此方式來結束控制鏈接。