FTP和SFTP都是文件傳輸協議,我們知道FTP使用的是20和21端口,SFTP使用的是22端口。另外,SFTP前面的S應該是Secure安全的意思。其他的區別可能就不太清楚了。
本文正好能夠幫你補齊短板,梳理FTP和SFTP的各方面區別,明確各自的應用場景。
01 FTP協議
FTP(File Transfer Protocol)是主流的文件傳輸協議,能夠實現文件的上傳和下載功能。
FTP有兩個信道:第一信道(控制信道)和第二信道(數據信道)。第一信道主要是信令的交互,用于協商FTP數據信道的傳輸模式和傳輸端口。第二信道用于傳輸文件。
FTP有兩種傳輸模式:主動模式(Active Mode)和被動模式(Passive Mode)。兩種模式都是從FTP服務器側進行考慮的,如果第二信道由FTP服務器主動發起建立,則稱之為主動模式。反之稱之為被動模式。
FTP兩個信道的協商和建立過程如下圖所示。
(1)FTP客戶端主動發起TCP請求,和FTP客戶端建立TCP會話。
(2)經過TCP三次握手,FTP客戶端和FTP服務器建立了第一信道的TCP會話。
(3)在FTP主動模式下,FTP客戶端會主動向FTP服務器發送數據,用于第二信道的信息協商;在FTP被動模式下,FTP服務器開始向FTP客戶端發送數據,用于第二信道的信息協商。
(4)至此,第一信道工作結束。
(5)在FTP主動模式下,FTP服務器主動發起TCP請求,和FTP客戶端建立TCP會話,用于建立第二信道;在FTP被動模式下,FTP客戶端主動發起TCP請求,和FTP客戶端建立TCP會話,用于建立第二信道。
(6)第二信道建立完成后,進行FTP數據的傳輸。
另外,FTP的難點在于FTP服務器和客戶端建立第二通道時可能會有問題,這受制于兩端的網絡環境,特別是存在防火墻的環境。
如果同學們想詳細了解FTP的傳輸模式和防火墻對FTP傳輸的影響,可查找本號的《一文講透防火墻對FTP傳輸的影響》文章進行學習,這里不再贅述。
02 SFTP協議
SFTP(Secure File Transfer Protocol)一種安全的文件傳輸協議,能夠為文件傳輸提供安全的加密通道。
SFTP作為SSH的一部分,包含在SSH軟件中。SFTP自身沒有獨立的守護進程,需要使用sshd守護進程來完成服務器的連接和文件傳輸。由于SFTP作為SSH的一個組件存在,SFTP能夠直接使用SSH加密通道來傳輸數據。
在進行SFTP數據傳輸前,首先需要建立SSH加密通道,如下圖所示。
(1)SSH客戶端主動發起TCP請求,和SSH服務器建立TCP會話。
(2)SSH客戶端和SSH服務器協商認證方式。當前SSH有兩種認證方式:口令認證和秘鑰認證。
(3)如果使用口令認證,則SSH秘鑰協商過程如下。
SSH服務器主動發送公鑰給SSH客戶端。SSH客戶端收到公鑰后,使用公鑰對登陸密碼加密,并回送給SSH服務器。SSH服務器使用私鑰進行數據解密,并驗證SSH客戶端的信息合法性,如果驗證通過則建立連接,進行加密通信。
(4)如果使用秘鑰認證,則SSH秘鑰協商過程如下。
SSH客戶端主動發送本端公鑰給SSH服務器。SSH服務器收到信息后,檢查本端的授權列表中是否包含SSH客戶端的公鑰。如果存在,則生成一個隨機數,并使用SSH客戶端的公鑰加密,生成密文回送給SSH客戶端。SSH客戶單收到密文后,使用私鑰解密,并將隨機數發回SSH服務器。SSH服務器驗證隨機數,如果一致,則認證通過,連接建立。
(4)SSH加密通道建立完成后,SFTP即可進行數據傳輸,上傳和下載文件。
03 二者區別
以下從名稱、協議、安全性、架構、通道、模式、傳輸效率和是否開放八個方面對FTP和SFTP進行對比,總結出了兩者主要的區別,如下表所示。
04 應用場景
FTP明文傳輸,可以不設置密碼,任何人都能訪問,適用于一些公共場合,比如用于公開信息的存放,可供使用者任意下載。同時,FTP不涉及加解密,傳輸效率高,適用于公司內部系統間要求的高速文件傳輸。
SFTP密文傳輸,必須進行加解密,安全性高,適用于公司機密文件的傳輸,以及在公網中傳輸私有信息。同時,SFTP只有一個通道,使用的端口22端口,信道協商簡單,適用于復雜網絡環境中,不容易出現協商問題。
好了,今天就講到這里,請大家持續關注我們的后續內容哦!最后如果喜歡本章內容請不要忘了進行點贊、關注與轉發哦!