文件傳輸協(xié)議(英文:File Transfer Protocol,簡稱為FTP)是用于在網(wǎng)絡上進行文件傳輸?shù)囊惶讟藴蕝f(xié)議。它屬于網(wǎng)絡傳輸協(xié)議的應用層。
FTP是一個8位的客戶端-服務器協(xié)議,能操作任何類型的文件而不需要進一步處理,就像MIME或Unicode一樣。但是,F(xiàn)TP有著極高的延時,這意味著,從開始請求到第一次接收需求數(shù)據(jù)之間的時間,會非常長;并且不時的必須執(zhí)行一些冗長的登陸進程。
概述
FTP服務一般運行在20和21兩個端口。端口20用于在客戶端和服務器之間傳輸數(shù)據(jù)流,而端口21用于傳輸控制流,并且是命令通向ftp服務器的進口。當數(shù)據(jù)通過數(shù)據(jù)流傳輸時,控制流處于空閑狀態(tài)。而當控制流,空閑很長時間后,客戶端的防火墻,會將其會話置為超時,這樣當大量數(shù)據(jù)通過防火墻時,會產生一些問題。此時,雖然文件可以成功的傳輸,但因為控制會話,會被防火墻斷開;傳輸會產生一些錯誤。
FTP實現(xiàn)的目標:
促進文件的共享(計算機程序或數(shù)據(jù))
鼓勵間接或者隱式的使用遠程計算機
向用戶屏蔽不同主機中各種文件存儲系統(tǒng)(File system)的細節(jié)
可靠和高效的傳輸數(shù)據(jù)
缺點:
密碼和文件內容都使用明文傳輸,可能產生不希望發(fā)生的竊聽。
因為必須開放一個隨機的端口以創(chuàng)建連接,當防火墻存在時,客戶端很難過濾處于主動模式下的FTP流量。這個問題,通過使用被動模式的FTP,得到了很大解決。
服務器可能會被告知連接一個第三方計算機的保留端口。
此方式在需要傳輸文件數(shù)量很多的小文件時,效能不好
FTP雖然可以被終端用戶直接使用,但是它是設計成被FTP客戶端程序所控制。
運行FTP服務的許多站點都開放匿名服務,在這種設置下,用戶不需要帳號就可以登錄服務器,默認情況下,匿名用戶的用戶名是:“anonymous”。這個帳號不需要密碼,雖然通常要求輸入用戶的郵件地址作為認證密碼,但這只是一些細節(jié)或者此郵件地址根本不被確定,而是依賴于FTP服務器的配置情況。
[編輯]主動和被動模式
FTP有兩種使用模式:主動和被動。主動模式要求客戶端和服務器端同時打開并且監(jiān)聽一個端口以創(chuàng)建連接。在這種情況下,客戶端由于安裝了防火墻會產生一些問題。所以,創(chuàng)立了被動模式。被動模式只要求服務器端產生一個監(jiān)聽相應端口的進程,這樣就可以繞過客戶端安裝了防火墻的問題。
一個主動模式的FTP連接創(chuàng)建要遵循以下步驟:
客戶端打開一個隨機的端口(端口號大于1024,在這里,我們稱它為x),同時一個FTP進程連接至服務器的21號命令端口。此時,該tcp連接的來源地端口為客戶端指定的隨機端口x,目的地端口(遠程端口)為服務器上的21號端口。
客戶端開始監(jiān)聽端口(x+1),同時向服務器發(fā)送一個端口命令(通過服務器的21號命令端口),此命令告訴服務器客戶端正在監(jiān)聽的端口號并且已準備好從此端口接收數(shù)據(jù)。這個端口就是我們所知的數(shù)據(jù)端口。
服務器打開20號源端口并且創(chuàng)建和客戶端數(shù)據(jù)端口的連接。此時,來源地的端口為20,遠程數(shù)據(jù)(目的地)端口為(x+1)。
客戶端通過本地的數(shù)據(jù)端口創(chuàng)建一個和服務器20號端口的連接,然后向服務器發(fā)送一個應答,告訴服務器它已經(jīng)創(chuàng)建好了一個連接。
[編輯]FTP和網(wǎng)頁瀏覽器
大多數(shù)最新的網(wǎng)頁瀏覽器和文件管理器都能和FTP服務器創(chuàng)建連接。這使得在FTP上通過一個接口就可以操控遠程文件,如同操控本地文件一樣。這個功能通過給定一個FTP的URL實現(xiàn),形如ftp://<服務器地址>(例如,ftp://ftp.gimp.org )。是否提供密碼是可選擇的,如果有密碼,則形如ftp://<login>:<password>@<ftpserveraddress>。大部分網(wǎng)頁瀏覽器要求使用被動FTP模式,然而并不是所有的FTP服務器都支持被動模式。