FTP主動模式與被動模式,及java FTPClient模式設定

來源:互聯網
上載者:User

標籤:指定   必須   運行   ssi   arc   arch   pac   client模式   library   

FTP的主動模式與被動模式

FTP伺服器使用20和21兩個網路連接埠與FTP用戶端進行通訊。 
FTP伺服器的21連接埠用於傳輸FTP的控制命令,20連接埠用於傳輸檔案資料。


FTP主動模式: 
  FTP用戶端向伺服器的FTP控制連接埠(預設是21)發送串連請求,伺服器接受串連,建立一條命令鏈路;當需要傳送資料時,用戶端在命令鏈路上用PORT的命令告訴伺服器我開放了某連接埠,你過來串連我。於是伺服器從20連接埠向用戶端的該連接埠發送串連請求,建立一條資料鏈路來傳送資料。在資料鏈路建立過程中是伺服器主動請求,所以稱為主動模式。

  當用戶端向服務端串連後,使用的是PORT模式,那麼用戶端B會發送一

條命令告訴服務端(用戶端B在本地開啟了一個連接埠N在等著你進行資料連線),當服務端收到這個Port命令後 就會向用戶端開啟的那個連接埠N進行串連,這種資料連線就產生。


FTP被動模式: 
  FTP用戶端向伺服器的FTP控制連接埠(預設21)發送串連請求,伺服器接受串連,建立一條命令鏈路;當需要傳送資料時,伺服器在命令鏈路上用PASV命令告訴用戶端,我開啟了某連接埠,你過來連我。於是用戶端向伺服器的該連接埠發送串連請求,建立一條資料鏈路來傳送資料。在資料鏈路建立的過程中是伺服器被動等待客戶機的請求,所以稱被動模式。
  由上面幾點可以看出,FTP伺服器的主動與被動模式是以FTP伺服器進行資料傳送串連的主動或被動為依據的。
  對於FTP伺服器與客戶機之間存在的網路防火牆,不論是伺服器側還是客戶機側的網 絡防火牆設定策略都要保證FTP伺服器和用戶端之間能夠正常建立命令鏈路和資料鏈路。

  當用戶端B向服務端串連後,使用的是PASV模式,服務端會發資訊給用戶端,這個資訊是(服務端在本地開啟了一個連接埠M,你現在去串連我吧),當用戶端收到這個資訊後,就可以向服務端的M連接埠進行串連,串連成功後,資料連線也建立了。

主動模式下: 
  客戶機 與 伺服器之間建立串連時,客戶機是大於1024的連接埠上,伺服器是 20 連接埠。
  客戶機的連接埠是大於1024的,而伺服器的連接埠是 21 連接埠接收請求,而是 20 連接埠給客戶機回應。
  允許FTP客戶機從大於1024的連接埠串連伺服器的21連接埠.
  允許FTP伺服器從21連接埠回應FTP客戶機中大於1024連接埠的網路連接.
  允許FTP伺服器從20連接埠主動串連FTP客戶機中大於1024的連接埠
  允許FTP客戶機從大於1024的連接埠回應來自FTP伺服器的20連接埠的網路連接.
被動模式下: 
  客戶機 與 伺服器之間建立串連都是在大於1024的連接埠上的。
  客戶機的連接埠是大於1024的,而伺服器的連接埠是 21 連接埠接收請求,而是 從大於1024 連接埠給客戶機回應。
  允許FTP客戶機從大於1024的連接埠串連伺服器的21連接埠.
  允許FTP伺服器從21連接埠回應FTP客戶機中大於1024連接埠的網路連接.
  允計FTP客戶機從大於1024的連接埠串連FTP伺服器的大於1024連接埠.
  允許FTP伺服器從大於1024的連接埠回應來自FTP客戶機大於1024連接埠的網路連接

client開啟大於1024(21吧)的X連接埠串連伺服器的21(命令連接埠),同時開啟X+1連接埠 
當21號連接埠串連成功後,client會發送PASV命令,通知伺服器自己處於被動模式,伺服器收到這個訊息後,就會開放一個大於1024的連接埠Y通知client,client接到通知後就會用X+1來串連伺服器的Y連接埠,簡單的說就是client主動串連伺服器 。

 

 

主動與被動FTP優缺點的簡要總結:  
  主動FTP對FTP伺服器的管理有利,但對用戶端的管理不利。因為FTP伺服器企圖與用戶端的高位隨機連接埠建立串連,而這個連接埠很有可能被用戶端的防火牆阻塞掉。 
  被動FTP對FTP用戶端的管理有利,但對伺服器端的管理不利。因為用戶端要與伺服器端建立兩個串連,其中一個連到一個高位隨機連接埠,而這個連接埠很有可能被伺服器端的防火牆阻塞掉。
   幸運的是,有折衷的辦法。既然FTP伺服器的管理員需要他們的伺服器有最多的客戶串連,那麼必須得支援被動FTP。我們可以通過為FTP伺服器指定一個有限的連接埠範圍來減小伺服器高位連接埠的暴露。這樣,不在這個範圍的任何連接埠會被伺服器的防火牆阻塞。雖然這沒有消除所有針對伺服器的危險,但它大大減少了危險。 

FTP主動與被動的好處和壞處: 
  在ISA(工業標準架構體系Industry Standard Architecture是IBM PC相容機上的一種匯流排 )的情況,如果採用被動模式,由於IIS是完全隨機的選擇一個連接埠,並告知客戶,然後客戶進行主動串連,這就意味著在ISA上,你要讓所有的連接埠都允許動態入站串連才行,這樣肯定不行,因為太危險了,等於開啟了所有的連接埠連。   
  如果採用主動模式(PORT Mode),IIS選擇好連接埠後,主動與客戶進行串連,這時候不需要像PASV模式那樣開啟所有的動態入站串連,而且正好相反,我們需要開啟所有的動態出站串連即可,安全性增加很多。而且由ISA的IP PACKET FILTER只對ISA本機起作用,不會造成區域網路內的客戶“放了羊”。

 

FTPclient在被動模式下,傳送檔案使用的是0連接埠,可以調用setActivePortRange設定主動模式時的連接埠範圍。

在windows下使用ftpclient時,需要處理windows下一個FTP主被動模式的缺陷,需要運行如下命令:

netsh advfirewall firewall add rule name=”FTP Service” action=allow service=ftpsvc protocol=TCP dir=in
netsh advfirewall set global StatefulFTP disable

https://technet.microsoft.com/zh-cn/library/dd421710(v=ws.10).aspx

 

 

3.java中,內網用被動模式 ,外網串連時用主動模式,伺服器相應改動(只用上線功能用被動模式去串連ftp報錯串連不上)

FTPClient ftpClient = new FTPClient();

ftpClient.connect(url, port);

ftpClient.enterLocalActiveMode();    //主動模式
// ftpClient.enterLocalPassiveMode(); 被動模式
ftpClient.setControlEncoding("UTF-8");
ftpClient.changeWorkingDirectory(path);

 

FTP主動模式與被動模式,及java FTPClient模式設定

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.