FTP的主动模式和被动模式
1.1 PORT(主動模式)
在主動模式下,FTP客戶端隨機開啟一個大于1024的端口N向服務器的21號端口發起連接,發送FTP用戶名和密碼,然后開放N+1號端口進行監聽,并向服務器發出PORT N+1命令,告訴服務端客戶端采用主動模式并開放了端口。FTP服務器接收到PORT命令后,會用其本地的FTP數據端口(通常是20)來連接客戶端指定的端口N+1,進行數據傳輸。
1.2 PASV(被動模式)
在被動模式下,FTP客戶端隨機開啟一個大于1024的端口N向服務器的21號端口發起連接,發送用戶名和密碼進行登陸,同時會開啟N+1端口。然后向服務器發送PASV命令,通知服務器自己處于被動模式。服務器收到命令后,會開放一個大于1024的端口P(端口P的范圍是可以設置的,后面會說到這個是很重要的)進行監聽,然后用PORT P命令通知客戶端,自己的數據端口是P。客戶端收到命令后,會通過N+1號端口連接服務器的端口P,然后在兩個端口之間進行數據傳輸。
1.3 被動模式抓包分析
ftp客戶端連接服務器端要做SSL雙向認證,所以會看到客戶端使用59739端口來連接ftp服務端的2121端口,綠色的框框部分內容應該是服務端把服務端隨機起的端口號40006加密發送給客戶端,讓客戶端傳輸文件時,使用40006端口。
可以發現,客戶端發送文件給服務端使用的端口號正是56740(等于59739+1)。發送文件使用的新的端口號,所以不再走TSL加密協議了。因為,登陸認證過程,只要登陸成功,就代表客戶端和服務端是相互信任的了。這時候,是允許開啟新的端口號來傳輸文件。
最后,有兩行黑色的[Tcp Retransmission]數據包,這是兩次重傳信息。是因為,ftp服務器是安裝在內網的,沒有配置服務端傳輸文件的端口P的范圍,而且,在防火墻上沒有映射59740這個端口到外網去,所以會導致ftp客戶端使用59740端口傳輸數據包到ftp服務端會失敗的。Tcp協議重傳三次,不成功就失敗。
1.4 兩種模式的比較
主動模式和被動模式的不同簡單概述為: 主動模式傳送數據時是“服務器”連接到“客戶端”的端口(客戶端開啟數據端口);被動模式傳送數據是“客戶端”連接到“服務器”的端口(服務端開啟數據端口)。
主動模式需要客戶端必須開放端口給FTP服務端,很多客戶端都是在防火墻內,開放端口給FTP服務器訪問比較困難。
被動模式只需要服務器端開放端口給客戶端連接就行了,如果服務端在防火墻內,也需要做端口映射才行。
1.5 被動模式入的坑
我們系統里FTP使用的是被動模式,而且服務是安裝在小網內的,與大網通信,要做IP和端口映射。當時沒收手動配置FTP服務端數據傳輸的端口范圍,在防火墻上只是做了這么一段的30000-30010的端口映射。導致客服端(一種設備)上傳的時候只有一次上傳成功了,這是因為服務端隨機開放的一個端口恰好在30000-30010范圍之內。其他任何時候都上傳不成功。抓包看,只有客服端連接服務端數據包。
所以,FTP服務安裝在小網中(防火墻內部),使用被動模式的話,且客戶端位于防火墻外部,要限制FTP服務起的數據傳輸端口范圍,而且要把這些端口要映射出去。
1.6 如何選擇
如果工作中一定要使用FTP服務器,在今天的互聯網環境里面,使用FTP被動模式進行連接傳輸就可以了。如果只是想知道答案的朋友,看到這里就可以了。對技術和原理感興趣的朋友,請繼續往下看。
1.6.1 主動模式和被動模式區別
a. 主動模式傳送數據時是“服務器”連接到“客戶端”的端口;被動模式傳送數據是“客戶端”連接到“服務器”的端口。
b. 主動模式需要客戶端必須開放端口給服務器,很多客戶端都是在防火墻內,開放端口給FTP服務器訪問比較困難;被動模式只需要服務器端開放端口給客戶端連接就行了。
需要注意的是,被動模式和主動模式的登錄過程,都是FTP客戶端去連接FTP服務器。
1.6.2 為什么絕大部分互聯網應用都是被動模式?
因為大部分客戶端都是在路由器后面,沒有獨立的公網IP地址,服務器想要主動連接客戶端,難度太大,在現在真實的互聯網環境里面幾乎是不可能完成的任務。
在 FTP服務器部署的時候,其默認采用的是主動操作模式。如果企業FTP服務器的用戶都是在內部網絡中的,即不用像外部網絡的用戶提供FTP連接的需求,那么采用這個默認操作方式就可以了。但是如果一些出差在外的員工或者員工在家庭辦公時也需要訪問企業內部的FTP服務器,而此時出于安全的考慮或者公網IP地址數量的限制,企業往往會把FTP服務器部署在防火墻或者NAT服務器的后面,此時這個主動操作模式就不行了。
總之,在FTP服務器部署的時候考慮是要采用主動操作模式還是被動操作模式,只需要記住一個原則,即如果把FTP服務器部署在防火墻或者NAT服務器的背后,則采用主動操作模式的客戶端只能夠建立命令連接而無法進行文件傳輸。如果部署完FTP服務器后,系統管理員發現用戶可以連接上FTP服務器,可以查看目錄下的文件,但是卻無法下載或者上傳文件,如果排除權限方面的限制外,那么很有可能就是這個操作模式選擇錯誤。系統管理員告訴用戶選擇合適的操作模式, 基本上就可以解決文件傳輸的問題了。
參考:FTP的主動模式和被動模式工作原理及抓包分析
總結
以上是生活随笔為你收集整理的FTP的主动模式和被动模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言操作符详解
- 下一篇: AES加密,由S盒计算逆S盒程序