FTP工做原理

FTP工做原理介紹面試

文件傳輸協議:File Transfer Protocol 早期的三個應用級協議之一,基於C/S結構 數據傳輸格式:二進制(默認)和文本 雙通道協議:命令和數據鏈接服務器

兩種模式:從服務器角度網絡

主動(PORT style):服務器主動鏈接 命令(控制):客戶端:隨機port —> 服務器:21/tcp 數據:客戶端:隨機port <—服務器:20/tcp架構

被動(PASV style):客戶端主動鏈接 命令(控制):客戶端:隨機port —> 服務器:21/tcp 數據:客戶端:隨機port —> 服務器:隨機port /tcp運維

基於C/S結構有專門的客戶端和專門的服務端tcp

雙通道協議:命令通道和數據通道(所謂雙通道就是FTP支持兩個端口)分佈式

命令通道:走TCP的21端口,用來傳輸指令的。oop

數據通道:用來傳輸數據的post

命令通道永遠是客戶端主動向服務端發起請求:命令通道永遠走的是TCP/21端口大數據

數據通道走的是兩個端口,經過工做模式來肯定走的端口:

主動模式(post)爲TCP的20端口。

被動模式走的是隨機端口,所謂主動和被動都是以服務器的角色來看。

主動模式(post):服務器端主動鏈接客戶端

被動模式(pasv):客戶端主動鏈接服務器端(會經過命令通道相互交換信息,客戶端就會知道服務端的隨機端口號)

範例:服務器被動模式數據端口 227 Entering Passive Mode (172,16,0,1,224,59) 服務器數據端口爲:224*256+59

FTP雙通道工做原理解析

在這裏插入圖片描述

FTP是一種文件傳輸協議,它支持兩種模式,一種方式叫作Standard (也就是 Active,主動方式),一種是 Passive (也就是PASV,被動方式)。 Standard模式 (主動模式)FTP的客戶端發送 PORT 命令到FTP server。Passive模式(被動模式)FTP的客戶端發送 PASV命令到 FTP Server。

命令通道:

是客戶端主動向服務器端發起命令請求,同時服務器端開啓TCP/21端口號。客戶端主動發起三次握手請求。

服務器由兩個端口發起連接。其中有一個叫命令通道的端口,有一個是實現數據通道的端口。命令通道是用來經過實現命令的執行。數據端口是用來實現數據的傳輸,命令通道走的端口是固定的TCP/21端口。若是客戶端須要數據傳輸時,服務就會開啓數據通道端口。數據通道走的端口不是固定的,是根據工做模式來判斷開啓的端口。

數據通道:

下面介紹一個這數據通道的兩種方式的工做原理:

主動工做模式(post):服務器端主動鏈接客戶端

FTP 客戶端首先和FTP Server的TCP 21端口創建鏈接,經過這個通道發送命令,客戶端須要接收數據的時候在這個通道上發送PORT命令。 PORT命令包含了客戶端用什麼端口接收數據。在傳送數據的時候,服務器端經過本身數據端口的TCP 20端口發送數據。 FTP server必須和客戶端創建一個新的鏈接用來傳送數據。

被動工做模式(pasv):客戶端主動鏈接服務器端(會經過命令通道相互交換信息,客戶端就會知道服務端的隨機端口號)

在創建控制通道的時候和Standard模式相似,當客戶端經過這個通道發送PASV 命令的時候,FTP server打開一個位於1024和5000之間的隨機端口而且通知客戶端在這個端口上傳送數據的請求,而後FTP server 將經過這個端口進行數據的傳送,這個時候FTP server再也不須要創建一個新的和客戶端之間的鏈接。

FTP服務狀態碼: 1XX:信息 125:數據鏈接打開 2XX:成功類狀態 200:命令OK 230:登陸成功 3XX:補充類 331:用戶名OK 4XX:客戶端錯誤 425:不能打開數據鏈接 5XX:服務器錯誤 530:不能登陸

用戶認證:

匿名用戶:ftp,anonymous,對應Linux用戶ftp ​ 系統用戶:Linux用戶,用戶/etc/passwd,密碼/etc/shadow ​ 虛擬用戶:特定服務的專用用戶,獨立的用戶/密碼文件

※部分文章來源於網絡,若有侵權請聯繫刪除;更多文章和資料|點擊後方文字直達 ↓↓↓
100GPython自學資料包
阿里雲K8s實戰手冊
[阿里雲CDN排坑指南] CDN
ECS運維指南
DevOps實踐手冊
Hadoop大數據實戰手冊
Knative雲原生應用開發指南
OSS 運維實戰手冊
雲原生架構白皮書
Zabbix企業級分佈式監控系統源碼文檔
10G大廠面試題戳領
相關文章
相關標籤/搜索