FTP和SFTP都是文件傳輸協(xié)議,我們知道FTP使用的是20和21端口,SFTP使用的是22端口。另外,SFTP前面的S應(yīng)該是Secure安全的意思。其他的區(qū)別可能就不太清楚了。
本文正好能夠幫你補(bǔ)齊短板,梳理FTP和SFTP的各方面區(qū)別,明確各自的應(yīng)用場景。

01 FTP協(xié)議
FTP(File Transfer Protocol)是主流的文件傳輸協(xié)議,能夠?qū)崿F(xiàn)文件的上傳和下載功能。
FTP有兩個信道:第一信道(控制信道)和第二信道(數(shù)據(jù)信道)。第一信道主要是信令的交互,用于協(xié)商FTP數(shù)據(jù)信道的傳輸模式和傳輸端口。第二信道用于傳輸文件。
FTP有兩種傳輸模式:主動模式(Active Mode)和被動模式(Passive Mode)。兩種模式都是從FTP服務(wù)器側(cè)進(jìn)行考慮的,如果第二信道由FTP服務(wù)器主動發(fā)起建立,則稱之為主動模式。反之稱之為被動模式。
FTP兩個信道的協(xié)商和建立過程如下圖所示。

(1)FTP客戶端主動發(fā)起TCP請求,和FTP客戶端建立TCP會話。
(2)經(jīng)過TCP三次握手,F(xiàn)TP客戶端和FTP服務(wù)器建立了第一信道的TCP會話。
(3)在FTP主動模式下,F(xiàn)TP客戶端會主動向FTP服務(wù)器發(fā)送數(shù)據(jù),用于第二信道的信息協(xié)商;在FTP被動模式下,F(xiàn)TP服務(wù)器開始向FTP客戶端發(fā)送數(shù)據(jù),用于第二信道的信息協(xié)商。
(4)至此,第一信道工作結(jié)束。
(5)在FTP主動模式下,F(xiàn)TP服務(wù)器主動發(fā)起TCP請求,和FTP客戶端建立TCP會話,用于建立第二信道;在FTP被動模式下,F(xiàn)TP客戶端主動發(fā)起TCP請求,和FTP客戶端建立TCP會話,用于建立第二信道。
(6)第二信道建立完成后,進(jìn)行FTP數(shù)據(jù)的傳輸。
另外,F(xiàn)TP的難點(diǎn)在于FTP服務(wù)器和客戶端建立第二通道時可能會有問題,這受制于兩端的網(wǎng)絡(luò)環(huán)境,特別是存在防火墻的環(huán)境。
如果同學(xué)們想詳細(xì)了解FTP的傳輸模式和防火墻對FTP傳輸?shù)挠绊?,可查找本號的《一文講透防火墻對FTP傳輸?shù)挠绊憽肺恼逻M(jìn)行學(xué)習(xí),這里不再贅述。
02 SFTP協(xié)議
SFTP(Secure File Transfer Protocol)一種安全的文件傳輸協(xié)議,能夠?yàn)槲募鬏斕峁┌踩募用芡ǖ馈?/p>
SFTP作為SSH的一部分,包含在SSH軟件中。SFTP自身沒有獨(dú)立的守護(hù)進(jìn)程,需要使用sshd守護(hù)進(jìn)程來完成服務(wù)器的連接和文件傳輸。由于SFTP作為SSH的一個組件存在,SFTP能夠直接使用SSH加密通道來傳輸數(shù)據(jù)。
在進(jìn)行SFTP數(shù)據(jù)傳輸前,首先需要建立SSH加密通道,如下圖所示。

(1)SSH客戶端主動發(fā)起TCP請求,和SSH服務(wù)器建立TCP會話。
(2)SSH客戶端和SSH服務(wù)器協(xié)商認(rèn)證方式。當(dāng)前SSH有兩種認(rèn)證方式:口令認(rèn)證和秘鑰認(rèn)證。
(3)如果使用口令認(rèn)證,則SSH秘鑰協(xié)商過程如下。
SSH服務(wù)器主動發(fā)送公鑰給SSH客戶端。SSH客戶端收到公鑰后,使用公鑰對登陸密碼加密,并回送給SSH服務(wù)器。SSH服務(wù)器使用私鑰進(jìn)行數(shù)據(jù)解密,并驗(yàn)證SSH客戶端的信息合法性,如果驗(yàn)證通過則建立連接,進(jìn)行加密通信。
(4)如果使用秘鑰認(rèn)證,則SSH秘鑰協(xié)商過程如下。
SSH客戶端主動發(fā)送本端公鑰給SSH服務(wù)器。SSH服務(wù)器收到信息后,檢查本端的授權(quán)列表中是否包含SSH客戶端的公鑰。如果存在,則生成一個隨機(jī)數(shù),并使用SSH客戶端的公鑰加密,生成密文回送給SSH客戶端。SSH客戶單收到密文后,使用私鑰解密,并將隨機(jī)數(shù)發(fā)回SSH服務(wù)器。SSH服務(wù)器驗(yàn)證隨機(jī)數(shù),如果一致,則認(rèn)證通過,連接建立。
(4)SSH加密通道建立完成后,SFTP即可進(jìn)行數(shù)據(jù)傳輸,上傳和下載文件。
03 二者區(qū)別
以下從名稱、協(xié)議、安全性、架構(gòu)、通道、模式、傳輸效率和是否開放八個方面對FTP和SFTP進(jìn)行對比,總結(jié)出了兩者主要的區(qū)別,如下表所示。

04 應(yīng)用場景
FTP明文傳輸,可以不設(shè)置密碼,任何人都能訪問,適用于一些公共場合,比如用于公開信息的存放,可供使用者任意下載。同時,F(xiàn)TP不涉及加解密,傳輸效率高,適用于公司內(nèi)部系統(tǒng)間要求的高速文件傳輸。
SFTP密文傳輸,必須進(jìn)行加解密,安全性高,適用于公司機(jī)密文件的傳輸,以及在公網(wǎng)中傳輸私有信息。同時,SFTP只有一個通道,使用的端口22端口,信道協(xié)商簡單,適用于復(fù)雜網(wǎng)絡(luò)環(huán)境中,不容易出現(xiàn)協(xié)商問題。
好了,今天就講到這里,請大家持續(xù)關(guān)注我們的后續(xù)內(nèi)容哦!最后如果喜歡本章內(nèi)容請不要忘了進(jìn)行點(diǎn)贊、關(guān)注與轉(zhuǎn)發(fā)哦!