經(jīng)常聽見有人討論P(yáng)ORT和PASV,到底兩者有何區(qū)別?
答:防火墻有很多種,其中有一些會禁止那些不是從內(nèi)部網(wǎng)絡(luò)IP發(fā)出的連接請求。
而ftp協(xié)議是個(gè)很老的東東,沒有考慮這個(gè)問題。可以這樣簡單描述一般ftp的工作原理:client對server發(fā)出請求:“嗨,我的xx端口正等著你傳送數(shù)據(jù)呢,sever聽到這個(gè)請求,就會建立一個(gè)連接,指向這個(gè)端口,并且開始傳送數(shù)據(jù)。這就回到了我們的問題,如果發(fā)出請求的client在防火墻的后面,而這個(gè)防火墻禁止外部IP建立連接,那么當(dāng)然server(在外部)不能建立與client的連接。所以,過了幾年,人們修改了ftp協(xié)議以應(yīng)付這種情況。這就是passive mode,工作原理如下:client向server發(fā)出passive命令,server回答說:“數(shù)據(jù)在xx端口等你,自己來拿。” 而這回則由client建立指向server的連接,從而取得數(shù)據(jù)。這就避免了防火墻的限制。
為什么PORT方式比PASV方式安全?
FTP傳輸過程中要求建立一個(gè)專門的連接來傳輸數(shù)據(jù),建立連接有兩個(gè)方法:一個(gè)就是FTP Server打開一個(gè)端口,Client可以去連接這個(gè)端口來建立連接。這就是PASV方式。一個(gè)就是FTP Client打開一個(gè)端口,Server去連接這個(gè)端口來建立連接。這就是PORT方式。顯然,如果服務(wù)器打開了一個(gè)端口,就意味著向互聯(lián)網(wǎng)打開了一個(gè)端口。所以PORT方式比PASV方式安全。