FTP 主動模式和被動模式

2021-09-23 19:09:05 字數 1713 閱讀 1636

ftp可以執行兩種模式:主動模式和被動模式。ftp的客戶端和伺服器之間有兩個通道,分別是命令通道和資料通道 ,這兩個通道存在的目的是把tcp連線分開。命令通道用來傳送命令和接收響應,資料通道專門用來傳輸檔案。這樣設計有乙個很大的好處就是:命令的傳送不用等待資料傳輸完成。
在主動模式中,客戶端從任意非特殊埠(n>1023)接入伺服器命令埠21,建立命令通道;然後客戶端會傳送n+1埠到伺服器資料埠20,客戶端開始監聽n+1埠,伺服器端用本地的20埠和客戶端傳送的n+1埠連線,建立資料通道

具體過程如下圖:

客戶端啟動乙個隨機埠1026與伺服器21埠建立命令通道,並傳送port 1027命令

伺服器在收到客戶端命令後傳送ack給客戶端命令埠1026

伺服器端用本地20埠連線客戶端的1027埠,建立資料通道

客戶端傳送ack給伺服器端

主動方式ftp的主要問題在於資料通道由伺服器端建立。ftp的客戶端並沒有實際建立乙個到伺服器資料埠的連線,它只是簡單的告訴伺服器自己監聽的埠號,伺服器再回來連線客戶端這個指定的埠。對於客戶端的防火牆來說,這是從外部系統建立到內部客戶端的連線,這是通常會被阻塞的。

在被動模式中,客戶端開啟兩個非任意埠(n和n+1),第乙個埠連線伺服器21埠,建立命令通道,然後再傳送乙個pasv命令給伺服器端。伺服器端在收到pasv命令後會開啟乙個任意非特殊埠(p>1024),並傳送 port p給客戶端,然後客戶端從本地埠n+1向伺服器端口p發起連線,建立資料通道。

具體過程如下圖:

客戶端啟動乙個隨機埠1026與伺服器21埠建立命令通道,並傳送pasv命令告知伺服器自己處於被動模式

伺服器在收到客戶端命令後傳送port 2024給客戶端命令埠1026

客戶端埠啟動乙個1027埠與伺服器端2024埠連線,建立資料通道

伺服器端傳送ack給客戶端

被動模式命令通道和資料通道都由客戶端建立,因此被動模式通常被用作ftp伺服器無法建立資料通道的場景,主要的乙個原因就是網路防火牆。比如你有乙個防火牆規則允許你開啟乙個ftp通道到ftp.microsoft.com,但微軟的伺服器則無法通過你的防火牆開啟乙個資料通道。

主動模式因為是伺服器端發起資料連線,對ftp伺服器的管理有利,但對客戶端的管理不利。因為ftp伺服器企圖與客戶端的高位隨機埠建立連線,而這個埠很有可能被客戶端的防火牆阻塞掉。被動ftp對ftp客戶端的管理有利,但對伺服器端的管理不利。因為客戶端要與伺服器端建立兩個連線,其中乙個連到乙個高位隨機埠,而這個埠很有可能被伺服器端的防火牆阻塞掉。

幸運的是,有折衷的辦法。既然ftp伺服器的管理員需要他們的伺服器有最多的客戶連線,那麼必須得支援被動ftp。我們可以通過為ftp伺服器指定乙個有限的埠範圍來減小伺服器高位埠的暴露。這樣,不在這個範圍的任何埠會被伺服器的防火牆阻塞。雖然這沒有消除所有針對伺服器的危險,但它大大減少了危險。

FTP主動模式和被動模式

ftp主動模式和被動模式 ftp是僅基於tcp的服務,不支援udp。與眾不同的是ftp使用2個埠,乙個資料埠和乙個命令埠 也可叫做控制埠 通常來說這兩個埠是21 命令埠 和20 資料埠 但ftp工作方式的不同,資料埠並不總是20。這就是主動與被動ftp的最大不同之處。一 主動ftp 主動方式的ftp...

ftp 主動模式和被動模式

專案中使用ftp client連線ftp伺服器上傳檔案時,遇到ftp能連線上,但是上傳失敗,執行 ftp.storefile filename,input 返回false,新增 ftp.enterlocalpassivemode 切換為被動模式上傳成功。折騰了幾個小時,於是覺得有必要了解下ftp主動...

ftp主動模式和被動模式

ftp是檔案傳輸協議的簡稱,ftp傳輸協議有著眾多的優點所以傳輸檔案時使用ftp協議的軟體很多,ftp協議使用的埠是21 也稱為控制埠 其實還有乙個資料埠20,根據ftp工作方式的不同,資料埠也不都是20,主動模式的被動模式使用的資料埠是不一樣的,下面我就一步一步介紹主動ftp模式和被動ftp模式的...