FTP協議學習記錄

FTPFile Transfer Protocol,文件傳輸協議) TCP/IP 協議組中的協議之一。位於應用層。

 

默認情況下FTP協議使用TCP端口中的 2021這兩個端口,其中20用於傳輸數據,21用於傳輸控制信息。(我自己建立FTP服務器,綁定端口時候通常不使用21端口,而選擇大於1024的端口號)但是,是否使用20作爲傳輸數據的端口與FTP使用的傳輸模式有關,如果採用主動模式,那麼數據傳輸端口就是20;如果採用被動模式,則具體最終使用哪個端口要服務器端和客戶端協商決定。


FTP連接有兩種工作模式:主動模式和被動模式(感覺像沒說一樣)

無論是主動模式還是被動模式,其要進行文件傳輸都必須依次建立兩個連接,分別爲命令連接與數據連接。而主動模式與被動模式的差異主要體現在數據連接通道上。

 

關鍵記住一點:工作模式中的主動被動都是相對於服務器而言的

 

FTP 主動模式。

  當客戶端發出數據傳輸的指令之後(如上傳數據或者下載文件),客戶端會啓用另外一個端口監聽等待連接,並利用先前建立的命令連接通道告訴FTP服務器其監聽的端口號。然後FTP服務器會利用端口20和剛纔的FTP客戶端所告知的端口再次進行三方握手。三次握手成功後便建立了一條數據傳輸通道。注意此時數據連接通道建立的過程中,是FTP服務器的20號端口主動連接FTP客戶端,爲此這種連接方式就叫做主動模式

 

FTP 被動模式。

  如果用戶需要進行數據傳輸的時候,FTP客戶端會通過命令通道告訴FTP服務器,向服務器發出一個PASV指令。這個指令就是告訴服務器,要採用被動模式建立連接。如果採用被動操作模式,服務器會選擇自身的一個端口來進行監聽連接,並再次利用命令連接通道告訴客戶端我爲你開啓了哪個端口,你要建立數據連接的話就跟我的哪個端口聯繫。客戶端在接到這個信息後,就會在自己操作系統上選擇一個數據連接的通信端口,與服務器提供的端口進行三方握手,並最終建立起可以進行數據傳輸的通道。

 

主動模式ftp與被動模式FTP優點和缺點:      

   主動FTP對FTP服務器的管理和安全很有利,但對客戶端的管理不利。因爲FTP服務器企圖與客戶端的高位隨機端口建立連接,而這個端口很有可能被客戶端的防火牆阻塞掉。被動FTP對FTP客戶端的管理有利,但對服務器端的管理不利。因爲客戶端要與服務器端建立兩個連接,其中一個連到一個高位隨機端口,而這個端口很有可能被服務器端的防火牆阻塞掉。

 

使用建議:

如果是採用被動操作模式的話,是客戶端主動跟服務期的20號端口進行連接的。爲此在數據傳輸通道建立的過程中,即使中間有NAT服務器或者防火牆,也會準確無誤的連接到FTP服務器的數據傳輸接口。所以說,如果在客戶端與FTP服務器之間存在防火牆或者NAT服務器等類似設備的話,那麼在FTP服務器部署的時候,最好採用被動操作模式。否則的話,很可能只能夠建立命令連接通道,而無法進行數據傳輸。

在 FTP服務器部署的時候,其默認採用的是主動操作模式。如果企業FTP服務器的用戶都是在內部網絡中的,即不用像外部網絡的用戶提供FTP連接的需求,那麼採用這個默認操作方式就可以了。(一些FTP客戶端工具有工作模式設置的選項,可以自由選擇採用哪種連接模式


應用經驗:

ftp傳輸中,傳輸模式有Binary和Ascii兩種方式。
Binary按照二進制形式傳輸,傳輸前後的文件是一樣的。
Ascii是按照文本形式傳輸,在unix和windows下,文本的行結束字符不一樣,一個是'\n',一個是'\n\r'。
Ascii傳輸的時候,自動轉換了行結束字符。
通常情況下,最好按照Binary來傳輸。一些數據文件,例如不需要打開查看文本的二進制文件,需要使用Binary來傳輸。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章