FTP主動(dòng)模式與被動(dòng)模式的解決與原理
FTP是File Transfer Protocol(文件傳輸協(xié)議)的縮寫,用來(lái)在兩臺(tái)計(jì)算機(jī)之間互相傳送文件。相比于HTTP,FTP協(xié)議要復(fù)雜得多。復(fù)雜的原因,是因?yàn)?/SPAN>FTP協(xié)議要用到兩個(gè)TCP連接,一個(gè)是命令鏈路,用來(lái)在FTP客戶端與服務(wù)器之間傳遞命令;另一個(gè)是數(shù)據(jù)鏈路,用來(lái)上傳或下載數(shù)據(jù)。
FTP協(xié)議有兩種工作方式:PORT方式和PASV方式,中文意思為主動(dòng)式和被動(dòng)式。
PORT(主動(dòng))方式的連接過程是:客戶端向服務(wù)器的FTP端口(默認(rèn)是21)發(fā)送連接請(qǐng)求,服務(wù)器接受連接,建立一條命令鏈路。當(dāng)需要傳送數(shù)據(jù)時(shí),客戶端在命令鏈路上用PORT命令告訴服務(wù)器:“我打開了XXXX端口,你過來(lái)連接我”。于是服務(wù)器從20端口向客戶端的XXXX端口發(fā)送連接請(qǐng)求,建立一條數(shù)據(jù)鏈路來(lái)傳送數(shù)據(jù)。
PASV(被動(dòng))方式的連接過程是:客戶端向服務(wù)器的FTP端口(默認(rèn)是21)發(fā)送連接請(qǐng)求,服務(wù)器接受連接,建立一條命令鏈路。當(dāng)需要傳送數(shù)據(jù)時(shí),服務(wù)器在命令鏈路上用PASV命令告訴客戶端:“我打開了XXXX端口,你過來(lái)連接我”。于是客戶端向服務(wù)器的XXXX端口發(fā)送連接請(qǐng)求,建立一條數(shù)據(jù)鏈路來(lái)傳送數(shù)據(jù)。
我來(lái)概括一下就是:
主動(dòng)模式:服務(wù)器向客戶端敲門,然后客戶端開門
被動(dòng)模式:客戶端向服務(wù)器敲門,然后服務(wù)器開門
所以,如果你是如果通過代理上網(wǎng)的話,就不能用主動(dòng)模式,因?yàn)榉⻊?wù)器敲的是上網(wǎng)代理服務(wù)器的門,而不是敲客戶端的門
而且有時(shí)候,客戶端也不是輕易就開門的,因?yàn)橛蟹阑饓ψ钃酰强蛻舳碎_放大于1024的高端端口
要用主動(dòng)模式來(lái)下載,請(qǐng)您把下載工具的被動(dòng)模式(PASV)都不要打勾,用主動(dòng)模式來(lái)下載就OK了,如果在出錯(cuò),那就被動(dòng)主動(dòng)相互轉(zhuǎn)換一下
常見的FTP客戶端軟件的PASV方式的關(guān)閉方法
大部分FTP客戶端默認(rèn)使用PASV方式,PASV模式的意式是被動(dòng)模式。在大部分FTP客戶端的設(shè)置里,常見到的字眼都是“PASV”或“被動(dòng)模式”。
IE: 工具 -> Internet選項(xiàng) -> 高級(jí) -> “使用被動(dòng)FTP”(需要IE6.0以上才支持)。
CuteFTP: Edit -> Setting -> Connection -> Firewall -> “PASV Mode”
或 File -> Site Manager,在左邊選中站點(diǎn) -> Edit -> “Use PASV mode”
FlashGet: 工具 -> 選項(xiàng) -> 代理服務(wù)器 -> 直接連接 -> 編輯 -> “PASV模式”
FlashFXP: 選項(xiàng) -> 參數(shù)選擇 -> 代理/防火墻/標(biāo)識(shí) -> “使用被動(dòng)模式”
或 站點(diǎn)管理 -> 對(duì)應(yīng)站點(diǎn) -> 選項(xiàng) -> “使用被動(dòng)模式”
或 快速連接 -> 切換 -> “使用被動(dòng)模式”
LeapFTP: Option ->;Preferences -> General->;Proxy->Use Pasv Mode
從上面可以看出,兩種方式的命令鏈路連接方法是一樣的,而數(shù)據(jù)鏈路的建立方法就完全不同。而FTP的復(fù)雜性就在于此