在主動模式下,FTP客戶端隨機打開壹個大於1024的端口N發起到服務器端口21的連接,然後打開端口N+1監聽,並向服務器發送端口N+1命令。服務器收到命令後,會用自己本地的FTP數據端口(壹般是20個)連接到客戶端指定的N+1端口進行數據傳輸。
在被動模式下,FTP庫用戶隨機打開壹個大於1024的端口N來發起到服務器端口21的連接,同時打開端口N+1。然後向服務器發送PASV命令,通知服務器它處於被動模式。服務器收到命令後會打開壹個大於1024的P口監聽,然後用P口命令通知客戶端其數據口為P,客戶端收到命令後會通過N+1口連接到服務器的P口,然後在兩個口之間傳輸數據。
壹般來說,主動模式的FTP是指服務器主動連接到客戶端的數據端口,被動模式的FTP是指服務器被動等待客戶端連接到自己的數據端口。
被動模式下的FTP通常在防火墻後的FTP客戶端訪問外部FTp服務器時使用,因為在這種情況下,防火墻通常被配置為不允許外界訪問防火墻後的主機,而只允許防火墻後的主機發起的連接請求通過。所以在這種情況下,主動模式的FTP傳輸無法使用,而被動模式的FTP可以很好的工作。
很多人誤以為用WINDOWS組件IIS搭建的FTP服務器沒有實用價值,只能做壹些測試和學習。主要原因是在FTP服務的端口和PASV連接模式下很難設置防火墻。對於端口模式,客戶端無法在這種環境下運行,因為FTP服務必須向FTP客戶端發送新的連接請求,防火墻會將這些連接檢測為未經請求的連接嘗試並斷開連接。防火墻管理員可能也不想在PASV模式下使用FTP服務器,因為FTP服務可以開放任何短端口號。如果防火墻配置允許未經請求的連接完全訪問所有臨時端口,則可能不安全。
從實用的角度來看,建立壹個默認短壽命端口範圍有限的PASV FTP服務方案應該是壹個更好的選擇。這裏通過壹個例子,說明了在Windows 2003中如何使用IIS組件來設置PASV FTP服務。
1在端口模式下建立FTP服務。
1.1安裝文件傳輸協議(FTP)服務組件。
安裝步驟:
控制面板->添加或刪除程序->添加或刪除windows組件->應用程序服務器-> Internet信息服務(IIS)->文件傳輸協議(FTP)服務
勾選文件傳輸協議(FTP)服務復選框,插入windows 2003安裝盤或選擇windows 2003安裝路徑,直到安裝完成。
1.2FTP主目錄和用戶權限的配置
主目錄:D:/soft/ftpup
具有讀寫權限但不允許其他用戶訪問的用戶:
ww1用戶對ww1目錄具有讀寫權限,該目錄位於:d:/soft/FTP up/local user/ww 1。
XX1用戶擁有對XX1目錄的讀寫權限,該目錄位於:d:/soft/FTP up/local user/xx 1。
允許匿名用戶只讀訪問:
每個人都對位於以下位置的公共目錄具有只讀訪問權限:d:/soft/ftup/localuser/public。
創建ww1和xx1用戶並設置密碼。
建立相應的目錄,設置相應的權限。
1.3創建FTP站點
通過"控制面板->;管理工具-> Internet信息服務(IIS)管理器->;Internet信息服務->本地計算機-> FTP站點選項卡,右鍵單擊FTP站點->新建-> FTP站點,進入FTP站點建立向導:站點描述-> IP地址和端口設置->隔離用戶-> FTP站點主目錄(D:/soft/ftpup)直到向導結束。
右鍵單擊您剛剛建立的FTP站點,並在安全帳戶選項卡上選擇允許匿名用戶連接。至此,壹個端口模式的FTP站點已經建立。
您可以關閉防火墻並測試它是否滿足客戶端的要求。
2將FTP站點設置為PASV模式。
2.1支持直接編輯元數據庫。
打開IIS Microsoft管理控制臺(MMC):控制面板->管理工具-> Internet信息服務(IIS)管理器->;互聯網信息服務->本地計算機
右鍵單擊本地計算機節點,選擇屬性,然後選中啟用元數據庫直接編輯復選框。
2.2修改端口號1的方法通過ADSUTIL腳本配置PassivePortRange。
運行cmd.exe程序進入命令行模式,並輸入以下命令:
c:/Inetpub/admin scripts/adsutil . VBS set/MSFTPSVC/passive portrange " 5500-5550 "
這樣,FTP服務器上的默認TCP臨時端口範圍被限制為5500-5550。如果同時有多個連接,可以適當調整。
使用以下命令查看PassivePortRange:
c:/inetpub/admin scripts/adsutil . VBS get/msftpsvc/passive portrange方法2通過修改配置文件打開以下文件:1 . c:/Windows/System32/inetsrv/metabase . XML搜索MaxConnections該字段在MaxConnections下添加壹行新的被動模式配置信息。修改後的配置文件是log type = " 1 " msdos dir output = " true " max clients message = " " max。connections = " 100000 " passive portrange = " 5500-5550 "
3.3.windows 2003中防火墻的設置
3.1打開FTP控制端口TCP 21(如果更改端口號,需要在這裏做相應的更改)。
在命令行中,輸入:
NETSH防火墻添加端口開放TCP 21 FTPPort21
3.2打開PassivePortRange 5500-5550的TCP端口。
創建並運行以下批處理文件(例如:ftpport.bat):
回顯打開防火墻端口5500-5550
對於/L %%I IN (5500,1,5550)NETSH防火墻是否添加端口開放TCP %%I FTPPort%%I
IIS重置/重啟
回聲完畢
中止
至此,整個服務已經設置完畢,可以在啟用防火墻的情況下進行測試了。