FTP協議就是文件傳輸控制協議。它可以使文件通過網絡從一台主機傳送到同一網絡的另一台主機上,而不受計算機類型和操作系統類型的限制。服務器、大型機,還是DOS操作系統、Windows操作系統、Linux操作系統,隻要雙方都支持FTP協議,就可以方便地傳送文件。
FTP分為兩種工作模式:主動模式(Active)與被動模式(Passive)
FTP客戶端首先會随機開啟一個大于1024的端口N(1032),并連接服務端的21号端口,然後開放M端口(與端口N沒直接聯系)進行監聽, 同時向服務器發出PORT 1033命令通知服務器自己的在接收數據時所使用的端口号。服務器在傳輸數據的時候,服務端通過自己的20端口去連接客戶端的端口M。當不需要傳輸時,此連接會自動斷開。如下圖(圖中端口号僅為示例):
FTP 被動模式(PASV)原理
FTP客戶端随機開啟一個大于1024的端口X向服務器的21端口發起連接,同時會開啟X 1端口。然後向服務器發送PASV命令,通知服務器自己處于被動模式。服務器收到命令後,會開放一個大于1024的端口Y進行監聽,然後在ACK回複中通知客戶端,自己的數據端口是Y。客戶端收到命令後,會通過X 1号端口連接服務器的端口Y,然後在兩個端口之間進行數據傳輸。這樣就能使防火牆知道用于數據連接的端口号,而使數據連接得以建立 。如下圖:
主動模式與被動模式區别
在主動模式中,傳輸數據時,服務器是主動連接客戶端的數據端口。但如果客戶端存在防火牆,那麼當服務端在連接客戶端數據端口的時,就有可能被防火牆阻擋。所以FTP主動模式在許多時候用于沒有防火牆隔離的内部網絡機器。一但有防火牆的存在,那麼一般就不會在使用主動模式,而是被動模式。因為在被模式中,命令連接與數據連接,都是由客戶端發起的,而防火牆一般不會對出去的數據包進行阻擋。
同時,FTP的主動模式(PORT)和被動模式(PASV)都隻ipv4,在針對IPV6擴展後就出現EPRT、EPSV相對應。
簡而言之,客戶端被防火牆保護時,盡量使用被動模式;服務端被保護時,盡量使用主動模式。但不管使用哪種模式,數據連接的目标端口都不固定,無法簡單配置基于端口的策略,當前防火牆一般通過解析FTP控制連接數據,臨時開啟數據連接訪問權限的方式實現(經測試确認H3C防火牆确實采用此方式支持FTP協議,且V5版本不支持EPSV、EPRT)。
EPSV:增強被動模式
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!