ftp客戶端 無法上傳

在 windows server 2008 r2 上搭建了ftp服務器,起初用mfc編寫的客戶端程序可以正常上傳數據,後來服務器系統更新,數據就無法繼續上傳了,最後確定是防火牆的原因。

這個問題干擾了我很久。首先了解一下主動模式和被動模式:


FTP兩種工作模式:主動模式(Active FTP)和被動模式(Passive FTP)

    在主動模式下,FTP客戶端隨機開啓一個大於1024的端口N向服務器的21號端口發起連接,然後開放N+1號端口進行監聽,並向服務器發出PORT N+1命令。服務器接收到命令後,會用其本地的FTP數據端口(通常是20)來連接客戶端指定的端口N+1,進行數據傳輸。 
    在被動模式下,FTP庫戶端隨機開啓一個大於1024的端口N向服務器的21號端口發起連接,同時會開啓N+1號端口。然後向服務器發送PASV命令,通 知服務器自己處於被動模式。服務器收到命令後,會開放一個大於1024的端口P進行監聽,然後用PORT P命令通知客戶端,自己的數據端口是P。客戶端收到命令後,會通過N+1號端口連接服務器的端口P,然後在兩個端口之間進行數據傳輸。 
    總的來說,主動模式的FTP是指服務器主動連接客戶端的數據端口,被動模式的FTP是指服務器被動地等待客戶端連接自己的數據端口。 
    被動模式的FTP通常用在處於防火牆之後的FTP客戶訪問外界FTp服務器的情況,因爲在這種情況下,防火牆通常配置爲不允許外界訪問防火牆之後主機,而 只允許由防火牆之後的主機發起的連接請求通過。因此,在這種情況下不能使用主動模式的FTP傳輸,而被動模式的FTP可以良好的工作。(PASV mode is useful for certain types of firewallsthat do not allow FTP servers to initiate data connections back to theconnected client.)


因此在連接ftp時設置爲PASV模式就可以避免服務器防火牆的影響。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章