Posted on 2015-02-07 13:06
瘋狂 閱讀(3709)
評論(1) 編輯 收藏 所屬分類:
網(wǎng)絡(luò)通訊
我們在上傳文件或圖片到主機(jī)的時(shí)候,都不可避免的用到FTP軟件這個(gè)上傳工具。在上傳的時(shí)候,有兩種傳輸方式大家一定不會(huì)不熟悉,那就是主動(dòng)模式和被動(dòng)模式,他們的英文簡寫是Port和Pasv。常常有客戶無法上傳的時(shí)候,我們都會(huì)告訴他們,把FTP軟件被動(dòng)模式前面的鉤去掉再試試。這說明,F(xiàn)TP軟件默認(rèn)是使用被動(dòng)模式的,這種傳輸模式較先進(jìn)一些。而有些客戶無法在這種模式下上傳的原因,往往是由于他們電腦中安裝了防火墻、殺毒軟件或者他們電腦所在的局域網(wǎng)做了特殊限制造成。

首先我們要知道,我們在使用FTP上傳、刪除、修改文件的時(shí)候其實(shí)要經(jīng)過兩個(gè)過程。一個(gè)是命令連接,一個(gè)是數(shù)據(jù)傳輸。命令連接的過程是我們電腦->服務(wù)器,通常是我們電腦中一個(gè)隨機(jī)的大于1024的端口->服務(wù)器的21端口。我們熟知的FTP的21端口就是建議命令連接時(shí)所必需的。對于這主動(dòng)和被動(dòng)這兩種上傳模式而言,命令連接的過程是完全相同的,其區(qū)別就在數(shù)據(jù)傳輸過程中。主動(dòng)模式下,當(dāng)需要傳送數(shù)據(jù)時(shí),客戶端在命令連接上用PORT命令告訴服務(wù)器:“我打開了XXXX端口(通常是一個(gè)隨機(jī)的大于1024的端口),你過來連接我”。于是服務(wù)器從20端口向客戶端的這個(gè)端口發(fā)送連接請求,建立一條數(shù)據(jù)連接來傳送數(shù)據(jù),這就是服務(wù)器->客戶電腦的過程。而在被動(dòng)模式下,服務(wù)器在命令連接上用PASV命令告訴客戶端:“我打開了XXXX端口(通常是在FTP服務(wù)端設(shè)置的一個(gè)高位端口范圍),你過來連接我”。于是客戶端向服務(wù)器的這個(gè)端口范圍發(fā)送連接請求,建立一條數(shù)據(jù)連接來傳送數(shù)據(jù)。
一句話,主動(dòng)模式的FTP是指服務(wù)器主動(dòng)連接客戶端的數(shù)據(jù)端口,被動(dòng)模式的FTP是指服務(wù)器被動(dòng)地等待客戶端連接自己的數(shù)據(jù)端口。故通過防火墻對高位端口的阻塞,會(huì)造成主動(dòng)模式受限,被動(dòng)模式比較先進(jìn)。另外通過設(shè)置被動(dòng)模式的端口范圍,只開放一定的端口對外傳輸數(shù)據(jù),也大大減少了服務(wù)器安全性暴露的風(fēng)險(xiǎn)。
那么,在哪里設(shè)置被動(dòng)模式的端口范圍呢。Windows環(huán)境下的IIS FTP的設(shè)置方法是:打開C:\WINDOWS\system32\inetsrv\MetaBase.xml,當(dāng)然首先要停止IIS Admin Service服務(wù)。然后編輯這個(gè)文件里面<IIsFtpService>區(qū)塊下的PassivePortRange,比如設(shè)置成PassivePortRange="50030-50039",這就指定了10個(gè)端口來傳輸數(shù)據(jù)。而Linux環(huán)境下的ProFTP的設(shè)置方法是:打開proftp的配置文件,命令是vi /etc/proftpd.conf,然后在<Global>區(qū)塊里面添加PassivePorts 50030 50039這樣的一段文字,也和上面IIS中的端口設(shè)置是一樣的功能。
最后在說下這兩種模式的優(yōu)缺點(diǎn)。主動(dòng)模式對FTP服務(wù)器的管理有利,但對客戶端的管理不利。因?yàn)镕TP服務(wù)器企圖與客戶端的高位隨機(jī)端口建立連接,而這個(gè)端口很有可能被客戶端的防火墻阻塞掉。被動(dòng)模式對FTP客戶端的管理有利,但對服務(wù)器端的管理不利。因?yàn)榭蛻舳艘c服務(wù)器端建立兩個(gè)連接,其中一個(gè)連到一個(gè)高位隨機(jī)端口,而這個(gè)端口很有可能被服務(wù)器端的防火墻阻塞掉。比較明智的方法是,同時(shí)做好服務(wù)器和客戶電腦的安全設(shè)置,盡量不要開防火墻,就能比較順利的通過FTP上傳和管理我們的文件。