一般來說,客戶端有乙個 socket 用來連線 ftp 伺服器的相關埠,它負責 ftp 命令的傳送和接收返回的響應資訊。一些操作如「登入」、「改變目錄」、「刪除檔案」,依靠這個連線傳送命令就可完成。伺服器的命令埠號一般是21。
如果使用主動模式,通常客戶端會傳送乙個埠號給伺服器端,並在這個埠監聽。伺服器需要連線到客戶端開啟的這個資料埠,並進行資料的傳輸。主動模式下,伺服器的資料埠號一般是20。
主動模式下,客戶端隨機開啟乙個大於1024的埠向伺服器的命令埠p(即21埠),發起連線,同時開放n +1埠監聽,並向伺服器發出「port n+1」命令,由伺服器從它自己的資料埠(即20埠)主動連線到客戶端指定的資料埠(n+1)。ftp的客戶端只是告訴伺服器自己的埠號,讓伺服器來連線客戶端指定的埠。對於客戶端的防火牆來說,這是從外部到內部的連線,可能會被阻塞。
為了解決伺服器發起到客戶的連線問題,有了另一種ftp連線方式,即被動方式。命令連線和資料連線都由客戶端發起,這樣就解決了從伺服器到客戶端的資料埠的連線被防火牆過濾的問題。被動模式下,當開啟乙個ftp連線時,客戶端開啟兩個任意的本地埠(n > 1024和n+1)。第乙個埠連線伺服器的21埠,提交pasv命令。然後伺服器會開啟乙個任意的埠(p > 1024),返回如227 entering passive mode (h1,h2,h3,h4,p1,p2)。它返回了227開頭的資訊,在括號中有以逗號隔開的六個數字,前四個指伺服器的位址,最後兩個,將倒數第二個乘 256再加上最後乙個數字,這就是ftp伺服器開放的用來進行資料傳輸的埠。
下圖是ftp設定被動模式埠為固定唯一埠,每次飯後的埠號一樣
注意,這裡的任意兩個埠n和n+1其實不是連續的,而是真正的不相關的兩個埠。
FTP主動模式與被動模式
ftp最權威的參考見rfc 959,有興趣的朋友可以仔細閱讀 ftp使用2個tcp埠,首先是建立乙個命令埠 控制埠 然後再產生乙個資料埠。主動模式使用tcp 21和20兩個埠。被動模式會工作在大於1024隨機埠。1 主動模式 port模式 客戶端從乙個任意的非特權埠n n 1024 連線到ftp伺服...
FTP主動與被動模式
首先要知道ftp只支援tcp協議,不支援udp協調的。ftp主動模式與被動模式 主動模式 port 客戶端向服務端的ftp埠 預設是21 傳送請求,服務端ftp守護程序 執行緒收到請求後,建立一條命令鏈結。當需要傳輸資料時,客戶端通過這個命令鏈結傳送命令給服務端port命令,告訴服務端 我建立了乙個...
mysql 主動 被動模式 ftp主動模式被動模式
在使用ftp時,如果客戶端機器和ftp伺服器雙方之間的所有埠都是開放的,那連線不存在問題。如果客戶端與伺服器之間有防火牆,如果沒配置好防火策略和採用合適的連線模式,會導致登入成功,但無法list列表的問題。要避免出現這樣的問題,首先要了解ftp的工作模式。1.ftp的port 主動模式 和pasv ...