ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:68.84KB ,
资源ID:26148265      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26148265.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(网络与信息安全实验报告.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

网络与信息安全实验报告.docx

1、网络与信息安全实验报告FTP客户端的设计与实现 FTP 是Internet 上用来传送文件的协议。它是为了我们能够在Internet 上互相传送文件而制定的文件传送标准,规定了Internet 上文件如何传送。通过FTP 协议,我们就可以跟Internet 上的FTP 服务器进行文件的上传或下载。本文以实现一个简单易用的FTP 客户端为目标,通过分析FTP 协议的基本工作原理和FTP 的数据传输原理,研究如何使用C+ 工具对FTP 客户端进行设计,选择C+来实现FTP 客户端程序的上传下载等主要功能, 并用相应软件提供的一个支持可视化编程的开发环境,从而实现了对FTP 客户端的实现。1 绪论1

2、.1 研究背景FTP是Internet上最早也是最广的应用,直到今天它仍是最重要和最基本的应用之一.用FTP将信息下载到本地是一件十分普遍的事。也随之出现了许多下载软件。尽管远程登录(Telnet)提供了访问远程文件的极好方法,但怎么也比不上使用自己计算机中的文件方便.如果用户想使用其它计算机上的文件,最理想的方法就是把它COPY到自己的计算机中,以便在本地计算机上操作.FTP正是完成这项工作的工具,你可以在任意一个经过文件传输协议(FTP)访问的公共有效的联机数据库或文档中找到你想要的任何东西。全世界现在已有1000多个(96年的数据)FTP文件服务器对所有INTERNET用户开使用,用户可

3、以通过与Internet相连到远程计算机,把自己需要的文件传输过来或是把自己的收集传输上去与他人共享。传统的数据库应用系统采用的是客户机/服务器(Client/Server)模式,有高度的交互性,高效的用户界面等优点1。2 主要工作通过客户端可以实现文件的上传和下载。其促进文件的共享(计算机程序或数据)、鼓励间接或者隐式的使用远程计算机、向用户屏蔽不同主机中各种文件存储系统的细节和可靠和高效的传输数据。2 相关知识介绍2.1 FTP 工作原理 FTP(File Transfer Protocol),是文件传输协议的简称。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序。用户

4、可以通过它把自己机器与世界各地所有运FTP协议的服务器相连,访问服务器上的资源和信息.FTP协议在TCP/IP协议栈中的位置如表1: 表1 TCP/IP协议栈HTTP FTP TELN SMTP DNS TFTP NMP应用层TCP UDP传输层IP互联网络层X25 ISDN LAN WLAN FDDI ATM网络接口层当启动FTP从远程计算机拷贝文件时,事实上启动了两个程序:一个本地机器上的FTP客户端程序,它向FTP服务器提出拷贝文件的请求。另一个是启动在远程计算机的上的FTP服务器程序,它响应请求把你指定的文件传送到你的计算机中。FTP采用“客户端/服务器”方式,用户要在自己的本地计算机

5、上安装FTP客户端程序.从根本上说,FTP协议就是在网络中各种不同的计算机之间按照TCP/IP协议来传输文件。FTP协议采用客户端/服务器(Client/Sever)模式,由FTP客户端程序和FTP服务器端程序组成.使用时,先启动FTP客户端程序与远程主机建立连接,然后向远程主机发出传输命令,远程主机在收到命令后就给予响应,并执行正确的命令。但是FTP有一个根本的限制,那就是,如果用户在某个主机上没有注册获得授权,即没有用户名和口令,就不能与该主机进行文件传输。但匿名FTP服务器除外,它能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户.用户使用特殊的用

6、户名“Anonymous或“guest”就可有限制地访问远程主机上公开的文件。现在许多系统要求用户将Emai1地址作为口令,以便更好地对访问者进行跟综。出于安全的目的,大部分匿名FTP主机一般只允许远程用户下载文件,而不允许上载文件。也就是说,用户只能从匿名FTP主机拷贝其需要的文件而不能把文件拷贝到匿名FTP主机。另外,匿名FTP主机还采用了其他一些保护措施以保护自己的文件不至于被用户修改和删除,并防止计算机病毒的侵入.匿名FTP一直是Internet上获取信息资源的最主要方式,在Internet成千上万的匿名FTP主机中存储着无以计数的文件,这些文件包含了各种各样的信息、数据和软件。人们只

7、要知道特定信息资源的主机地址,就可以用匿名FTP登陆。2。2 FTP工作模式FTP 采用C/S(客户端/服务器)模式进行通信,但与其他的C/S 模式网络通信协议又有一个很大的区别。通常在进行HTTP 通信或是TELNET 通信的时候,只需要一个端口进行通信.即客户端只需要连接一个端口进行数据通信。如TELNET 的默认端口是23,用户从头到尾都只需使用这个端口。但是FTP 通信除了有一个默认端口21 之外,还需要其他的端口。其中默认端口(21)主要进行控制连接,进行命令协议和服务器端的响应码的传输;另外一个非标准端口主要进行数据传递,如文件的上载、下载等。至于非标准端口的产生则要根据用户选择的

8、连接模式而定:如果客户选择的是主动模式(PORT),则需要用户端提供给服务器一个IP 地址和一个非标准端口;而如果用户采用被动模式(PASV),则服务器端需要提供给客户端一个IP 地址和一个非标准端口。下表是几个著名的TCP 端口号:表2 TCP 端口号TCP 端口号关键字描述20 FTP-DATA文件传输协议数据21FTP文件传输协议控制23TELENET远程登录协议25SMTP简单邮件传输协议53DOMAIN域名服务器80HTTP超文本传输协议110POP3邮局协议119NNTP新闻传送协议FTP 中字节大小有两个:逻辑字节大小和用于传输的字节大小。后者通常是8 位,而前者可不一定是多少了

9、。传输字节不必等于逻辑字节大小,也不必对数据结构进行解释。控制连接是建立在USER-PIT 和SERVERPI 之间用于交换命令与应答的通信链路。数据连接是传输数据的全双工连接,传输数据可以发生在服务器DTP 和用户DTP之间也可以发生在两个服务器DTP 之间,FTP 可以传输非连续的文件,这些文件的一部分称为页。服务器DTP 代表一种传输过程,它通常处于“主动”状态,它和侦听端口建立数据连接,它还可以为传输和存储设置参数,并根据PI 的指令传输数据。当然,DTP 也可以转入“被动”状态。服务器FTP 进程,它是和用户FTP 进程一起工作的,它由PI 和DTP 组成。在开始阶段,标准FTP 命

10、令由用户PI 产生并通过控制连接传送到服务器进程.服务器PI 向用户PI 返回标准应答.FTP 命令指定数据连接参数和文件系统操作.用户DTP 在特定数据端口侦听,服务器开始数据连接并以指定的参数开始数据传输.数据端口不必在开始FTP 命令的机器上,但用户或用户FTP 进程必须确定它在指定的数据端口上侦听。这个数据连接是全双工的.2.3 FTP 传输模式FTP 协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关.假设两台计算机通过ftp 协议对话,并且能访问Internet, 你可以用ftp 命令来传输文件。每种操作系统使

11、用上有某一些细微差别,但是每种协议基本的命令结构是相同的。FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。2.3.1 ASCII传输方式假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝,不要对这

12、些文件进行处理。2。3.2 二进制传输方式在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的.例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。如果你在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢,也会损坏数据,使文件变得不能用。3 FTP客户端的设计3.1设计目的及工具选择3。1。1 设计目的 FTP 早已应用在网络的各个方面,比如我们在访问网络上的资源时,经常会遇到需要连接FTP 服务器来下载,或者你制作了一个网站,想要将其上传至服务器,让大家能够访问它

13、,这个时候就会用到FTP 客户端。虽然平时使用windows 自带的IE 浏览器即可实现对FTP 服务器的访问,但是IE 只是个很粗糙的FTP 客户端。IE 浏览器在6.0 以下的版本不支持PASV 方式访问服务器, 而且IE 浏览器在登录FTP 服务器的时候,无法查看返回的信息,在出错的时候,无法找到错误的原因,因此在使用上很不方便。现在大多数的FTP 客户端软件都是收费版的,而且以英文版居多,使用上操作很复杂,目前流行的有CoreFtp、AceFtp 、Ftp Voyager 等,但是大多数用户并不习惯使用这些软件。本文所设计的FTP 客户端则适合大多数用户使用,界面设计的很简单,使用户可

14、以一目了然,而且具备FTP 客户端的基本功能,可以作为下载、上传文件的工具来使用。3。1.2 设计工具 程序设计中用到的主要工具就是VC+6。0开发平台,EasyFZS FTP服务器3。2 客户端主要模块设计3。2.1 客户端连接模块运行客户端后,首先是连接服务器,需要输入服务器IP 地址,用户名和密码,然后点击查询,观察是否连接成功,若成功则显示远程文件的列表。 若连接失败,则抛出异常,弹出对话框显示出错误,可知如何修改,然后重新输入服务器IP 地址或用户名或密码,直到连接上服务器。下图为客户端连接流程图: 图31 客户端连接流程图主要代码:在OnInitDialog()函数中添加成员变量的

15、初始化代码,对服务器名、登录用户名和登录口令的控件变量赋初值:BOOL CFTP14Dlg:OnInitDialog()/前面是MFC应用程序向导和类向导自动生成的代码 / TODO: Add extra initialization here m_strFtp=_T(”); /初始化服务器域名 m_strName=_T(”); /初始化登录用户名 m_strPwd=_T(”); /初始化登录口令 UpdateData(FALSE); /更新界面 return TRUE; /return TRUE unless you set the focus to a control 当用户点击查询按钮,

16、执行此函数OnQuery(),代码如下:void CFTP14Dlg::OnQuery() CInternetSession pSession; /定义会话对象指针变量 CFtpConnection* pConnection; /定义连接对象指针变量 CFtpFileFind* pFileFind; /定义文件查询对象指针变量 CString strFileName; BOOL bContinue; pConnection=NULL; /初始化 pFileFind=NULL; UpdateData(TRUE); / 获得用户的当前输入(服务器名,用户名和口令) while(m_listFile

17、.GetCount()!=0) m_listFile.DeleteString(0); / 清除列表框的内容 pSession=new CInternetSession( / 创建Internet会话类对象 AfxGetAppName(),1,PRE_CONFIG_INTERNET_ACCESS); try / 试图建立与指定FTP服务器的连接 pConnection= pSessionGetFtpConnection(m_strFtp,m_strName,m_strPwd); catch (CInternetException* e) e-Delete(); / 无法建立连接,进行错误处理

18、pConnection=NULL; if (pConnection!=NULL) / 创建CFtpFileFind对象,向构造函数传递CFtpConnection对象的指针 pFileFind=new CFtpFileFind(pConnection); bContinue=pFileFind-FindFile(”); / 查找服务器上当前目录的任意文件 if (!bContinue) / 如果一个文件都找不到,结束查找 pFileFind-Close(); pFileFind=NULL; while (bContinue) / 找到了第一个文件,继续找其它的文件 strFileName=pF

19、ileFind-GetFileName(); / 获得找到的文件的文件名 / 如果找到的是否目录,将目录名放在括弧中 if (pFileFindIsDirectory()) strFileName=+strFileName+”; / 将找到的文件或目录名显示在列表框中. m_listFile。AddString(strFileName); bContinue=pFileFind-FindNextFile(); / 查找下一个文件 if (pFileFind!=NULL) pFileFind-Close(); / 结束查询 pFileFind=NULL; delete pFileFind; /

20、删除文件查询对象 if (pConnection!=NULL) pConnectionClose(); delete pConnection; / 删除FTP连接对象 delete pSession; / 删除Internet 会话对象 3。2.2 上传模块 用户在连接上服务器后,可以在本地列表中选择需要上传的文件,并指定上传位置,将本机上的文件上传至FTP 服务器. 不能选择文件夹,只能选择文件。若上传失败,则抛出异常;如果成功上传,则提示上传成功。 图为上传子模块流程图:图3-2上传模块流程图上传模块的主要代码为:void CFTP14Dlg:OnUpload() /获得当前输入 Upda

21、teData(TRUE); /禁用用于输入的文本框控件 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 strSou

22、rceName; CString strDestName; CFileDialog dlg(TRUE,”,*.*”); /定义文本对话框对象变量 if (dlg。DoModal()=IDOK) /获得待上传的本地机文件路径和文件名 strSourceName=dlg。GetPathName(); strDestName=dlg。GetFileName(); /调用Upload函数上传文件 if (Upload (strSourceName,strDestName) AfxMessageBox(”上传成功!”,MB_OKMB_ICONINFORMATION); else AfxMessageBo

23、x(”上传失败!”,MB_OK|MB_ICONSTOP); else /文件选择有错误 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.E

24、nableWindow(TRUE); BOOL CFTP14Dlg:Upload(CString strSName, CString strDName) CInternetSession* pSession; CFtpConnection pConnection; pConnection=NULL; /创建Internet会话 pSession=new CInternetSession( AfxGetAppName(), 1, PRE_CONFIG_INTERNET_ACCESS); try /建立FTP连接 pConnection=pSessionGetFtpConnection( m_st

25、rFtp, m_strName, m_strPwd); catch (CInternetException* e) /错误处理 eDelete(); pConnection=NULL; return FALSE; if (pConnection!=NULL) /上传文件 if (!pConnectionPutFile(strSName,strDName)) /上传文件错误 pConnectionClose(); delete pConnection; delete pSession; return FALSE; /清除对象 if (pConnection!=NULL) pConnectionC

26、lose(); delete pConnection; delete pSession; return TRUE; 3。2。3 下载模块当用户在服务器文件列表中选择想要下载的文件后,选择需要下载文件在本机上的存储位置,设置上传模式为被动模式 ;将服务器上的文件下载至本机,如果成功下载,则提示下载成功,若失败则抛出异常,此过程可连续进行直到想退出。下图为下载子模块流程图: 图3-2 下载模块流程图下载模块的主要代码: void CFTP14Dlg::OnDownload() /获得当前输入 UpdateData(TRUE); int nSel=m_listFile。GetCurSel(); CS

27、tring strSourceName; /获得用户在列表框中的选择 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(); /调用函数

28、下载文件 if (Download (strSourceName,strDestName)) AfxMessageBox(”下载成功!”,MB_OK|MB_ICONINFORMATION); else AfxMessageBox(”下载失败!,MB_OKMB_ICONSTOP); else AfxMessageBox(”请写入文件名!”,MB_OK|MB_ICONSTOP); else /选择的是目录 AfxMessageBox(”不能下载目录!n请重选!”,MB_OK|MB_ICONSTOP); /禁用下载按钮 m_btnDownload.EnableWindow(FALSE); /激活查询

29、和上传按钮 m_btnUpload.EnableWindow(TRUE); 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 st

30、rSName, CString strDName) CInternetSession pSession; /定义会话对象变量指针 CFtpConnection* pConnection; /定义连接对象变量指针 pConnection=NULL; /创建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-Delete(); pConnection=NULL; return FALSE; if (pConnec

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1