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