標籤:
網址http://blog.csdn.net/nyunyuzhao/article/details/5734978,學習了。
FTP是File Transfer Protocol(檔案傳輸通訊協定)的縮寫,用來在兩台電腦之間互相傳送檔案。相比於HTTP,FTP協議要複雜得多。複雜的原因,是因為FTP協議要用到兩個TCP串連,一個是命令鏈路,用來在FTP用戶端與伺服器之間傳遞命令;另一個是資料鏈路,用來上傳或下載資料。
PORT & PASV
FTP協議有兩種工作方式:PORT方式和PASV方式,中文意思為主動式和被動式。
PORT(主動)方式的串連過程是:用戶端向伺服器的FTP連接埠(預設是21)發送串連請求,伺服器接受串連,建立一條命令鏈路。當需要傳送資料時,用戶端在命令鏈路上用PORT命令告訴伺服器:“我開啟了XXXX連接埠,你過來串連我”。於是伺服器從20連接埠向用戶端的XXXX連接埠發送串連請求,建立一條資料鏈路來傳送資料。
PASV(被動)方式的串連過程是:用戶端向伺服器的FTP連接埠(預設是21)發送串連請求,伺服器接受串連,建立一條命令鏈路。當需要傳送資料時,伺服器在命令鏈路上用PASV命令告訴用戶端:“我開啟了XXXX連接埠,你過來串連我”。於是用戶端向伺服器的XXXX連接埠發送串連請求,建立一條資料鏈路來傳送資料。
從上面可以看出,兩種方式的命令鏈路串連方法是一樣的,而資料鏈路的建立方法就完全不同。而FTP的複雜性就在於此。
使用FTP用戶端的注意事項
請注意:選擇用PASV方式還是PORT方式登入FTP伺服器,選擇權在FTP用戶端。
一、用戶端只有內網IP,沒有公網IP
從上面的FTP基礎知識可知,如果用PORT方式,因為用戶端沒有公網IP,FTP將無法串連用戶端建立資料鏈路。因此,在這種情況下,用戶端必須要用PASV方式,才能串連FTP伺服器。大部分人登入不上,典型的錯誤原因就是因為用戶端沒有公網IP,但用了IE作為FTP用戶端來登入(IE預設使用PORT方式)。
二、用戶端有公網IP,但安裝了防火牆
如果用PASV方式登入FTP伺服器,因為建立資料鏈路的時候,是由用戶端向伺服器發送串連請求,沒有問題。反過來,如果用PORT方式登入FTP伺服器,因為建立資料鏈路的時候,是由伺服器向用戶端發送串連請求,此時串連請求會被防火牆攔截。如果要用PORT方式登入FTP伺服器,請在防火牆上開啟1024以上的高端連接埠。
三、常見的FTP用戶端軟體PORT方式與PASV方式的切換方法。
大部分FTP用戶端預設使用PASV方式。IE預設使用PORT方式。
在大部分FTP用戶端的設定裡,常見到的字眼都是“PASV”或“被動模式”,極少見到“PORT”或“主動模式”等字眼。因為FTP的登入方式只有兩種:PORT和PASV,取消PASV方式,就意味著使用PORT方式。
IE:
工具 -> Internet選項 -> 進階 -> “使用被動FTP”(需要IE6.0以上才支援)。如果找不到這個選項,請看 圖片。
CuteFTP:
Edit -> Setting -> Connection -> Firewall -> “PASV Mode”
或File -> Site Manager,在左邊選中網站 -> Edit -> “Use PASV mode”
FlashGet:
工具 -> 選項 -> Proxy 伺服器 -> 直接連接 -> 編輯 -> “PASV模式”
FlashFXP:
選項 -> 參數選擇 -> 代理/防火牆/標識 -> “使用被動模式”
或網站管理 -> 對應網站 -> 選項 -> “使用被動模式”
或快速串連 -> 切換 -> “使用被動模式”
LeechFTP:
Option -> Firewall -> Do not Use
四、請盡量不要用IE作為FTP用戶端
IE只是個很粗糙的FTP用戶端工具。首先,IE6.0以下的版本不支援PASV方式;其次,IE在登入FTP的時候,看不到登入資訊。在登入出錯的時候,無法找到錯誤的原因。在測試的時候,強烈建議不要使用IE。
CentOS中vsftpd的主動和被動方式