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

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