FTP 協(xié)議
FTP協(xié)議的(file Transfer Protocol)文本傳輸協(xié)議,簡稱為FTP,
**FTP 是一種基于 TCP 的應(yīng)用層協(xié)議,它不支持 UDP 協(xié)議。 FTP 工作在一種特殊的服務(wù)機(jī)制上,**采用的是c/s模式 也就是客戶端和服務(wù)器
服務(wù)器分為兩個端口
一個 ‘?dāng)?shù)據(jù)’ 端口20(傳輸端口)和一個 ‘命令’ 端口21(也稱為控制端口)。 通常情況下,端口 21 用作控制連接端口,端口 20 用作數(shù)據(jù)連接端口
FTP的連接方式
FTP協(xié)議是基于TCP連接進(jìn)行通信的,但它不同于Http等其他協(xié)議。
FTP協(xié)議是使用兩個并行的連接來傳輸文件的,一個是控制連接,另一個為數(shù)據(jù)連接
也就是雙通道
控制連接
用來在客戶端和服務(wù)器之間傳輸控制信息。如:登陸認(rèn)證時(shí)的用戶名和密碼,上傳和下載文件,切換目錄等,也就是說和FTP協(xié)議相關(guān)的命令都是通過控制連接在實(shí)現(xiàn)的
數(shù)據(jù)連接
主要用來實(shí)現(xiàn)文件的傳輸。如上傳下載的文件內(nèi)容都是通過該TCP連接上進(jìn)行的。
**
當(dāng)FTP客戶端要與遠(yuǎn)程的FTP服務(wù)器端建立TCP連接的時(shí)候,客戶端首先是連接FTP服務(wù)器的21端口。TCP的三次握手成功后,連接成功建立,之后客戶端會將登陸使用的用戶名和密碼通過剛建立的控制連接發(fā)送到服務(wù)器端,服務(wù)器在驗(yàn)證用戶名和密碼合法后,客戶端登陸成功,F(xiàn)TP控制連接會話便成功建立,至此可以進(jìn)行FTP命令的交互。
FTP數(shù)據(jù)連接的兩種模式
主動模式: 客戶端連接成功后,主動告訴服務(wù)器數(shù)據(jù)連接的端口**
被動模式:客戶端連接成功后,在進(jìn)行數(shù)據(jù)傳輸時(shí)臨時(shí)連接服務(wù)器的20端口,利用此端口進(jìn)行數(shù)據(jù)的傳輸。
FTP主動模式
FTP客戶端與服務(wù)器端建立完控制連接后,客戶端建立數(shù)據(jù)連接的TCP服務(wù)器端并打開監(jiān)聽,并通過PORT命令告知FTP服務(wù)器端要連接的端口。 主動模式遵循以下一個步驟:
FTP 客戶端連接FTP服務(wù)器端的21端口,建立控制連接; FTP客戶端在某個端口連接TCP服務(wù)器,并進(jìn)行監(jiān)聽FTP服務(wù)器端發(fā)送來的數(shù)據(jù)連接請求。建立完畢后,通過PORT命令通知FTP服務(wù)器端要連接的監(jiān)聽端口;
FTP服務(wù)器端通過20端口,與FTP服務(wù)器的數(shù)據(jù)連接監(jiān)聽端口進(jìn)行連接;
通過新建立的數(shù)據(jù)連接通道進(jìn)行文件的傳輸通信;
傳輸完畢后自動關(guān)閉數(shù)據(jù)連接。
FTP被動模式
FTP客戶端與服務(wù)器端建立完控制連接后,不再由客戶端建立TCP服務(wù)器然后發(fā)送PORT命令告知FTP服務(wù)器,而是發(fā)送PASV命令。
FTP服務(wù)器在收到此命令后會在高端口上隨機(jī)選擇一個未使用的端口并建立TCP服務(wù)器監(jiān)聽該端口,然后告知FTP客戶端端口號信息??蛻舳嗽谶@個端口上和服務(wù)器連接數(shù)據(jù)連接并進(jìn)行通信。
FTP 客戶端連接FTP服務(wù)器端的21端口,建立控制連接;
FTP客戶端通過PASV命令通知FTP服務(wù)器端采用被動模式;
FTP服務(wù)器端在高端口上隨機(jī)選擇一個端口,并建立TCP服務(wù)器監(jiān)聽之,然后對PASV 做出應(yīng)答將端口告知客戶端;
FTP客戶端連接FTP服務(wù)器端監(jiān)聽的數(shù)據(jù)連接端口,并進(jìn)行文件的傳輸。 傳輸完畢自動關(guān)閉數(shù)據(jù)連接。
FTP文件傳輸實(shí)驗(yàn)
1.安裝FTP并備份文件
yum install -y vsftpd
cd /etc/vsftpd/
cp vsftpd.conf vsftpd.conf.bak
2.設(shè)置匿名用戶訪問的FTP服務(wù)(最大權(quán)限)
#修改配置文件
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES #開啟匿名用戶訪問。默認(rèn)已開啟
write_enable=YES #開放服務(wù)器的寫權(quán)限(若要上傳,必須開啟)。默認(rèn)已開啟
anon_umask=022 #設(shè)置匿名用戶所上傳數(shù)據(jù)的權(quán)限掩碼(反掩碼)。默認(rèn)已開啟
anon_upload_enable=YES #允許匿名用戶上傳文件。默認(rèn)已注釋,需取消注釋
anon_mkdir_write_enable=YES #允許匿名用戶創(chuàng)建(上傳)目錄。默認(rèn)已注釋,需取消注釋
anon_other_write_enable =YES #允許刪除、重命名、覆蓋等操作。需添加
#為匿名訪問ftp的根目錄下的 pub子目錄設(shè)置最大權(quán)限,以便匿名用戶上傳數(shù)據(jù)
chmod 777 /var/ftp/pub/
#開啟服務(wù),關(guān)閉防火墻和增強(qiáng)型安全功能
systemctl start vsftpd
systemctl stop firewalld
setenforce 0
匿名訪問測試
在Windows系統(tǒng)打開 開始 菜單,輸入 cmd 命令打開命令提示符
#建立ftp連接
ftp 192.168.163.20
#匿名訪問,用戶名為ftp,密碼為空,直接回車即可完成登錄
ftp> pwd #匿名訪問ftp的根目錄為Linux系統(tǒng)的/var/ftp/目錄
ftp> ls #查看當(dāng)前目錄
ftp> cd pub #切換到pub 目錄
ftp> get 文件名 #下載文件到當(dāng)前Windows本地目錄
ftp> put 文件名 #上傳文件到ftp目錄
ftp> quit #退出
我們換到Linux中看看是否有這個文件
小結(jié):
以上關(guān)于主動和被動FTP的解釋,可以簡單概括為以下兩點(diǎn):
1、主動FTP:
命令連接:客戶端 >1024端口 -> 服務(wù)器 21端口
數(shù)據(jù)連接:客戶端 >1024端口 <- 服務(wù)器 20端口
2、被動FTP:
命令連接:客戶端 >1024端口 -> 服務(wù)器 21端口
數(shù)據(jù)連接:客戶端 >1024端口 -> 服務(wù)器 >1024端口
-
主動與被動FTP優(yōu)缺點(diǎn):文章來源:http://www.zghlxwxcb.cn/news/detail-440684.html
主動FTP對FTP服務(wù)器的管理有利,但對客戶端的管理不利。因?yàn)镕TP服務(wù)器企圖與客戶端的高位隨機(jī)端口建立連接,而這個端口很有可能被客戶端的防火墻阻塞掉。被動FTP對FTP客戶端的管理有利,但對服務(wù)器端的管理不利。因?yàn)榭蛻舳艘c服務(wù)器端建立兩個連接,其中一個連到一個高位隨機(jī)端口,而這個端口很有可能被服務(wù)器端的防火墻阻塞掉。文章來源地址http://www.zghlxwxcb.cn/news/detail-440684.html
到了這里,關(guān)于FTP 協(xié)議的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!