如何設置FTP的主動模式和被動模式?
數據連接分為兩種模式:主動連接(PORT)和被動連接(PASV)。
Port模式:FTP server:tcp 21 <——client:dynamic ftp server:tcp 20 ——>client:dynamic
Pasv模式:ftp server:tcp 21 <—-client:dynamic ftp server:tcp dynamic <—-client:dynamic
PORT(主動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,客戶 端在命令鏈路上用PORT命令告訴服務器:“我打開了XXXX端口,你過來連接我”。于是服務器從20端口向客戶端的XXXX端口發送連接請求,建立一條 數據鏈路來傳送數據。
PASV(被動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,服務 器在命令鏈路上用PASV命令告訴客戶端:“我打開了XXXX端口,你過來連接我”。于是客戶端向服務器的XXXX端口發送連接請求,建立一條數據鏈路來 傳送數據。
---------------------
換一種通俗點的方式說:
在主動模式下,FTP客戶端隨機開啟一個大于1024的端口N向服務器的21號端口發起連接,然后開放N+1號端口進行監聽,并向服務器發出PORT N+1命令。服務器接收到命令后,會用其本地的FTP數據端口(通常是20)來連接客戶端指定的端口N+1,進行數據傳輸。
在被動模式下,FTP庫戶端隨機開啟一個大于1024的端口N向服務器的21號端口發起連接,同時會開啟N+1號端口。然后向服務器發送PASV命令,通知服務器自己處于被動模式。服務器收到命令后,會開放一個大于1024的端口P進行監聽,然后用PORT P命令通知客戶端,自己的數據端口是P。客戶端收到命令后,會通過N+1號端口連接服務器的端口P,然后在兩個端口之間進行數據傳輸。
總的來說,主動模式的FTP是指服務器主動連接客戶端的數據端口,被動模式的FTP是指服務器被動地等待客戶端連接自己的數據端口。