ftp主動(dòng)模式與被動(dòng)模式——為什么連接不上FTP服務(wù)器

ftp不同于一般的服務(wù),該服務(wù)需要同時(shí)開啟兩個(gè)端口,一個(gè)端口是命令通道,另一個(gè)端口為數(shù)據(jù)傳輸通道。根據(jù)數(shù)據(jù)傳輸通道建立的不同,分為了主動(dòng)模式和被動(dòng)模式。這里,詳細(xì)的講述下主動(dòng)模式的工作流程,以及碰到問題如何去解決。

主動(dòng)模式流程

命令通道的建立。客戶端會(huì)隨機(jī)取出一個(gè)大于1024的端口與服務(wù)器端的21端口建立連接,當(dāng)連接建立好的以后,客戶端就可以通過該連接來對ftp服務(wù)執(zhí)行命令,比如查詢文件名、上傳文件、下載文件等命令都是通過該通道來執(zhí)行的。

通知服務(wù)端使用主動(dòng)模式。21端口只是用來進(jìn)行命令的執(zhí)行,對于真正需要文件的傳輸則需要另起端口來操作??蛻舳藭?huì)隨機(jī)再開啟一個(gè)端口用于文件傳輸,然后通過21端口告知ftp服務(wù)器兩個(gè)信息,客戶端用戶文件傳輸?shù)亩丝?,采用主?dòng)模式進(jìn)行文件傳輸。

ftp服務(wù)器主動(dòng)向客戶端建立連接。當(dāng)ftp服務(wù)端知道了兩個(gè)信息后,會(huì)主動(dòng)的通過20端口與客戶端建立連接。該連接建立好之后,文件就可以通過該連接進(jìn)行傳輸。

主動(dòng)模式可能遇到的問題

主動(dòng)模式下連接不了ftp服務(wù)器,可能有以下幾種情況:

  • 服務(wù)端端口未啟動(dòng)

  • 服務(wù)端防火墻

  • 客戶端所在局域網(wǎng)有nat轉(zhuǎn)換

主動(dòng)模式下,一般開啟的端口為21(命令通道)、20(文件傳輸通道)。兩個(gè)端口缺一不可。另外防火墻也需要放行這兩個(gè)端口。針對客戶端主機(jī),可以通過telnet來測試這兩個(gè)端口是否開放。

對于端口及防火墻的問題比較容易解決,而NAT轉(zhuǎn)換問題就很難解決了。我們再來看nat轉(zhuǎn)換是如何導(dǎo)致問題的出現(xiàn)的,對于命令通道的建立因?yàn)槭怯煽蛻舳税l(fā)起的,所以該通道可以成功建立。但是在由服務(wù)端主動(dòng)向客戶端建立數(shù)據(jù)通道時(shí),因?yàn)榉?wù)端知道的是NAT的IP,并不是客戶端的IP。因此服務(wù)端會(huì)以20端口向NAT的其中一個(gè)端口(例如1042端口)發(fā)送主動(dòng)連接的請求。但是NAT并沒有開啟那個(gè)端口,所以主動(dòng)連接建立失敗。那么,如何解決這個(gè)問題呢?使用被動(dòng)模式即可。

被動(dòng)模式流程

命令通道的建立。這個(gè)階段和主動(dòng)模式一樣。

客戶端發(fā)出PASV的鏈接請求??蛻舳送ㄟ^命令通道,向服務(wù)端發(fā)送PASV被動(dòng)模式的請求,并等待服務(wù)端的響應(yīng)。

服務(wù)端啟動(dòng)數(shù)據(jù)端口,并告知客戶端。當(dāng)服務(wù)端收到客戶端的PASV請求后,那么就會(huì)啟動(dòng)一個(gè)端口用作數(shù)據(jù)傳輸。這個(gè)端口可以是隨機(jī)的(1024~65535)、也可以指定。然后,通過命令通道告知客戶端。

客戶端啟動(dòng)數(shù)據(jù)端口,與服務(wù)端建立連接??蛻舳耸盏搅朔?wù)端的信息,知道了服務(wù)端用于數(shù)據(jù)傳輸?shù)亩丝?,這個(gè)時(shí)候客戶端就會(huì)隨機(jī)開啟一個(gè)大于1024的端口,然后通過這個(gè)端口與服務(wù)端建立連接。

更多相關(guān)技術(shù)文章,請?jiān)L問linux系統(tǒng)教程欄目!

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊12 分享