FTP的主動(dòng)模式(PORT Mode)及被動(dòng)模式(Passive Mode)
FTP的特殊性:
大多數(shù)的TCP服務(wù)是使用單個(gè)的連接,一般是客戶向服務(wù)器的一個(gè)周知端口發(fā)起連接,然后使用這個(gè)連接進(jìn)行通訊。但是,F(xiàn)TP協(xié)議卻有所不同,它使用雙向的多個(gè)連接,而且使用的端口很難預(yù)計(jì)。一般,F(xiàn)TP連接包括:
-
1)一個(gè)控制連接(Control Connection)
這個(gè)連接用于傳遞客戶端的命令和服務(wù)器端對(duì)命令的響應(yīng)。它使用服務(wù)器的21端口,生存期是整個(gè)FTP回話時(shí)間。
-
2)幾個(gè)數(shù)據(jù)連接(Data Connection)
這些連接用于傳輸文件和其他數(shù)據(jù),例如:目錄列表等。這種連接在需要數(shù)據(jù)傳輸時(shí)建立,而一旦數(shù)據(jù)傳輸完畢就關(guān)閉。每次使用的端口也不一定相同。而且,數(shù)據(jù)連接即可能是客戶端發(fā)起的,也可能是服務(wù)器端發(fā)起的。
在FTP協(xié)議中,控制連接使用周知端口21。相反,數(shù)據(jù)傳輸連接的目的端口通常實(shí)現(xiàn)無(wú)法知道。FTP協(xié)議使用一個(gè)標(biāo)準(zhǔn)的端口21作為ftp-data端口,但是這個(gè)端口只用于連接的源地址是服務(wù)器端的情況,在這個(gè)端口上根本就沒(méi)有監(jiān)聽進(jìn)程。FTP的數(shù)據(jù)連接和控制連接的方向一般是相反的,也就是說(shuō),是服務(wù)器向客戶端發(fā)起一個(gè)用于數(shù)據(jù)傳輸?shù)倪B接。連接的端口是由服務(wù)器端和客戶端協(xié)商確定的。FTP協(xié)議的這個(gè)特征對(duì)ISA轉(zhuǎn)發(fā)以及防火墻和NAT的配置增加了很多困難。
除此之外,還有另外一種FTP模式,叫做被動(dòng)模式(passive mod)。在這種模式下,數(shù)據(jù)連接是由客戶程序發(fā)起的,和剛才討論過(guò)的模式(我們可以叫做主動(dòng)模式)相反。是否采取被動(dòng)模式取決于客戶程序,在ftp命令行中使用passive命令就可以關(guān)閉/打開被動(dòng)模式。
主動(dòng) FTP :
命令連接:客戶端 >1024 端口 → 服務(wù)器 21 端口
數(shù)據(jù)連接:客戶端 >1024 端口 ← 服務(wù)器 20 端口
被動(dòng) FTP :
命令連接:客戶端 >1024 端口 → 服務(wù)器 21 端口
數(shù)據(jù)連接:客戶端 >1024 端口 ← 服務(wù)器 >1024 端口
PORT(主動(dòng))方式的連接過(guò)程是:客戶端向服務(wù)器的FTP端口(默認(rèn)是21)發(fā)送連接請(qǐng)求,服務(wù)器接受連接,建立一條命令鏈路。當(dāng)需要傳送數(shù)據(jù)時(shí),客戶端在命令鏈路上用PORT命令告訴服務(wù)器:“我打開了***X端口,你過(guò)來(lái)連接我”。于是服務(wù)器從20端口向客戶端的***X端口發(fā)送連接請(qǐng)求,建立一條數(shù)據(jù)鏈路來(lái)傳送數(shù)據(jù)。
PASV(被動(dòng))方式的連接過(guò)程是:客戶端向服務(wù)器的FTP端口(默認(rèn)是21)發(fā)送連接請(qǐng)求,服務(wù)器接受連接,建立一條命令鏈路。當(dāng)需要傳送數(shù)據(jù)時(shí),服務(wù)器在命令鏈路上用PASV命令告訴客戶端:“我打開了***X端口,你過(guò)來(lái)連接我”。于是客戶端向服務(wù)器的***X端口發(fā)送連接請(qǐng)求,建立一條數(shù)據(jù)鏈路來(lái)傳送數(shù)據(jù)。
從上面可以看出,兩種方式的命令鏈路連接方法是一樣的,而數(shù)據(jù)鏈路的建立方法就完全不同。而FTP的復(fù)雜性就在于此。
解決此問(wèn)題的辦法也很簡(jiǎn)單,關(guān)閉客戶端的PASV方式,強(qiáng)制其用PORT方式訪問(wèn)服務(wù)器. 登錄FTP服務(wù)器后用passive命令關(guān)閉客戶端的PASV方式,
如下:
ctrl+R-->cmd-->輸入ftp回車
ftp> passive
Passive mode off.
ftp> passive (再次運(yùn)行命令可打開)
Passive mode on.
?。。¤b于使用云主機(jī)作為控制FTP服務(wù)器的,由于云主機(jī)本身對(duì)服務(wù)器端口就有限制,我們需要在云主機(jī)上創(chuàng)建安全組規(guī)則,開放端口(21+數(shù)據(jù)通道端口號(hào))
1、創(chuàng)建安全組規(guī)則,設(shè)置數(shù)據(jù)通道范圍如10000到10809端口和21端口
2、設(shè)置FTP的pasv端口范圍(數(shù)據(jù)通道)
如果不設(shè)置端口范圍,在防火墻開啟的情況下,連接FTP時(shí)可能出現(xiàn)列表錯(cuò)誤的現(xiàn)象,下面介紹下如何設(shè)置FTP的pasv端口范圍。
一、首先打開IIS選擇服務(wù)器會(huì)進(jìn)入全局設(shè)置,再雙擊FTP防火墻支持:

二、設(shè)置指定的,數(shù)據(jù)通道端口范圍,建議10000到10809端口,如果有云主機(jī)則必須和云主機(jī)配置一致。

設(shè)置完畢后重新啟動(dòng) FTP 服務(wù)。
該文章在 2021/9/27 14:33:07 編輯過(guò)