前言
FTP這個簡單服務(wù)竟然還區(qū)分主動和被動。我第一次接觸到它,是在一次測試環(huán)境聯(lián)調(diào)排查問題時,發(fā)現(xiàn)了網(wǎng)絡(luò)通信異常,最后查資料才發(fā)現(xiàn)了FTP的主動和被動模式。
結(jié)論
先來上個簡單的結(jié)論。
主動模式(PORT):客戶端連FTP的默認(rèn)21端口,先驗證用戶名密碼,然后服務(wù)器會開放20端口,再去主動連客戶端,連上后進(jìn)行數(shù)據(jù)傳輸。
被動模式(PASV):客戶端連FTP的默認(rèn)21端口,先驗證用戶名密碼,然后服務(wù)器會開放一個隨機(jī)端口(大于1024)告訴客戶端,等著客戶端來連自己,連上后進(jìn)行數(shù)據(jù)傳輸。
主動模式
FTP客戶端使用隨機(jī)端口N(大于1024)連接到FTP服務(wù)器的21端口,發(fā)送用戶名和密碼登錄,登錄成功后要list列表或者讀取數(shù)據(jù)時,客戶端開放N+1端口(如果端口已經(jīng)被占用,則會再加1),發(fā)送 PORT命令到FTP服務(wù)器,告訴服務(wù)器客戶端采用主動模式并開放端口。
FTP服務(wù)器收到PORT主動模式命令和端口號后,通過服務(wù)器的20端口和客戶端開放的端口連接,發(fā)送數(shù)據(jù)。
被動模式
FTP客戶端使用隨機(jī)端口N(大于1024)連接FTP服務(wù)器的21端口,發(fā)送用戶名和密碼登錄,登錄成功后要list列表或者讀取數(shù)據(jù)時,發(fā)送PASV命令到FTP服務(wù)器,服務(wù)器在本地開放一個端口(大于1024),然后把開放的端口告訴客戶端, 客戶端再通過N+1端口連接到服務(wù)器開放的端口進(jìn)行數(shù)據(jù)傳輸。
如何選擇
知道了主動模式與被動模式的原理后,我們再來總結(jié)一下二者的區(qū)別:
二者的區(qū)別主要在于建立數(shù)據(jù)傳輸連接的時候,主模式的連接發(fā)起方為服務(wù)器端,使用20號端口連接客戶端的N+1端口建立數(shù)據(jù)連接。
被動模式連接發(fā)起方為客戶端,客戶端使用端口號+1去連接服務(wù)器的某一高位端口。
所以,使用哪一種模式,取決于你的防火墻是如何設(shè)置的。
我們搭建完FTP服務(wù)器后,通常會在防火墻放行21和20端口,只要客戶端這邊沒有特殊的防火墻規(guī)則,那么使用主動模式一定沒問題。
反過來,如果客戶端這邊有很嚴(yán)格的防火墻規(guī)則,而服務(wù)端防火墻規(guī)則可控(需要放行21和一個隨機(jī)端口范圍),那么就使用被動模式。
有一種常見問題是:服務(wù)器端只開放了21端口, 客戶端機(jī)器沒開放任何端口。
FTP客戶端連接采用的被動模式,結(jié)果客戶端能登錄成功,但是無法LIST列表和讀取數(shù)據(jù)。
很明顯,是因為服務(wù)端沒開放被動模式下的隨機(jī)端口導(dǎo)致。
由于被動模式下,服務(wù)器端開放的端口隨機(jī),但是防火墻要不能全部開放,解決的方案是,在FTP服務(wù)器配置被動模式下開放部分隨機(jī)高位端口(范圍在FTP服務(wù)器軟件設(shè)置,可以設(shè)置任意1024以上的端口段),然后在防火墻設(shè)置規(guī)則,開放服務(wù)器端相應(yīng)的端口號即可。
審核編輯:劉清
-
服務(wù)器
+關(guān)注
關(guān)注
13文章
9793瀏覽量
87939 -
FTP
+關(guān)注
關(guān)注
0文章
115瀏覽量
41404
原文標(biāo)題:一文搞懂FTP的主動模式和被動模式
文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
NFC技術(shù)原理及應(yīng)用解析

評論