科普!一文詳解 FTP、FTPS 與 SFTP 的原理

做者:又拍雲
連接: https://my.oschina.net/upyun/...

FTP、FTPS 與 SFTP 簡介

FTP

FTP 即 文件傳輸協議(英語:File Transfer Protocol 的縮寫)是一個用於計算機網絡上在客戶端和服務器之間進行文件傳輸的應用層協議。完整的 FTP 是由 FTP 服務器 和 FTP 客戶端組成的,客戶端能夠將本地的文件經過 FTP 協議上傳到服務器,也能夠將服務器的文件下載到本地。它是當今使用的最古老的文件傳輸協議之一,是一種很是便捷的移動文件的方式。安全

FTP 的工做原理

FTP 鏈接須要 FTP 服務器和客戶端兩方在網絡上創建通訊。創建 FTP 鏈接時會有兩個不一樣的通訊通道。一個被稱爲命令通道,它的做用是發出和響應指令。另外一個爲數據通道,用於客戶端和服務器端進行數據交互。服務器

使用 FTP 傳輸文件時,用戶須要經過向 FTP 服務器提供憑據來得到文件傳輸許可。固然某些公共 FTP 服務器可能不須要憑據便可訪問其文件,可是沒法保證數據傳輸的安全性,任何未加密公共網絡上的數據發送都是很是危險的,因此爲了保護傳輸數據的安全,由 FTP 衍生而出的就是下面的兩種協議:FTPS 與 SFTP。網絡

FTPS

接下來二狗子查詢了一下,發現 FPTS 有 FTPS 隱式 SSL 和 FTPS 顯示 SSL 兩種模式,二者都是用 SSL 加密。那麼二者有什麼區別呢?併發

  • FTPS 隱式 SSL:該模式一般在端口 990 上運行。在這個模式下所有數據的交換都須要在客戶端和服務器之間創建 SSL 會話,而且服務器會拒絕任何不使用 SSL 進行的鏈接嘗試。
  • FTPS 顯式 SSL:顯示 SSL 下服務器能夠同時支持 FTP 和 FTPS 會話。開始會話前客戶端須要先創建與 FTP 服務器的未加密鏈接,並在發送用戶憑證前先發送 AUTH TLS 或 AUTH SSL 命令來請求服務器將命令通道切換到 SSL 加密通道,成功創建通道後再將用戶憑證發送到 FTP 服務器,從而保證在會話期間的任何命令均可以經過 SSL 通道自動加密。

給你們簡單快速的總結一下。當啓用隱式模式時,FTP 的默認端口就被改成 TCP/990,服務器自動創建安全鏈接,而且要求客戶端也必須支持安全鏈接模式也就是使用 SSL 進行鏈接。當啓用顯式模式時,與 FTP 鏈接方式和默認端口同樣,可是須要以命令 AUTH SSL/TLS 類型的命令進行激活安全鏈接後才能正常傳輸數據。app

SFTP

最後你們來一塊兒看看 SFTP,SFTP 是 Secure File Transfer Protocol 的縮寫,也叫做安全文件傳送協議。工具

若是說 FTPS 是在 FTP 協議上增長了一層 SSL ,那麼 SFTP 就是是基於網絡協議SSH(安全外殼)的協議與前面所說的 FTP 徹底不一樣。SFTP 不使用單獨的命令通道和數據通道,而是數據和命令都會經過單個鏈接以特殊格式的數據包進行傳輸。加密

SFTP 提供了兩種驗證鏈接的方法。spa

  • 與 FTP 同樣,鏈接時只須要驗證用戶 ID 和密碼就能夠了。可是,與FTP不一樣的是,這些憑據是加密的,這是 SFTP 最主要的安全優點。
  • 除密碼外,還能夠經過 SSH 密鑰來驗證並經過 SFTP 協議鏈接。

瞭解了這幾個協議以後,二狗子使用 FTP 客戶端工具就更加順手了,他能夠根據本身的需求更改協議以及加密方式,而不用爲不懂某個設置而煩惱。.net

可是,新的疑問又出現了,二狗子看到這裏的傳輸設置中的傳輸模式,有主動和被動之分,這又是什麼意思呢。不懂就問的他又打開了 Google…計算機網絡

FTP 軟件的主動模式和被動模式的區別

主動模式

通常 FTP 的默認模式就是主動模式,也稱爲 port 模式。

它是經過兩個步驟來進行工做的:

  • 首先客戶端上的隨機端口與服務器上的 FTP 端口 21 創建命令通道,客戶端發送 PORT 命令,指定服務器與客戶端其中一個端口鏈接,並創建數據通道。
  • 而後服務器從端口 20 鏈接到爲數據通道指定的客戶端端口。創建鏈接後,便可經過這些客戶端和服務器端口進行文件傳輸。

被動模式

在傳輸方式欄,你還能夠手動調整爲被動傳輸模式,在該模式下用戶端進行文件傳輸時,會先經過隨機端口 A 鏈接到服務器上的端口 21,併發出 PASV 命令創建命令通道,告訴服務端此次是被動模式鏈接。以後服務器會打開一個隨機端口用於數據傳輸,而客戶端經過與發出命令的端口不一樣的隨機端口 B 創建數據通道,從而進行文件傳輸。

被動模式與主動模式不一樣的地方就是客戶端啓動數據鏈接。在主動模式下,客戶端在命令通道上創建鏈接後,服務器將啓動與客戶端的數據鏈接。而在被動模式下,創建命令通道後,由客戶端啓動與服務器的數據鏈接。

由於這個區別,能夠得出二者的優點和缺陷。好比主動模式有利於管理 FTP 服務端,由於只須要打開 21 端口的「准入」、20 端口的「準出」 便可,可是因爲服務器鏈接到客戶端的端口隨機,因此客戶端有可能會觸發防火牆,甚至直接被防火牆攔截掉。反之被動模式則有利於管理客戶端。

沒想到一個看似簡單的存儲工具竟然還有着這麼多的分類和區別,不一樣的模式不一樣的方式均可以對應不一樣的需求,看來之後在使用工具的時候仍是能夠多少了解一點相關知識,能讓工具用起來更順手更舒心~

相關文章
相關標籤/搜索