ftp的主動模式和被動模式

目前在網(wǎng)絡(luò)上,如果你想把文件和其他人分享。最方便的辦法就是講文件放在FTP服務器上,然后其他人通過FTP客戶端程序來下載所需要的文件。

1. FTP—即文件傳輸協(xié)議

FTP(File Transfer Protocol)用于Internet上控制文件的雙向傳輸。

FTP只通過TCP連接,沒有用于FTP的UDP組件,F(xiàn)TP不同于其他服務的是它使用了兩個端口, 一個數(shù)據(jù)端口和一個命令端口(或稱為控制端口)。通常21端口是命令端口,20端口是數(shù)據(jù)端口。當混入主動/被動模式的概念時,數(shù)據(jù)端口就有可能不是20了。

1.1 主動模式FTP

主動模式的步驟

  1. 客戶端命令端口(1026)與FTP服務器命令端口(21)立連接,并發(fā)送命令:PORT 1027。
  2. FTP服務器命令端口(21)給客戶端的命令端口(1026)返回一個ACK。
  3. FTP服務器在數(shù)據(jù)端口(20)發(fā)起到客戶端指定的數(shù)據(jù)端口(1027)的連接。
  4. 客戶端(1027)端口給服務器數(shù)據(jù)端口(20)返回一個ACK。

主動模式的缺陷

主動方式FTP的主要問題實際上在于客戶端,F(xiàn)TP的客戶端并沒有實際建立一個到服務器端口的連接,他只是簡單告訴服務器自己監(jiān)聽的端口號(1027),服務端在回來連接客戶端這個指定的接口。對于客戶端的防火墻來說,這是從外部系統(tǒng)建立到內(nèi)部客戶端的連接,這是通常阻塞的。

1.2 被動模式FTP

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

被動模式的步驟

  1. 客戶端的命令端口(1026)和服務器的命令端口(21)建立連接,并發(fā)送命令PSAV。
  2. 服務器返回命令:PORT 2024,告訴客戶端:服務器將在這個端口進行數(shù)據(jù)監(jiān)聽。
  3. 客戶端初始化一個從自己數(shù)據(jù)端口到服務器指定端口的數(shù)據(jù)連接。
  4. 服務器數(shù)據(jù)端口返回一個ACK。

被動模式的缺陷

  1. 被動莫斯解決了客戶端的問題,卻是給服務器端帶來了更多的問題。最大的問題就是需要允許從任意遠程終端到服務器高位端口的連接。幸運的是,許多括流行的WU-FTPD允許管理員指定FTP服務器使用的端口范圍。

  2. 有的客戶端支持被動模式,有的不支持被動模式,必須考慮如何能支持這些客戶端,以及為他們提供解決辦法。例如,Solaris提供的FTP命令行工具就不支持被動模式,需要第三方的FTP客戶端,比如ncftp。

隨著WWW的流行,許多人習慣web瀏覽器作為FTP客戶端,大多數(shù)瀏覽器只在訪問ftp://這樣的URL時才支持被動模式。這到底是好還是壞取決于服務器和防火墻的配置。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容