認識 FTP
Published in
Oct 24, 2022
Hi!不專業工程師是我~ HTTP
之後,我要來認識一下 File Transfer Protocol, FTP
檔案傳輸協定。
在開始真正認識 FTP
之前,我用的時候只知道 FTP
使用 port 21,SFTP
使用 port 22,現在才知道原來 FTP
會使用兩個 port,我了解的 21 port 是用來處理連線或是傳輸的 request,而另一個 port 則是用來處理資料傳遞,讓兩件事情不會混一起。
FTP 分為主動模式及被動模式。
主動模式
- client 透過某個 port(N) 跟 FTP server port 21 建立連線。
- server 回傳確認。
- server 的 20 port 發出連線請求,同上面說明,會是另一個port 來建立資料傳輸連線,所以 20 會發出請求連到 client 的 port N+1
- client 回傳確認後建立傳輸連線。
上述這種主動式的方式需要將 client 大於 1023 的 port 全部打開,才能建立連線,相對不安全,所以為了解決這個問題才發展出了下面的被動模式,PASV
。
被動模式
- client 同樣透過某個 port 跟 FTP server port 21 建立連線,並收到 server 回傳確認。
- 被動模式下,由 client 端發出請求,與 server 的某一個 port 建立資料連線,在 server 回傳確認後進行資料傳輸。(此時不會是與 port 20 建立連線,而是與非特權 port 建立連線。)
與主動模式的差異是,此時 port 的問題回到 server上,由 server 進行控管,用來進行資料傳輸的 port 是可以指定範圍的。