FTP的兩種連結工作模式是怎樣的?
寫這篇文章主要是因為在使用ftp的時候有時候 ofollow,noindex">上傳檔案 會失敗,然後就卡住很久,原因就是預設主動模式受限於客戶端防火牆的限制,有時候會導致上傳檔案失敗所以整理了區別了一下兩種。
一、FTP的兩種工作模式
FTP兩種連結模式:主動模式(Active FTP)和被動模式(Passive FTP)
在主動模式下,FTP客戶端隨機開啟一個大於1024的埠N向伺服器的21號埠發起連線,然後開放N+1號埠進行監聽,並向伺服器發出PORT N+1命令。伺服器接收到命令後,會用其本地的FTP資料埠(通常是20)來連線客戶端指定的埠N+1,進行資料傳輸。
在被動模式下,FTP客戶端隨機開啟一個大於1024的埠N向伺服器的21號埠發起連線,同時會開啟N+1號埠。然後向伺服器傳送PASV命令,通知伺服器自己處於被動模式。伺服器收到命令後,會開放一個大於1024的埠P進行監聽,然後用PORT P命令通知客戶端,自己的資料埠是P。客戶端收到命令後,會通過N+1號埠連線伺服器的埠P,然後在兩個埠之間進行資料傳輸。
總的來說,主動模式的FTP是指伺服器主動連線客戶端的資料埠,被動模式的FTP是指伺服器被動地等待客戶端連線自己的資料埠。
被動模式的FTP通常用在處於防火牆之後的FTP客戶訪問外界FTP伺服器的情況,因為在這種情況下,防火牆通常配置為不允許外界訪問防火牆之後的主機,而只允許由防火牆之後的主機發起的連線請求通過。因此,在這種情況下不能使用主動模式的FTP傳輸,而被動模式的FTP可以良好的工作。
一般連線FTP客戶端軟體的連線模式預設為Passive(被動連線)。即FTP客戶端向服務埠(預設是21)發出連線請求,服務端接到請求後建立命令鏈路。然後服務端通過命令鏈路發訊息告訴客戶端,服務端某個埠位於(1025—65535)之間開放,與客戶端建立起資料鏈路,從而客戶端可以進行資料上傳與下載。這個被動指的是客戶端被動收到服務端的訊息,才能開始傳輸。一般這樣的話,可能會受到服務端防火牆的阻隔。而主動模式,PORT即FTP客戶端向服務埠(預設是21)發出連線請求,服務端接到請求後建立命令鏈路,這個過程與被動連線一樣。然後客戶端通過命令鏈路發訊息告訴服務端,客戶端一般是20埠開放,服務端收到訊息後連線該埠,建立起資料鏈路,從而進行資料的上傳下載。這個主動是指客戶端主動開放20埠,併發起與服務端建立資料傳輸的請求。這種模式,可能受限於客戶端防火牆的限制,另外也不能用與代理上網時的FTP服務,因為服務端收到客戶端請求後,他連線的代理 伺服器 的埠。
二、FTP模式深入說明
主動FTP對FTP伺服器的管理有利,但對 客戶端 的管理不利,因為FTP伺服器企圖與客戶端的高位隨機埠建立連線,而這個埠很有可能被客戶端的防火牆阻塞掉。被動FTP對FTP客戶端的管理有利,但對伺服器端的管理不利,因為客戶端要與伺服器端建立兩個連線,其中一個連到一個高位隨機埠,而這個埠很有可能被伺服器端的防火牆阻塞掉。
幸運的是,有折衷的辦法。既然FTP伺服器的管理員需要他們的伺服器有最多的客戶連線,那麼必須得支援被動FTP。我們可以通過為FTP伺服器指定一個有限的埠範圍來減小伺服器高位埠的暴露。這樣,不在這個範圍的任何埠會被伺服器的防火牆阻塞。雖然這沒有消除所有針對伺服器的危險,但它大大減少了危險。
簡而言之:主動模式(PORT)和被動模式(PASV)。主動模式是從伺服器端向客戶端發起連線;被動模式是客戶端向伺服器端發起連線。兩者的共同點是都使用21埠進行使用者驗證及管理,差別在於傳送資料的方式不同,PORT模式的FTP伺服器資料埠固定在20,而PASV模式則在1025-65535之間隨機。
通常我們使用ftp 都是預設主動模式如何修改成被動模式,在連線的時候,有個選項目錄,在裡面就有資料連線模式,我們在上傳遇到上傳失敗的時候,可以先試一下被動模式來試試是否是我們本地的防火牆原因導致的上傳下載失敗,也算是一個使用ftp的小細節。
