網絡與信息安全實驗報告_第1頁
網絡與信息安全實驗報告_第2頁
網絡與信息安全實驗報告_第3頁
網絡與信息安全實驗報告_第4頁
網絡與信息安全實驗報告_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、目錄1 緒論21.1 研究背景21.2 主要工作22 相關知識介紹22.1 FTP 工作原理22.2 FTP工作模式32.3 FTP 傳輸模式42.3.1 ASCII傳輸方式52.3.2 二進制傳輸方式53 FTP客戶端的設計53.1設計目的及工具選擇53.1.1 設計目的53.1.2 設計工具53.2 客戶端主要模塊設計63.2.1 客戶端連接模塊63.2.2 上傳模塊83.2.3 下載模塊114 調試與操作說明154.1 運行方法154.2運行結果155 課程設計總結17參考文獻17FTP客戶端的設計與實現 FTP 是Internet 上用來傳送文件的協議。它是為了我們能夠在Interne

2、t 上互相傳送文件而制定的文件傳送標準,規(guī)定了Internet 上文件如何傳送。通過FTP 協議,我們就可以跟Internet 上的FTP 服務器進行文件的上傳或下載。本文以實現一個簡單易用的FTP 客戶端為目標,通過分析FTP 協議的基本工作原理和FTP 的數據傳輸原理,研究如何使用C+ 工具對FTP 客戶端進行設計,選擇C+來實現FTP 客戶端程序的上傳下載等主要功能, 并用相應軟件提供的一個支持可視化編程的開發(fā)環(huán)境,從而實現了對FTP 客戶端的實現。1 緒論1.1 研究背景FTP是Internet上最早也是最廣的應用,直到今天它仍是最重要和最基本的應用之一。用FTP將信息下載到本地是一件

3、十分普遍的事。也隨之出現了許多下載軟件。盡管遠程登錄(Telnet)提供了訪問遠程文件的極好方法,但怎么也比不上使用自己計算機中的文件方便。如果用戶想使用其它計算機上的文件,最理想的方法就是把它COPY到自己的計算機中,以便在本地計算機上操作。FTP正是完成這項工作的工具,你可以在任意一個經過文件傳輸協議(FTP)訪問的公共有效的聯機數據庫或文檔中找到你想要的任何東西。全世界現在已有1000多個(96年的數據)FTP文件服務器對所有INTERNET用戶開使用,用戶可以通過與Internet相連到遠程計算機,把自己需要的文件傳輸過來或是把自己的收集傳輸上去與他人共享。傳統(tǒng)的數據庫應用系統(tǒng)采用的是

4、客戶機/服務器(Client/Server)模式,有高度的交互性,高效的用戶界面等優(yōu)點1.2 主要工作通過客戶端可以實現文件的上傳和下載。其促進文件的共享(計算機程序或數據)、鼓勵間接或者隱式的使用遠程計算機、向用戶屏蔽不同主機中各種文件存儲系統(tǒng)的細節(jié)和可靠和高效的傳輸數據。2 相關知識介紹2.1 FTP 工作原理 FTP(File Transfer Protocol),是文件傳輸協議的簡稱。用于Internet上的控制文件的雙向傳輸。同時,它也是一個應用程序。用戶可以通過它把自己機器與世界各地所有運FTP協議的服務器相連,訪問服務器上的資源和信息。FTP協議在TCP/IP協議棧中的位置如表1

5、: 表1 TCP/IP協議棧HTTP FTP TELN SMTP DNS TFTP NMP應用層TCP UDP傳輸層IP互聯網絡層X25 ISDN LAN WLAN FDDI ATM網絡接口層當啟動FTP從遠程計算機拷貝文件時,事實上啟動了兩個程序:一個本地機器上的FTP客戶端程序,它向FTP服務器提出拷貝文件的請求。另一個是啟動在遠程計算機的上的FTP服務器程序,它響應請求把你指定的文件傳送到你的計算機中。FTP采用“客戶端/服務器”方式,用戶要在自己的本地計算機上安裝FTP客戶端程序。從根本上說,FTP協議就是在網絡中各種不同的計算機之間按照TCP/IP協議來傳輸文件。FTP協議采用客戶端

