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