FTP主动和被动模式区别
FTP是用來在兩臺計算機之間傳輸文件,是互聯網中應用非常廣泛的服務之一。FTP(File Transfer Protocol)即文件傳輸協議,是一種基于TCP的協議,采用客戶/服務器模式,不支持UDP協議。FTP協議有PORT和PASV兩種工作模式,即主動模式和被動模式。與眾不同的是FTP使用2個端口,一個數據端口和一個命令端口(也可叫做控制端口)。通常來說這兩個端口是21(命令端口)和20(數據端口)。但FTP工作方式的不同,數據端口并不總是20。
FTP支持兩種方式的傳輸:文本(ASCII)方式和二進制(Binary)方式。通常文本文件的傳輸采用ASCII方式,而圖像、聲音文件、加密和壓縮文件等非文本文件采用二進制方式傳輸,如果為了從一個系統上傳輸文件而使用了與本地系統不同的計算機字節位數,那么就必須使用Tenex模式。FTP以ASCII方式作為缺省的文件傳輸方式。
當我們對FTP協議進行學習的時候,你首先要考慮到的一個問題是使用的是主動模式的還是被動模式。在過去,客戶端缺省為主動模式;近來,由于主動模式的存在安全問題,許多客戶端的FTP應用缺省變為了被動模式。
1、主動模式(PORT)
主動模式的工作原理:FTP客戶端連接到FTP服務器的21端口,發送用戶名和密碼登錄,登錄成功后要list列表或者讀取數據時,客戶端隨機開放一個端口(1024以上),發送 PORT命令到FTP服務器,告訴服務器客戶端采用主動模式并開放端口;FTP服務器收到PORT主動模式命令和端口號后,通過服務器的20端口和客戶端開放的端口連接,發送數據,原理如下圖:
2、被動模式(PASV是Passive的縮寫)
被動模式的工作原理:FTP客戶端連接到FTP服務器的21端口,發送用戶名和密碼登錄,登錄成功后要list列表或者讀取數據時,發送PASV命令到FTP服務器, 服務器在本地隨機開放一個端口(1024以上),然后把開放的端口告訴客戶端, 客戶端再連接到服務器開放的端口進行數據傳輸,原理如下圖:
3、如何選擇
如果工作中一定要使用FTP服務器,在今天的互聯網環境里面,使用FTP被動模式進行連接傳輸就可以了。如果只是想知道答案的朋友,看到這里就可以了。對技術和原理感興趣的朋友,請繼續往下看。
從上面的運行原理可以看到,主動模式和被動模式的區別可以簡單概述為:
a. 主動模式傳送數據時是“服務器”連接到“客戶端”的端口;被動模式傳送數據是“客戶端”連接到“服務器”的端口。
b. 主動模式需要客戶端必須開放端口給服務器,很多客戶端都是在防火墻內,開放端口給FTP服務器訪問比較困難;被動模式只需要服務器端開放端口給客戶端連接就行了。
需要注意的是,被動模式和主動模式的登錄過程,都是FTP客戶端去連接FTP服務器。 為什么絕大部分互聯網應用都是被動模式? 因為大部分客戶端都是在路由器后面,沒有獨立的公網IP地址,服務器想要主動連接客戶端,難度太大,在現在真實的互聯網環境里面幾乎是不可能完成的任務。
在 FTP服務器部署的時候,其默認采用的是主動操作模式。如果企業FTP服務器的用戶都是在內部網絡中的,即不用像外部網絡的用戶提供FTP連接的需求,那么采用這個默認操作方式就可以了。但是如果一些出差在外的員工或者員工在家庭辦公時也需要訪問企業內部的FTP服務器,而此時出于安全的考慮或者公網IP 地址數量的限制,企業往往會把FTP服務器部署在防火墻或者NAT服務器的后面,此時這個主動操作模式就不行了。
總之,在FTP服務器部署的時候考慮是要采用主動操作模式還是被動操作模式,只需要記住一個原則,即如果把FTP服務器部署在防火墻或者NAT服務器的背后,則采用主動操作模式的客戶端只能夠建立命令連接而無法進行文件傳輸。如果部署完FTP服務器后,系統管理員發現用戶可以連接上FTP服務器,可以查看目錄下的文件,但是卻無法下載或者上傳文件,如果排除權限方面的限制外,那么很有可能就是這個操作模式選擇錯誤。系統管理員告訴用戶選擇合適的操作模式, 基本上就可以解決文件傳輸的問題了。
總結
以上是生活随笔為你收集整理的FTP主动和被动模式区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在c语言中我叫做符号变量,问渠网-C语言
- 下一篇: 记录-蓝鲸相关知识点