6、/服務器(Client/Sever)模式,由FTP客戶端程序和FTP服務器端程序組成。使用時,先啟動FTP客戶端程序與遠程主機建立連接,然后向遠程主機發(fā)出傳輸命令,遠程主機在收到命令后就給予響應,并執(zhí)行正確的命令。但是FTP有一個根本的限制,那就是,如果用戶在某個主機上沒有注冊獲得授權,即沒有用戶名和口令,就不能與該主機進行文件傳輸。但匿名FTP服務器除外,它能夠使用戶與遠程主機建立連接并以匿名身份從遠程主機上拷貝文件,而不必是該遠程主機的注冊用戶。用戶使用特殊的用戶名“Anonymous”或“guest”就可有限制地訪問遠程主機上公開的文件?,F在許多系統(tǒng)要求用戶將Emai1地址作為口令,以便

7、更好地對訪問者進行跟綜。出于安全的目的,大部分匿名FTP主機一般只允許遠程用戶下載文件,而不允許上載文件。也就是說,用戶只能從匿名FTP主機拷貝其需要的文件而不能把文件拷貝到匿名FTP主機。另外,匿名FTP主機還采用了其他一些保護措施以保護自己的文件不至于被用戶修改和刪除,并防止計算機病毒的侵入。匿名FTP一直是Internet上獲取信息資源的最主要方式,在Internet成千上萬的匿名FTP主機中存儲著無以計數的文件,這些文件包含了各種各樣的信息、數據和軟件。人們只要知道特定信息資源的主機地址,就可以用匿名FTP登陸。2.2 FTP工作模式FTP 采用C/S(客戶端/服務器)模式進行通信,但

8、與其他的C/S 模式網絡通信協議又有一個很大的區(qū)別。通常在進行HTTP 通信或是TELNET 通信的時候,只需要一個端口進行通信。即客戶端只需要連接一個端口進行數據通信。如TELNET 的默認端口是23,用戶從頭到尾都只需使用這個端口。但是FTP 通信除了有一個默認端口21 之外,還需要其他的端口。其中默認端口(21)主要進行控制連接,進行命令協議和服務器端的響應碼的傳輸;另外一個非標準端口主要進行數據傳遞,如文件的上載、下載等。至于非標準端口的產生則要根據用戶選擇的連接模式而定:如果客戶選擇的是主動模式(PORT),則需要用戶端提供給服務器一個IP 地址和一個非標準端口;而如果用戶采用被動模

9、式(PASV),則服務器端需要提供給客戶端一個IP 地址和一個非標準端口。下表是幾個著名的TCP 端口號:表2 TCP 端口號TCP 端口號關鍵字描述20 FTP-DATA文件傳輸協議數據21FTP文件傳輸協議控制23TELENET遠程登錄協議25SMTP簡單郵件傳輸協議53DOMAIN域名服務器80HTTP超文本傳輸協議110POP3郵局協議119NNTP新聞傳送協議FTP 中字節(jié)大小有兩個:邏輯字節(jié)大小和用于傳輸的字節(jié)大小。后者通常是8 位,而前者可不一定是多少了。傳輸字節(jié)不必等于邏輯字節(jié)大小,也不必對數據結構進行解釋??刂七B接是建立在USER-PIT 和SERVER-PI 之間用于交換命

10、令與應答的通信鏈路。數據連接是傳輸數據的全雙工連接,傳輸數據可以發(fā)生在服務器DTP 和用戶DTP之間也可以發(fā)生在兩個服務器DTP 之間,FTP 可以傳輸非連續(xù)的文件,這些文件的一部分稱為頁。服務器DTP 代表一種傳輸過程,它通常處于“主動”狀態(tài),它和偵聽端口建立數據連接,它還可以為傳輸和存儲設置參數,并根據PI 的指令傳輸數據。當然,DTP 也可以轉入“被動”狀態(tài)。服務器FTP 進程,它是和用戶FTP 進程一起工作的,它由PI 和DTP 組成。在開始階段,標準FTP 命令由用戶PI 產生并通過控制連接傳送到服務器進程。服務器PI 向用戶PI 返回標準應答。FTP 命令指定數據連接參數和文件系統(tǒng)

