FTP基礎知識 FTP port(主動模式) pasv(被動模式) 及如何映射FTP

您是否正準備搭建本身的FTP網站?您知道FTP協議的工做機制嗎?您知道什麼是PORT方式?什麼是PASV方式嗎?若是您不知道,或沒有徹底掌握,請您坐下來,花一點點時間,細心讀完這篇文章。所謂磨刀不誤砍柴功,掌握這些基礎知識,會令您事半功倍。不然,極可能折騰幾天,最後一事無成。

FTP基礎知識

FTP是File Transfer Protocol(文件傳輸協議)的縮寫,用來在兩臺計算機之間互相傳送文件。相比於HTTP,FTP協議要複雜得多。複雜的緣由,是由於FTP協議要用到兩個TCP鏈接,一個是命令鏈路,用來在FTP客戶端與服務器之間傳遞命令;另外一個是數據鏈路,用來上傳或下載數據。

FTP協議有兩種工做方式:PORT方式和PASV方式,中文意思爲主動式和被動式。

PORT(主動)方式的鏈接過程是:客戶端向服務器的FTP端口(默認是21)發送鏈接請求,服務器接受鏈接,創建一條命令鏈路。當須要傳送數據時,客戶端在命令鏈路上用PORT命令告訴服務器:「我打開了XXXX端口,你過來鏈接我」。因而服務器從20端口向客戶端的XXXX端口發送鏈接請求,創建一條數據鏈路來傳送數據。

PASV(被動)方式的鏈接過程是:客戶端向服務器的FTP端口(默認是21)發送鏈接請求,服務器接受鏈接,創建一條命令鏈路。當須要傳送數據時,服務器在命令鏈路上用PASV命令告訴客戶端:「我打開了XXXX端口,你過來鏈接我」。因而客戶端向服務器的XXXX端口發送鏈接請求,創建一條數據鏈路來傳送數據。

從上面能夠看出,兩種方式的命令鏈路鏈接方法是同樣的,而數據鏈路的創建方法就徹底不一樣。而FTP的複雜性就在於此。


FTP服務器端的注意事項

1、FTP服務器是公網IP,用公網動態域名;或是內網IP,在網關上開端口映射或用內網專業版TrueHost

一、服務器若是安裝了防火牆,請記住要在防火牆上打開FTP端口(默認是21)。

二、全部FTP服務器軟件都支持PORT方式。至於PASV方式,大部分FTP服務器軟件都支持。支持PASV方式的FTP服務器軟件,也能夠設置爲只工做在PORT方式上。

三、爲了PASV方式能正常工做,須要在FTP服務器軟件上爲PASV方式指定可用的端口範圍。此外,還要在服務器的防火牆上打開這些端口。當客戶端以PASV方式鏈接服務器的時候,服務器就會在這個端口範圍裏挑選一個端口出來,給客戶端鏈接。


FTP客戶端的注意事項服務器

 


請注意:選擇用PASV方式仍是PORT方式登陸FTP服務器,選擇權在FTP客戶端,而不是在FTP服務器。

1、客戶端只有內網IP,沒有公網IP

從上面的FTP基礎知識可知,若是用PORT方式,由於客戶端沒有公網IP,FTP將沒法鏈接客戶端創建數據鏈路。所以,在這種狀況下,客戶端必需要用PASV方式,才能鏈接FTP服務器。大部分FTP站長髮現本身的服務器有人能登陸上,有人登陸不上,典型的錯誤緣由就是由於客戶端沒有公網IP,但用了IE做爲FTP客戶端來登陸(IE默認使用PORT方式)。

做爲FTP站長,有必要掌握FTP的基礎知識,而後指導您的朋友如何正確登陸您的FTP。

2、客戶端有公網IP,但安裝了防火牆

若是用PASV方式登陸FTP服務器,由於創建數據鏈路的時候,是由客戶端向服務器發送鏈接請求,沒有問題。反過來,若是用PORT方式登陸FTP服務器,由於創建數據鏈路的時候,是由服務器向客戶端發送鏈接請求,此時鏈接請求會被防火牆攔截。若是要用PORT方式登陸FTP服務器,請在防火牆上打開1024以上的高端端口。

4、常見的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:
工具 -> 選項 -> 代理服務器 -> 直接鏈接 -> 編輯 -> 「PASV模式」

FlashFXP:
選項 -> 參數選擇 -> 代理/防火牆/標識 -> 「使用被動模式」

站點管理 -> 對應站點 -> 選項 -> 「使用被動模式」

快速鏈接 -> 切換 -> 「使用被動模式」測試

LeechFTP:
Option -> Firewall -> Do not Use

5、請儘可能不要用IE做爲FTP客戶端

IE只是個很粗糙的FTP客戶端工具。首先,IE6.0如下的版本不支持PASV方式;其次,IE在登陸FTP的時候,看不到登陸信息。在登陸出錯的時候,沒法找到錯誤的緣由。在測試本身的FTP網站的時候,強烈建議不要使用IE。


高級話題

1、爲何沒有公網IP,也能使用PORT方式登陸FTP?

NAT網關的工做方式是在TCP/IP數據包的包頭裏找局域網的源地址和源端口,替換成網關的地址和端口。對數據包裏的內容,是不會改變的。而使用PORT方式登陸FTP的時候,IP地址與端口信息是在數據包裏面的,而不是在包頭。所以,沒有公網IP,使用PORT方式是沒法從internet上的ftp服務器下載數據的。 

可是,極少數的NAT網關也支持PORT方式。這些NAT網關連數據包裏面的內容都掃描,掃描到PORT指令後會替換PORT方式的IP和端口。在這種NAT網關下面,用PORT方式就沒問題了。不過,這些網關也只掃描21端口的數據包,若是FTP服務器不是用默認的21端口,也沒法使用PORT方式。



內網用端口映射方式建FTP的注意事項(原創)

根據上面的FTP原理,在只映射一個端口的狀況下,只能要求來訪者使用PORT方式來訪問你的FTP服務器,但這樣的話就限制了內網用戶。
而若是映射不少個端口,就可使用PASV方式了但還要從FTP服務器上做一些設置網站

 

好比,從網關上映射21端口和5000-5020端口到你的計算機21端口和5000-5020端口,在Serv-U的Local Server -> Settings -> Advanced -> PASV port range裏,填入給PASV模式使用的端口範圍5000-5020,而後在你創建的域--設置--高級-容許被動模式數據傳輸,使用IP 裏面填入你的網關在公網的IP地址。

還有,用端口映射方式建FTP是看不到來訪者的IP地址,只能看到網關在內網中的IP地址。(應該是這樣,但也不必定,畢竟我沒試過)這樣就不能限制一個IP的鏈接數了。spa

相關文章
相關標籤/搜索