天天看點

FTP主動模式和被動模式的比較

    FTP是僅基于TCP的服務,不支援UDP。與衆不同的是FTP使用2個端口,一個資料端口和一個指令端口(也可叫做控制端口)。通常來說這兩個端口是21(指令端口)和20(資料端口)。但FTP工作方式的不同,資料端口并不總是20。這就是主動與被動FTP的最大不同之處。 

(一)主動FTP  

        主動方式的FTP是這樣的:用戶端從一個任意的非特權端口N(N>1024)連接配接到FTP伺服器的指令端口,也就是21端口。然後用戶端開始監聽端口N+1,并發送FTP指令“port N+1”到FTP伺服器。接着伺服器會從它自己的資料端口(20)連接配接到用戶端指定的資料端口(N+1)。

    針對FTP伺服器前面的防火牆來說,必須允許以下通訊才能支援主動方式FTP:    

    1. 任何大于1024的端口到FTP伺服器的21端口。(用戶端初始化的連接配接)  

    2. FTP伺服器的21端口到大于1024的端口。 (伺服器響應用戶端的控制端口) 

    3. FTP伺服器的20端口到大于1024的端口。(伺服器端初始化資料連接配接到用戶端的資料端口)

    4. 大于1024端口到FTP伺服器的20端口(用戶端發送ACK響應到伺服器的資料端口) 

(二)被動FTP  

    為了解決伺服器發起到客戶的連接配接的問題,人們開發了一種不同的FTP連接配接方式。這就是所謂的被動方式,或者叫做PASV,當用戶端通知伺服器它處于被動模式時才啟用。

   在被動方式FTP中,指令連接配接和資料連接配接都由用戶端發起,這樣就可以解決從伺服器到用戶端的資料端口的入方向連接配接被防火牆過濾掉的問題。

   當開啟一個 FTP連接配接時,用戶端打開兩個任意的非特權本地端口(N > 1024和N+1)。第一個端口連接配接伺服器的21端口,但與主動方式的FTP不同,用戶端不會送出PORT指令并允許伺服器來回連它的資料端口,而是送出 PASV指令。這樣做的結果是伺服器會開啟一個任意的非特權端口(P > 1024),并發送PORT P指令給用戶端。然後用戶端發起從本地端口N+1到伺服器的端口P的連接配接用來傳送資料。  

    對于伺服器端的防火牆來說,必須允許下面的通訊才能支援被動方式的FTP:     

    1. 從任何大于1024的端口到伺服器的21端口(用戶端初始化的連接配接)  

    2. 伺服器的21端口到任何大于1024的端口(伺服器響應到用戶端的控制端口的連接配接) 

    3. 從任何大于1024端口到伺服器的大于1024端口(用戶端初始化資料連接配接到伺服器指定的任意端口)

    4. 伺服器的大于1024端口到遠端的大于1024的端口(伺服器發送ACK響應和資料到用戶端的資料端口)

     以上關于主動和被動FTP的解釋,可以簡單概括為以下兩點:

    1、主動FTP:  

            指令連接配接:用戶端 >1024端口 -> 伺服器 21端口  

            資料連接配接:用戶端 &gt;1024端口 <- 伺服器 20端口 

    2、被動FTP: 

            指令連接配接:用戶端 >1024端口 -&gt; 伺服器 21端口 

            資料連接配接:用戶端 &gt;1024端口 -&gt; 伺服器 &gt;1024端口