FTP 兩種模式 總結
com.enterprisedt.net.ftp.FTPClient FTP元件的使用:
ftp.getConnectMode()
ftp.isAutoPassiveIPSubstitution()預設>預設FTP伺服器需要被動連線
FTP連線方式分為兩種:ACTIVE & PASV
Port<ACTIVE> 模式的連線過程是:在開始一個FTP的連線時,客戶端程式首先會為自己隨機分配一個TCP埠,使用這個埠向伺服器的FTP埠(預設為21)發出連線請求,伺服器接受請求之後會建立一條控制鏈路,然後客戶程式發出port命令(通常格式為PORT A, A, A, A, I,I,其中A,A,A,A為客戶端IP地址,I,I為隨機的一個數據連線埠號)告訴伺服器它的資料通道的埠打開了。在傳送資料的時候,伺服器端通過自己的TCP20
---------------
所謂pasv模式也就是被動模式。隨著網路的不斷髮展,出現了防火牆。老的FTP協議在遇到防火牆的時候就束手無策了,這是因為20埠往往是防火牆的重點封堵物件,因此資料也就不能傳送出去了,於是pasv模式就誕生了。
Pasv 模式的連線過程是:在開始一個FTP的連線時,客戶端程式首先為自己隨機分配一個TCP埠,它使用這個埠向伺服器的FTP埠(預設為21)發出連線請求,伺服器接受請求之後會建立一條控制鏈路,然後客戶端程式發出PASV命令,代替原來PORT命令告訴伺服器它的資料連線埠,於是伺服器便為自己隨機分配一個數據通道埠,並將這個埠號告訴客戶端程式。當需要傳送資料時,客戶端程式會向伺服器的資料通道埠傳送連線請求,請求被接受之後便開始傳輸資料,資料鏈路通道也就打開了。
兩者之間有什麼不同:
不同之處是由於PORT這個方式需要在接上TCP 21埠後,伺服器通過自己的TCP 20來發出資料。並且需要建立一個新的連線來傳送檔案。而PORT的命令包含一些客戶端沒用的資料,所以有了PASv的出現。
而PASV模式就當然擁有PORT模式的優點及去掉一些PORT的缺點。PASV執行方式就是當伺服器接收到PASV命令時,就會自動從埠1024到5000中隨機選擇,而且還會使用同一個埠來傳送資料,不用建立新的連線。
,兩種方式的命令鏈路連線方法是一樣的,而資料鏈路的建立方法就完全不同。
很多防火牆的設定都是不允許接受外部連線的,所以active模式在很多時候內部網路的機器通過防火牆出去時候收到限制,因為伺服器的tcp20
所以遇到了防火牆的話或者怕配置麻煩採用pasv 但是真的對安全的需求很高則用active
很多防火牆在設定的時候都是不允許接受外部發起的連線的,所以許多位於防火牆後或內網的FTP伺服器不支援PASV模式,因為客戶端無法穿過防火牆開啟FTP伺服器的高階埠;而許多內網的客戶端不能用PORT模式登陸FTP伺服器,因為從伺服器的TCP20無法和內部網路的客戶端建立一個新的連線,造成無法工作。