FTP是文件傳輸過程中的常用協(xié)議册舞,很多公司搭建FTP服務(wù)器來提供文件下載服務(wù),這里給大家分享一下FTP的兩種傳輸模式聋丝,F(xiàn)TP不同于其他服務(wù)的是它使用了兩個(gè)端口, 一個(gè)數(shù)據(jù)端口和一個(gè)命令端口(或稱為控制端口)。通常21端口是命令端口,20端口是數(shù)據(jù)端口肛搬。當(dāng)混入主動(dòng)/被動(dòng)模式的概念時(shí),數(shù)據(jù)端口就有可能不是20了毕贼。
主動(dòng)模式
PORT中文稱為主動(dòng)模式温赔,主動(dòng)模式的工作原理: FTP客戶端使用N(N>1023)端口連接到FTP服務(wù)器的21端口,發(fā)送用戶名和密碼登錄鬼癣,登錄成功后要list列表或者讀取數(shù)據(jù)時(shí)陶贼,客戶端開放N+1端口,發(fā)送 PORT命令到FTP服務(wù)器待秃,告訴服務(wù)器客戶端采用主動(dòng)模式并開放端口拜秧;FTP服務(wù)器收到PORT主動(dòng)模式命令和端口號(hào)后,通過服務(wù)器的20端口和客戶端開放的端口連接章郁,發(fā)送數(shù)據(jù)枉氮,原理如下圖:
被動(dòng)模式
PASV是Passive的縮寫,中文成為被動(dòng)模式暖庄,被動(dòng)模式的工作原理:FTP客戶端使用N(N>1023)連接FTP服務(wù)器的21端口聊替,發(fā)送用戶名和密碼登錄,登錄成功后要list列表或者讀取數(shù)據(jù)時(shí)培廓,發(fā)送PASV命令到FTP服務(wù)器惹悄, 服務(wù)器在本地開放一個(gè)端口(1024以上),然后把開放的端口告訴客戶端肩钠, 客戶端再通過N+1端口連接到服務(wù)器開放的端口進(jìn)行數(shù)據(jù)傳輸泣港,原理如下圖:
區(qū)別對(duì)比
由上面的連接圖可以得出,二者的區(qū)別主要在于建立數(shù)據(jù)傳輸連接的時(shí)候蔬将,主模式的連接發(fā)起方為服務(wù)器端爷速,使用20號(hào)端口連接客戶端的N+1端口建立數(shù)據(jù)連接;被動(dòng)模式連接發(fā)起方為客戶端霞怀,客戶端使用端口號(hào)+1去連接服務(wù)器的某一高位端口惫东;
網(wǎng)絡(luò)設(shè)置區(qū)別
情景:
FTP的客戶端和服務(wù)器分別在不同網(wǎng)絡(luò),兩個(gè)網(wǎng)絡(luò)之間需要經(jīng)過防火墻。
主動(dòng)模式下廉沮,客戶端的FTP軟件設(shè)置主動(dòng)模式開放的端口段颓遏,在客戶端的防火墻開放對(duì)應(yīng)的端口段即可。
有一種常見問題是:服務(wù)器端只開放了21端口滞时, 客戶端機(jī)器沒開放任何端口叁幢。FTP客戶端連接采用的被動(dòng)模式,結(jié)果客戶端能登錄成功坪稽,但是無法LIST列表和讀取數(shù)據(jù)曼玩。很明顯,是因?yàn)榉?wù)器端沒開放被動(dòng)模式下的隨機(jī)端口導(dǎo)致窒百。
由于被動(dòng)模式下黍判,服務(wù)器端開放的端口隨機(jī),但是防火墻要不能全部開放篙梢,解決的方案是顷帖,在ftp服務(wù)器配置被動(dòng)模式下開放部分隨機(jī)高位端口(范圍在ftp服務(wù)器軟件設(shè)置,可以設(shè)置任意1024上的端口段)渤滞,然后在防火墻設(shè)置規(guī)則贬墩,開放服務(wù)器端相應(yīng)的端口號(hào)即可。