天天看點

關于FTP的主動模式和被動模式的區分

轉自百度文庫。

什麼叫做PASV mode(被動模式傳送)?他是如何工作的?

FTP的連接配接一般是有兩個連接配接的,一個是客戶程和伺服器傳輸指令的,另一個是資料傳送的連接配接。FTP服務程式一般會支援兩種不同的模式,一種是Port模式,一種是Passive模式(Pasv Mode),我先說說這兩種不同模式連接配接方式的分别。

先假設用戶端為C,服務端為S.

Port模式:

當用戶端C向服務端S連接配接後,使用的是Port模式,那麼用戶端C會發送一條指令告訴服務端S(用戶端C在本地打開了一個端口N在等着你進行資料連接配接),當服務端S收到這個Port指令後 就會向用戶端打開的那個端口N進行連接配接,這種資料連接配接就生成了。

Pasv模式:

當用戶端C向服務端S連接配接後,服務端S會發資訊給用戶端C,這個資訊是(服務端S在本地打開了一個端口M,你現在去連接配接我吧),當用戶端C收到這個資訊後,就可以向服務端S的M端口進行連接配接,連接配接成功後,資料連接配接也建立了。

從上面的解釋中,大家可以看到兩種模式主要的不同是資料連接配接建立的不同,對于Port模式,是用戶端C在本地打開一個端口等服務端S去連接配接建立資料連接配接;而Pasv模式就是服務端S打開一個端口等待用戶端C去建立一個資料連接配接。

我需要把傳送模式設定成PASV mode嗎?

如果您連接配接到INTERNET的方式如下圖,你需要設定成為PASV mode模式傳送

      從上圖中我們可以看出,路由上有兩個ip一個是内網ip(也就是你的網關位址)另外一個是外網IP,你所有LAN中的計算機都是共享這個218.63.1.5通路INTERNET的(中間通過了192.168.1.1這個網關),讓我們來看一個連接配接的詳細過程,以便您更進一步了解為什麼需要設定成為PASV mode 傳送:

      當您通過下載下傳工具或使用浏覽器下載下傳影片的時候就開始連接配接FTP伺服器, 當FTP服務收到你的連接配接請求後發送應答資訊給客戶并開始等待使用者的認證資訊,-->認證通過後開始建立資料連接配接 如果你不是設定成為pasv模式,那麼客戶段(下載下傳工具)會在本地計算機開一個資料端口,然後發送一條“指令”給FTP服務段,(我已打開了n端口你現在可以連接配接我),那麼FTP伺服器段就開始連接配接你ip位址的N端口,(但是連接配接是失敗的) 因為你是通過192.168.1.1 這個網關(你的路由裝置)通路internet的ftp服務段他實際上是同你的外網位址為218.63.1.5的路由裝置連接配接,根本就連接配接不上你下載下傳工具中打開的端口,例如你使用的是 192.168.1.2 這個客戶機,FTP服務段此時無法同你計算機(192.168.1.2)監聽端口N連接配接上,是以此時你會看到伺服器回報的錯誤資訊,提示你192.168.1.2打開的端口無法連接配接之類的, 資訊此時你就需要把傳送模式設定成為PASV模式,而如果你使用的是PASV模式那麼當你ftp通過認證後,客戶段首先向伺服器發送一條PASV指令,服務段接受到指令後打開一個端口并告訴客戶段“我已打開了一個端口,你此時可以來連接配接了" 客戶段(下載下傳工具)接受到資訊後,就去連接配接服務段已經打開了的端口,進而完成資料連接配接,所有ftp下載下傳的資料流都将通過這個端口傳送

###############################

    一次完整的FTP會話,包含有兩個連接配接,一個稱之為指令通道,一個稱之為資料通道。指令通道用來傳遞一些"指令"和回報,包括使用者名密碼登陸,而且衆所周知是明文資料通道用來傳遞實際資料----列目錄、檔案傳輸,一旦需要列目錄或檔案傳輸,資料通道就會被建立起來,這裡分兩種方式,一是PORT二是PASV。

  你會在網際網路上找到許多FTP伺服器,有的要麼隻支援PORT,有的要麼隻支援PASV,有的是因為考慮安全因素,有的是因為條件限制等等。我想把我的FTP做成PORT和PASV方式都能支援的,這樣不會使用戶端在連接配接上受到困擾,特别是一些新手,對于PORT和PASV的定義,比較容易了解的解釋是針對FTP服務端而言的:

 PORT是主動模式,在建立資料通道時,服務端去連接配接别人;

 PASV是被動模式,在建立資料通道時,服務端被别人連接配接;