11、操作。用戶DTP 在特定數據端口偵聽,服務器開始數據連接并以指定的參數開始數據傳輸。數據端口不必在開始FTP 命令的機器上,但用戶或用戶FTP 進程必須確定它在指定的數據端口上偵聽.這個數據連接是全雙工的。2.3 FTP 傳輸模式FTP 協議的任務是從一臺計算機將文件傳送到另一臺計算機,它與這兩臺計算機所處的位置、聯接的方式、甚至是是否使用相同的操作系統(tǒng)無關。假設兩臺計算機通過ftp 協議對話,并且能訪問Internet, 你可以用ftp 命令來傳輸文件。每種操作系統(tǒng)使用上有某一些細微差別,但是每種協議基本的命令結構是相同的。FTP的傳輸有兩種方式:ASCII傳輸模式和二進制數據傳輸模式。2.

12、3.1 ASCII傳輸方式假定用戶正在拷貝的文件包含的簡單ASCII碼文本,如果在遠程機器上運行的不是UNIX,當文件傳輸時ftp通常會自動地調整文件的內容以便于把文件解釋成另外那臺計算機存儲文本文件的格式。但是常常有這樣的情況,用戶正在傳輸的文件包含的不是文本文件,它們可能是程序,數據庫,字處理文件或者壓縮文件(盡管字處理文件包含的大部分是文本,其中也包含有指示頁尺寸,字庫等信息的非打印字符)。在拷貝任何非文本文件之前,用binary 命令告訴ftp逐字拷貝,不要對這些文件進行處理。2.3.2 二進制傳輸方式在二進制傳輸中,保存文件的位序,以便原始和拷貝的是逐位一一對應的。即使目的地機器上包

13、含位序列的文件是沒意義的。例如,macintosh以二進制方式傳送可執(zhí)行文件到Windows系統(tǒng),在對方系統(tǒng)上,此文件不能執(zhí)行。如果你在ASCII方式下傳輸二進制文件,即使不需要也仍會轉譯。這會使傳輸稍微變慢,也會損壞數據,使文件變得不能用。 3 FTP客戶端的設計3.1設計目的及工具選擇3.1.1 設計目的 FTP 早已應用在網絡的各個方面,比如我們在訪問網絡上的資源時,經常會遇到需要連接FTP 服務器來下載,或者你制作了一個網站,想要將其上傳至服務器,讓大家能夠訪問它,這個時候就會用到FTP 客戶端。雖然平時使用windows 自帶的IE 瀏覽器即可實現對FTP 服務器的訪問,但是IE 只

14、是個很粗糙的FTP 客戶端。IE 瀏覽器在6.0 以下的版本不支持PASV 方式訪問服務器, 而且IE 瀏覽器在登錄FTP 服務器的時候,無法查看返回的信息,在出錯的時候,無法找到錯誤的原因,因此在使用上很不方便?,F在大多數的FTP 客戶端軟件都是收費版的,而且以英文版居多,使用上操作很復雜,目前流行的有CoreFtp、AceFtp 、Ftp Voyager 等,但是大多數用戶并不習慣使用這些軟件。本文所設計的FTP 客戶端則適合大多數用戶使用,界面設計的很簡單,使用戶可以一目了然,而且具備FTP 客戶端的基本功能,可以作為下載、上傳文件的工具來使用。3.1.2 設計工具 程序設計中用到的主要

15、工具就是VC+6.0開發(fā)平臺,EasyFZS FTP服務器 3.2 客戶端主要模塊設計3.2.1 客戶端連接模塊運行客戶端后,首先是連接服務器,需要輸入服務器IP 地址,用戶名和密碼,然后點擊查詢,觀察是否連接成功,若成功則顯示遠程文件的列表。 若連接失敗,則拋出異常,彈出對話框顯示出錯誤,可知如何修改,然后重新輸入服務器IP 地址或用戶名或密碼,直到連接上服務器。下圖為客戶端連接流程圖:查詢服務器判斷在顯示目錄文件列表顯示文件進行錯誤處理用戶輸入服務器地址及用戶名和密碼是否 圖3-1 客戶端連接流程圖主要代碼:在OnInitDialog()函數中添加成員變量的初始化代碼,對服務器名、登錄用戶

