Ftp基礎(二):被動模式與主動模式
??Ftp即文件傳輸協議,說白了就是處理文件操作的。可能你還聽說過Ftps、SFtp,簡單說一下他們的區別吧
Ftps:可以理解為Ftp+Ssl,Ftp與Ftps的關系就類似Http和Https的關系
SFtp:可以理解為Ftp+SSH
??總之,可以理解為Ftp就是明文傳輸,Ftps、SFtp采用了加密傳輸。
好了,本文繼續說說主動模式和被動模式,首先,我們先要知道Ftp的兩個端口:??
命令控制端口:用于發送FTP命令信息,默認是21
數據傳輸端口:用于上傳、下載文件數據,默認是20
??主動模式
??
??
1、客戶端首先打開隨機端口A,連接到Ftp的命令控制端口(默認是21)
2、客戶端再次打開一個不同于A的隨機端口B
3、客戶端使用PORT命令將打開的隨機端口B發送給Ftp
4、Ftp使用20端口連接到客戶端打開的隨機端口B
5、Ftp和客戶端使用20、B兩個端口傳輸數據
??被動模式
??被動模式的數據發送流程大概是這個樣子的
??
??
1、客戶端首先打開隨機端口A,連接到Ftp的命令控制端口(默認是21)
2、然后客戶端發送PASV命令到Ftp服務端,然后Ftp將會打開一個隨機端口B(端口號大于1023小于65535)
3、Ftp將打開的隨機端口B發送給客戶端
4、客戶端再次打開一個不用于A的隨機端口C,連接到Ftp打開的隨機端口B
5、Ftp和客戶端使用B、C兩個端口傳輸數據
??優缺點??
主動模式:方便服務端管理,Ftp服務端只開啟了一個20端口用來傳輸數據,但是不方便客戶端的管理。
因為數據傳輸連接由Ftp服務端發起,如果Ftp服務端開啟了防火墻,只需要放行21端口,
如果客戶端開啟了防火墻,需要放行一段端口,否則可能導致連接失敗
被動模式:方便客戶端管理,因為數據傳輸連接由客戶端發起,
如果Ftp服務端開啟了防火墻,那么需要在Ftp上放行一段接口,這個相對容易實現。
客戶端是否開啟了防火墻,對被動模式沒什么影響。
??現實中,我們一般是只有一個服務端多個客戶端,而且往往客戶端是個人電腦,那么多數時候是開啟了防火墻的,隱藏往往被動模式更適合大多數人。
??驗證
??最后再說一個問題,我們怎么驗證一個Ftp服務端是支持主動模式還是被動模式?
??經過驗證,如果不使用代碼的情況下和安裝第三方軟件的情況下,一般有兩個辦法:
??1、使用資源管理器驗證,但是這個情況下只能驗證是否支持被動模式,如果資源管理器能打開,那么表示支持被動模式
??2、使用Telnet來驗證,比如有個ftp地址:10.255.0.162,
??驗證是否支持被動模式:???
# 打開cmd,使用telnet連接到21端口
telnet 10.255.0.162 21
# 使用USER、PASS命令登錄
USER ftp_user
PASS 123456
# 發送PASV命令,告訴Ftp表示一個被動連接
PASV
??如果最后的結果顯示下面的結果,則表示支持被動模式,同時可以從下面的結果中看到,服務端開啟了一個端口16523(64*256+139):
??
??否則表示不支持被動模式:
??
??驗證是否支持主動模式:
# 打開cmd,使用telnet連接到21端口
telnet 10.255.0.162 21
# 使用USER、PASS命令登錄
USER ftp_user
PASS 123456
# 使用PORT命令隨便發送一個端口,告訴Ftp表示一個主動連接
PORT 58899
??如果顯示的結果是類似下面的樣子,說明支持主動模式。
??
?
??你可能會說,這不是報錯了么,其實這個是因為我們發給Ftp服務端的端口未打開導致的,如果不支持主動模式的話,會返回550代碼,而不是500代碼:
??
??總結
??Ftp的主動模式和被動模式其實就是區分數據傳輸連接的發起方,如果是由Ftp服務端發起,那么就是主動模式,如果是由客戶端發起,那么就是被動模式。
??如果你對主動模式和被動模式猶豫不決,那么可以優先選擇被動模式,或者兩個一起用。

浙公網安備 33010602011771號