FTP是我們?nèi)粘=ㄕ局惺褂妙l率很高的一款軟件了,我們在使用FTP的時候經(jīng)常會遇到Socket ERROR,那么這種錯誤我們應該如何解決?
首先我們來了解一下FTP的兩種模式(主動模式和被動模式):
主動模式:
FTP客戶端使用N(N>1023)端口連接到FTP服務器的21端口,發(fā)送用戶名和密碼登錄,登錄成功后要list列表或者讀取數(shù)據(jù)時,客戶端開放N+1端口,發(fā)送 PORT命令到FTP服務器,告訴服務器客戶端采用主動模式并開放端口;FTP服務器收到PORT主動模式命令和端口號后,通過服務器的20端口和客戶端開放的端口連接,發(fā)送數(shù)據(jù).
被動模式:
FTP客戶端使用N(N>1023)連接FTP服務器的21端口,發(fā)送用戶名和密碼登錄,登錄成功后要list列表或者讀取數(shù)據(jù)時,發(fā)送PASV命令到FTP服務器, 服務器在本地開放一個端口(1024以上),然后把開放的端口告訴客戶端, 客戶端再通過N+1端口連接到服務器開放的端口進行數(shù)據(jù)傳輸
當我們連接FTP時,無法顯示目錄列表,這個時候又可能就是模式選擇的問題,相同的軟件,版本不同,設置方法也略有不同,因此需要根據(jù)實際情況進行設置。
區(qū)別對比
二者的區(qū)別主要在于建立數(shù)據(jù)傳輸連接的時候,主模式的連接發(fā)起方為服務器端,使用20號端口連接客戶端的N+1端口建立數(shù)據(jù)連接;被動模式連接發(fā)起方為客戶端,客戶端使用端口號+1去連接服務器的某一高位端口;
網(wǎng)絡設置區(qū)別
主動模式下,客戶端的FTP軟件設置主動模式開放的端口段,在客戶端的防火墻開放對應的端口段即可。
有一種常見問題是:服務器端只開放了21端口, 客戶端機器沒開放任何端口。FTP客戶端連接采用的被動模式,結(jié)果客戶端能登錄成功,但是無法LIST列表和讀取數(shù)據(jù)。很明顯,是因為服務器端沒開放被動模式下的隨機端口導致。
由于被動模式下,服務器端開放的端口隨機,但是防火墻要不能全部開放,解決的方案是,在ftp服務器配置被動模式下開放部分隨機高位端口(范圍在ftp服務器軟件設置,可以設置任意1024上的端口段),然后在防火墻設置規(guī)則,開放服務器端相應的端口號即可。
我們專注高端建站,小程序開發(fā)、軟件系統(tǒng)定制開發(fā)、BUG修復、物聯(lián)網(wǎng)開發(fā)、各類API接口對接開發(fā)等。十余年開發(fā)經(jīng)驗,每一個項目承諾做到滿意為止,多一次對比,一定讓您多一份收獲!