認識 FTP

MichaelXiao
程式裡有蟲
Published in
Oct 24, 2022

Hi!不專業工程師是我~ HTTP 之後,我要來認識一下 File Transfer Protocol, FTP 檔案傳輸協定。

Photo by Mathew Schwartz on Unsplash

在開始真正認識 FTP 之前,我用的時候只知道 FTP 使用 port 21,SFTP 使用 port 22,現在才知道原來 FTP 會使用兩個 port,我了解的 21 port 是用來處理連線或是傳輸的 request,而另一個 port 則是用來處理資料傳遞,讓兩件事情不會混一起。

FTP 分為主動模式及被動模式。

主動模式

  1. client 透過某個 port(N) 跟 FTP server port 21 建立連線。
  2. server 回傳確認。
  3. server 的 20 port 發出連線請求,同上面說明,會是另一個port 來建立資料傳輸連線,所以 20 會發出請求連到 client 的 port N+1
  4. client 回傳確認後建立傳輸連線。

上述這種主動式的方式需要將 client 大於 1023 的 port 全部打開,才能建立連線,相對不安全,所以為了解決這個問題才發展出了下面的被動模式,PASV

被動模式

  1. client 同樣透過某個 port 跟 FTP server port 21 建立連線,並收到 server 回傳確認。
  2. 被動模式下,由 client 端發出請求,與 server 的某一個 port 建立資料連線,在 server 回傳確認後進行資料傳輸。(此時不會是與 port 20 建立連線,而是與非特權 port 建立連線。)

與主動模式的差異是,此時 port 的問題回到 server上,由 server 進行控管,用來進行資料傳輸的 port 是可以指定範圍的。

--

--

MichaelXiao
程式裡有蟲

Hi!不專業工程師是我,跟大家分享工作上遇到的各種疑難雜症。・。・