標籤:指定 必須 運行 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模式設定