資源描述:
《ftp中主動模式(port)與被動模式(pasv)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、ftp中主動模式(port)與被動模式(PASV)目錄????·開場白·基礎(chǔ)·主動FTP·主動FTP的例子·被動FTP·被動FTP的例子·總結(jié)·參考資料·附錄1:配置常見FTP服務(wù)器開場白處理防火墻和其他網(wǎng)絡(luò)連接問題時最常見的一個難題是主動FTP與被動FTP的區(qū)別以及如何完美地支持它們。幸運地是,本文能夠幫助你清除在防火墻環(huán)境中如何支持FTP這個問題上的一些混亂。本文也許不像題目聲稱的那樣是一個權(quán)威解釋,但我已經(jīng)聽到了很多好的反饋意見,也看到了本文在許多地方被引用,知道了很多人都認(rèn)為它很有用。雖然我一直在找尋改進(jìn)的方法,但如果你發(fā)現(xiàn)某個地方講的不夠清楚,需要更多的解釋,請告訴我!最近的修改
2、是增加了主動FTP和被動FTP會話中命令的例子。這些會話的例子應(yīng)該對更好地理解問題有所幫助。例子中還提供了非常棒的圖例來解釋FTP會話過程的步驟?,F(xiàn)在,正題開始了...基礎(chǔ)FTP是僅基于TCP的服務(wù),不支持UDP。與眾不同的是FTP使用2個端口,一個數(shù)據(jù)端口和一個命令端口(也可叫做控制端口)。通常來說這兩個端口是21-命令端口和20-數(shù)據(jù)端口。但當(dāng)我們發(fā)現(xiàn)根據(jù)(FTP工作)方式的不同數(shù)據(jù)端口并不總是20時,混亂產(chǎn)生了。主動FTP主動方式的FTP是這樣的:客戶端從一個任意的非特權(quán)端口N(N>;1024)連接到FTP服務(wù)器的命令端口,也就是21端口。然后客戶端開始監(jiān)聽端口N+1,并發(fā)送FTP命
3、令“portN+1”到FTP服務(wù)器。接著服務(wù)器會從它自己的數(shù)據(jù)端口(20)連接到客戶端指定的數(shù)據(jù)端口(N+1)。針對FTP服務(wù)器前面的防火墻來說,必須允許以下通訊才能支持主動方式FTP:1.任何端口到FTP服務(wù)器的21端口(客戶端初始化的連接S<-C)2.FTP服務(wù)器的21端口到大于1023的端口(服務(wù)器響應(yīng)客戶端的控制端口S->C)3.FTP服務(wù)器的20端口到大于1023的端口(服務(wù)器端初始化數(shù)據(jù)連接到客戶端的數(shù)據(jù)端口S->C)4.大于1023端口到FTP服務(wù)器的20端口(客戶端發(fā)送ACK響應(yīng)到服務(wù)器的數(shù)據(jù)端口S<-C)畫出來的話,連接過程大概是下圖的樣子:?在第1步中,客戶端的命令端口
4、與FTP服務(wù)器的命令端口建立連接,并發(fā)送命令“PORT1027”。然后在第2步中,F(xiàn)TP服務(wù)器給客戶端的命令端口返回一個"ACK"。在第3步中,F(xiàn)TP服務(wù)器發(fā)起一個從它自己的數(shù)據(jù)端口(20)到客戶端先前指定的數(shù)據(jù)端口(1027)的連接,最后客戶端在第4步中給服務(wù)器端返回一個"ACK"。主動方式FTP的主要問題實際上在于客戶端。FTP的客戶端并沒有實際建立一個到服務(wù)器數(shù)據(jù)端口的連接,它只是簡單的告訴服務(wù)器自己監(jiān)聽的端口號,服務(wù)器再回來連接客戶端這個指定的端口。對于客戶端的防火墻來說,這是從外部系統(tǒng)建立到內(nèi)部客戶端的連接,這是通常會被阻塞的。主動FTP的例子下面是一個主動FTP會話的實際例子。
5、當(dāng)然服務(wù)器名、IP地址和用戶名都做了改動。在這個例子中,F(xiàn)TP會話從testbox1.slacksite.com(192.168.150.80),一個運行標(biāo)準(zhǔn)的FTP命令行客戶端的Linux工作站,發(fā)起到testbox2.slacksite.com(192.168.150.90),一個運行ProFTPd1.2.2RC2的Linux工作站。debugging(-d)選項用來在FTP客戶端顯示連接的詳細(xì)過程。紅色的文字是debugging信息,顯示的是發(fā)送到服務(wù)器的實際FTP命令和所產(chǎn)生的回應(yīng)信息。服務(wù)器的輸出信息用黑色字表示,用戶的輸入信息用粗體字表示。仔細(xì)考慮這個對話過程我們會發(fā)現(xiàn)一些有趣
6、的事情。我們可以看到當(dāng)PORT命令被提交時,它指定了客戶端(192.168.150.80)上的一個端口而不是服務(wù)器的。當(dāng)我們用被動FTP時我們會看到相反的現(xiàn)象。我們再來關(guān)注PORT命令的格式。就象你在下面的例子看到的一樣,它是一個由六個被逗號隔開的數(shù)字組成的序列。前四個表示IP地址,后兩個組成了用于數(shù)據(jù)連接的端口號。用第五個數(shù)乘以256再加上第六個數(shù)就得到了實際的端口號。下面例子中端口號就是((14*256)+178)=3762。我們可以用netstat來驗證這個端口信息。testbox1:{/home/p-t/slacker/public_html}%ftp-dtestbox2Conne
7、ctedtotestbox2.slacksite.com.220testbox2.slacksite.comFTPserverready.Name(testbox2:slacker):slacker--->USERslacker331Passwordrequiredforslacker.Password:TmpPass--->PASSXXXX230Userslackerloggedin.--->SYST215UNIXTy