16、名和登錄口令的控件變量賦初值:BOOL CFTP14Dlg:OnInitDialog()/前面是MFC應用程序向導和類向導自動生成的代碼/ TODO: Add extra initialization herem_strFtp=_T();/初始化服務器域名m_strName=_T();/初始化登錄用戶名m_strPwd=_T();/初始化登錄口令UpdateData(FALSE);/更新界面return TRUE;/return TRUE unless you set the focus to a control 當用戶點擊查詢按鈕,執(zhí)行此函數OnQuery(),代碼如下:void CFTP1

17、4Dlg:OnQuery() CInternetSession* pSession; /定義會話對象指針變量CFtpConnection* pConnection; /定義連接對象指針變量CFtpFileFind* pFileFind; /定義文件查詢對象指針變量CString strFileName;BOOL bContinue;pConnection=NULL; /初始化pFileFind=NULL;UpdateData(TRUE); / 獲得用戶的當前輸入(服務器名,用戶名和口令)while(m_listFile.GetCount()!=0) m_listFile.DeleteStrin

18、g(0); / 清除列表框的內容pSession=new CInternetSession( / 創(chuàng)建Internet會話類對象AfxGetAppName(),1,PRE_CONFIG_INTERNET_ACCESS);try / 試圖建立與指定FTP服務器的連接pConnection=pSession-GetFtpConnection(m_strFtp,m_strName,m_strPwd); catch (CInternetException* e) e-Delete(); / 無法建立連接,進行錯誤處理pConnection=NULL;if (pConnection!=NULL)/ 創(chuàng)建

19、CFtpFileFind對象,向構造函數傳遞CFtpConnection對象的指針pFileFind=new CFtpFileFind(pConnection);bContinue=pFileFind-FindFile(*); / 查找服務器上當前目錄的任意文件if (!bContinue) / 如果一個文件都找不到,結束查找pFileFind-Close();pFileFind=NULL;while (bContinue) / 找到了第一個文件,繼續(xù)找其它的文件strFileName=pFileFind-GetFileName(); / 獲得找到的文件的文件名/ 如果找到的是否目錄,將目錄名

20、放在括弧中if (pFileFind-IsDirectory() strFileName=+strFileName+;/ 將找到的文件或目錄名顯示在列表框中。m_listFile.AddString(strFileName);bContinue=pFileFind-FindNextFile(); / 查找下一個文件if (pFileFind!=NULL)pFileFind-Close(); / 結束查詢pFileFind=NULL;delete pFileFind; / 刪除文件查詢對象if (pConnection!=NULL)pConnection-Close();delete pConn

21、ection; / 刪除FTP連接對象delete pSession; / 刪除Internet 會話對象 3.2.2 上傳模塊 用戶在連接上服務器后,可以在本地列表中選擇需要上傳的文件,并指定上傳位置,將本機上的文件上傳至FTP 服務器。 不能選擇文件夾,只能選擇文件。若上傳失敗,則拋出異常;如果成功上傳,則提示上傳成功。 圖為上傳子模塊流程圖:點擊上傳按鈕彈出文件選擇對話框選擇需要上傳的文件判斷是否彈出文本框顯示上傳成功彈出文本框顯示上傳失敗圖3-2上傳模塊流程圖上傳模塊的主要代碼為:void CFTP14Dlg:OnUpload() /獲得當前輸入UpdateData(TRUE);/禁用

22、用于輸入的文本框控件m_editFtp.EnableWindow(FALSE); /服務器域名輸入文本框m_editName.EnableWindow(FALSE); /登錄客戶名輸入文本框m_editPwd.EnableWindow(FALSE); /口令輸入文本框m_staFtp.EnableWindow(FALSE);m_staName.EnableWindow(FALSE);m_staPwd.EnableWindow(FALSE);/禁用查詢按鈕m_btnQuery.EnableWindow(FALSE);CString strSourceName;CString strDestNam

23、e;CFileDialog dlg(TRUE,*.*); /定義文本對話框對象變量if (dlg.DoModal()=IDOK)/獲得待上傳的本地機文件路徑和文件名strSourceName=dlg.GetPathName();strDestName=dlg.GetFileName();/調用Upload函數上傳文件if (Upload (strSourceName,strDestName)AfxMessageBox(上傳成功!,MB_OK|MB_ICONINFORMATION);elseAfxMessageBox(上傳失敗!,MB_OK|MB_ICONSTOP); else /文件選擇有錯誤

24、AfxMessageBox(請選擇文件!,MB_OK|MB_ICONSTOP);/激活查詢按鈕m_btnQuery.EnableWindow(TRUE);/激活用于輸入的文本框控件m_editFtp.EnableWindow(TRUE);m_editName.EnableWindow(TRUE);m_editPwd.EnableWindow(TRUE);m_staFtp.EnableWindow(TRUE);m_staName.EnableWindow(TRUE);m_staPwd.EnableWindow(TRUE); BOOL CFTP14Dlg:Upload(CString strSNa

25、me, CString strDName) CInternetSession* pSession;CFtpConnection* pConnection;pConnection=NULL;/創(chuàng)建Internet會話pSession=new CInternetSession(AfxGetAppName(), 1,PRE_CONFIG_INTERNET_ACCESS);try/建立FTP連接pConnection=pSession-GetFtpConnection(m_strFtp,m_strName, m_strPwd); catch (CInternetException* e) /錯誤處理e

26、-Delete();pConnection=NULL;return FALSE; if (pConnection!=NULL) /上傳文件if (!pConnection-PutFile(strSName,strDName) /上傳文件錯誤pConnection-Close();delete pConnection;delete pSession;return FALSE; /清除對象if (pConnection!=NULL) pConnection-Close();delete pConnection; delete pSession;return TRUE; 3.2.3 下載模塊當用戶在

27、服務器文件列表中選擇想要下載的文件后,選擇需要下載文件在本機上的存儲位置,設置上傳模式為被動模式 ;將服務器上的文件下載至本機,如果成功下載,則提示下載成功,若失敗則拋出異常,此過程可連續(xù)進行直到想退出。下圖為下載子模塊流程圖: 選擇要下載的文件點擊下載按鈕命名文件名及文件類型彈出文本框顯示下載成功彈出文本框顯示下載失敗下載文件是否成功選擇文件在本機存儲位置是否 圖3-2 下載模塊流程圖下載模塊的主要代碼: void CFTP14Dlg:OnDownload() /獲得當前輸入UpdateData(TRUE);int nSel=m_listFile.GetCurSel();CString st

28、rSourceName;/獲得用戶在列表框中的選擇nSel=m_listFile.GetCurSel();m_listFile.GetText(nSel,strSourceName);if (strSourceName.GetAt(0)!= ) /選擇的是文件CString strDestName;CFileDialog dlg(FALSE,*.*); /定義了一個文件對話框對象變量if (dlg.DoModal()=IDOK) /激活文件對話框 /獲得下載文件在本地機上存儲的路徑和名稱strDestName=dlg.GetPathName();/調用函數下載文件if (Download (s

29、trSourceName,strDestName)AfxMessageBox(下載成功!,MB_OK|MB_ICONINFORMATION);elseAfxMessageBox(下載失??!,MB_OK|MB_ICONSTOP); else AfxMessageBox(請寫入文件名!,MB_OK|MB_ICONSTOP); else /選擇的是目錄AfxMessageBox(不能下載目錄!n請重選!,MB_OK|MB_ICONSTOP);/禁用下載按鈕m_btnDownload.EnableWindow(FALSE);/激活查詢和上傳按鈕m_btnUpload.EnableWindow(TRUE

30、);m_btnQuery.EnableWindow(TRUE);/激活用來輸入的文本和編輯框控件m_editFtp.EnableWindow(TRUE);m_editName.EnableWindow(TRUE);m_editPwd.EnableWindow(TRUE);m_staFtp.EnableWindow(TRUE);m_staName.EnableWindow(TRUE);m_staPwd.EnableWindow(TRUE); BOOL CFTP14Dlg:Download(CString strSName, CString strDName) CInternetSession* pSession; /定義會話對象變量指針CFtpConnection* pConnection; /定義連接對象變量指針pConnection=NULL;/創(chuàng)建Internet會話對象pSession=new CInternetSession( AfxGetAppName(), 1,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論