计算机网络课程设计报告-客户端 FTP软件_第1页
计算机网络课程设计报告-客户端 FTP软件_第2页
计算机网络课程设计报告-客户端 FTP软件_第3页
计算机网络课程设计报告-客户端 FTP软件_第4页
计算机网络课程设计报告-客户端 FTP软件_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE1-课程设计报告2014—2015学年第一学期课程名称计算机网络设计题目客户端FTP软件目录绪言31.FTP介绍32.FTP的基本工作原理43.FTP的工作模式64.FTP的传输模式75.FTP开发环境及其工具介绍86.FTP客户端程序的设计与实现97.结束语15绪言目前,FTP服务在网络上已经成为一种广泛使用的服务了,它是建立在FTP协议上的一种用于在网络环境下进行文件传输的文件传输系统,几乎可以传输所有类型的文件,比如文本文件、声音文件和图像文件等等,这个文件传输系统由服务器端程序以及客户端程序共同组成,客户端程序提供用户操作界面并完成文件的上传和下载。在众多的网络应用当中,FTP有着十分重要的地位,在Internet当中资源是非常重要的,然而这些资源大多数都是放在FTP服务器中的,所以为了获得这些资源,我们必须使用FTP客户端软件。现如今网络上有许多FTP客户端类的软件,但是由于它们的界面复杂,操作繁琐,并不能被大多数用户接受,所以为了更好的利用网络资源,方便用户使用FTP,我想设计一种简便易用的FTP客户端。本文首先分析了FTP协议,FTP的基本工作原理等,然后介绍了如何来设计和实现一个简单的FTP客户端。使用这个FTP客户端,可以实现用户轻松的下载、上传网络资源。1.FTP介绍一般来说,用户联网的最重要的目的就是实现信息共享,文件传输便是信息共享非常重要的一个内容之一。在Internet早期,实现传输文件是一件很不容易的事情,我们知道Internet是一个十分复杂的计算机环境,有PC,有工作站,有MAC还有大型机,根据统计,连接在Internet上的计算机已经有上千万台,然而这些计算机可能会运行不同的操作系统,有运行Unix的服务器的,也有运行Dos、Windows的PC机的和运行MacOS的苹果机的等等,但是各种操作系统之间的文件交流问题,就需要我们建立一个统一的文件传输协议,这也就是所谓的FTP。基于不同操作系统有着不同的FTP应用程序,而所有的这些应用程序都遵守同一种协议,这样的话用户就可以把自己的文件传送给别人,或者是从其它的用户环境中获得到文件。与大多数的Internet服务一样,FTP也是一个客户机/服务器系统。用户可以通过一个支持FTP协议的客户机程序,连接到在远程主机上面的FTP服务器程序。用户可以通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并且将执行的结果返回到客户机上。举个例子说,用户发出一条命令,来要求服务器向用户传送某一个文件的拷贝,服务器就会响应这条命令,并且将指定文件送至用户的机器上。客户机程序代表着用户接收到这了个文件,会将其存放在用户目录中。在使用FTP时,用户经常会遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机将文件拷贝到自己的计算机上;"上传"文件就是将文件从自己的计算机上拷贝到远程主机上去。用Internet的语言来说,用户可以通过客户机程序向(从)远程主机上传(或者下载)文件。使用FTP的时候必须首先登录,在远程主机上面获得了相应的权限以后,才可以上传或着是下载文件。这也就是说,你要想同哪一台计算机传送文件,就必须要有那一台计算机的适当授权。换句话来说,除非是有用户ID和口令,否则就无法传送文件。这种情况显然违背了Internet的开放性,Internet上的FTP主机何止有千万,不可能去要求每个用户在每一台主机上都拥有一个帐号。匿名FTP就是为了解决这个问题而产生的。匿名FTP就是这样的一种机制,用户可以通过它连接到远程主机上去,并从上面下载文件,并且不需要成为其注册用户。系统的管理员建立了一个特殊的用户ID,名字为anonymous,Internet上的任何人在任何地方都可以使用这个用户ID。通过FTP程序可以通过连接匿名FTP主机的方式和连接普通FTP主机的方式差不多,只不过在要求提供用户标识ID时必须输入anonymous,该用户ID口令可以是任意的字符串。习惯上面,会用自己的E-mail地址作为口令,使得系统的维护程序能够记录下来谁在存取这些文件。2.FTP的基本工作原理网络环境里面的一项基本应用就是将文件从一台计算机中复制到另一台可能相距很远的计算机中。刚开始看起来,在两个主机之间传送文件是十分简单的事情。然而事实上往往非常困难。原因就是众多的计算机厂商研制出的文件系统多达数百种,而且差别很大。文件传送协议FTP只能提供文件传送的一些基本服务,它使用的是TCP可靠的运输服务。FTP的主要功能就是减少或消除在不同操作系统下处理文件的不兼容性。FTP使用客户服务器方式。一个FTP服务器进程可同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:一个主进程,负责接受新的请求:另外有若干个从属进程,负责处理单个请求。主进程的工作步骤如下:(1)打开熟知端口(端口号为21),使客户进程能够连接上。(2)等待客户进程发出连接请求。(3)启动从属进程来处理客户进程发出的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。(4)回到等待状态,继续接受其他客户进程发来的请求。主进程与从进程的处理是并发地进行。FTP的工作情况如下图所示。图中的椭圆表示在系统中运行的进程。图中的服务器端有两个从属进程:控制进程和数据传送进程。为简单起见,服务器端的主进程没有画上。在客户端除了控制进程和数据传送进程外,还有一个用户界面进程用来和用户接口。在进行文件传输时,FTP的客户和服务器之间要建立两个并行的TCP连接:“控制连接”和“数据连接”。控制连接在整个会话期间一直保持打开,FTP客户所发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件。实际用于传输文件的是“数据连接”。服务器端的控制进程在接收到FTP客户发送来的文件传输请求后就创建“数据传送进程”和“数据连接”,用来连接客户端和服务器端的数据传送进程。数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行。由于FTP使用一个分享的控制连接,所以FTP的控制信息都是带外传送的。当客户进程向服务器进程发出建立连接请求的时候,需要寻找连接服务器进程的熟知端口。同时还要告诉服务器进程自己的另一个端口号码,一遍建立数据传送连接。然后,服务器进程用自己传送数据的熟知端口与客户进程提供的端口号码建立数据传送连接。因为FTP使用两个不同的端口号,所以数据连接与控制连接就不会发生混乱。使用两个独立连接的好处就是使协议更加简单并且更容易实现,同时在传输文件的时候还可以利用控制连接FTP并不是对所有的数据传输都是最佳的。比如,在计算机A上运行的应用程序需要在远地计算机B的一个很大的文件末尾添加一行信息。如果使用FTP,则应该先将此文件从计算机B传送到计算机A,添加上这一行信息之后再用FTP将此文件传送到计算机B,来回传送这样大的文件比较花时间。而实际上这种传送也是不必要的,因为计算机A并没有使用该文件的内容。而网络文件系统NFS则采用另外一种思路。NFS会允许应用进程打开一个远地文件,并且能在该文件的某一个特定的位置开始读写数据。这样的话,NFS就可以使用户只复制一个大文件中的一个很小的片段,而不是需要复制整个大文件。3.FTP的工作模式FTP是基于TCP的服务,并不支持UDP。不同的是FTP使用2个端口,一个数据端以及一个命令端口。一般来说这两个端口是21(命令端口)以及20(数据端口)。但是由于FTP工作方式的不同,数据端口并不总是20。这也就是主动与被动FTP的最大不同之处。(一)主动FTP在主动模式下,客户端会从一个任意非特权端口N连接到FTP服务器的命令端口,即21端口。随后客户端开始监听端口N+1,发送FTP命令“portN+1”给FTP服务器。服务器接收到命令后,就会用其本地的FTP数据端口来连接客户端指定端口N+1,再进行数据传输。针对FTP服务器前面的防火墙来看,必须允许以下通讯才可以支持主动方式FTP:1.任意大于1024的端口到FTP服务器的21端口。(客户端初始化连接)2.FTP服务器21端口到大于1024的端口。(服务器响应客户端控制端口)3.FTP服务器20端口到大于1024的端口。(服务器端初始化数据连接到客户端数据端口)4.大于1024端口到FTP服务器20端口(客户端发送ACK响应到服务器数据端口)(二)被动FTP为解决服务器发起的客户的连接的问题,有人开发了一种不同的FTP连接方式。这也就是所谓的被动方式,或者是叫做PASV,只有当客户端通知服务器它处于被动模式时才会启用。在被动方式的FTP中,命令连接和数据连接都是由客户端发起的,这样就可以解决从服务器到客户端的数据端口的入方向的连接会被防火墙过滤掉的问题。在被动模式下,FTP库户端随机开启一个大于1024的端口N向服务器的21号端口发起了连接,同时会开启N+1号端口。然后就会向服务器发送PASV的命令,以通知服务器自己处于被动模式。当服务器收到命令后,就会开放一个大于1024的端口P进行监听,随后用PORTP命令来通知客户端,自己的数据端口是P。当客户端收到命令后,就会通过N+1号端口连接服务器的端口P,之后会在两个端口之间进行数据传输。对于服务器端的防火墙来说,必须允许以下通讯才能够支持被动方式的FTP:1.从任何大于1024端口到服务器21端口(客户端初始化连接)2.服务器21端口到任何大于1024端口(服务器响应到客户端控制端口的连接)3.从任何大于1024端口到服务器大于1024端口(客户端初始化数据连接到服务器指定任意端口)4.服务器大于1024端口到远程大于1024的端口(服务器发送ACK响应和数据到客户端数据端口)。4.FTP的传输模式FTP协议的任务是把文件从一台计算机传送到另一台计算机上,它与这两台计算机所在的位置、联接方式、甚至是否用相同的操作系统没有关系。假如两台计算机在用FTP协议对话,并可以访问Internet,你就能用FTP命令来传输文件。每种操作系统的使用上都有某一些细微得差别,但每种协议基本命令结构是相同的。FTP传输有两种方式:ASCII传输模式以及二进制数据传输模式。ASCII传输方式是假设用户正在拷贝的文件包含简单ASCII码文本,若远程机器运行的不是UNIX,当文件传输时FTP会自动调整文件的内容以便于将文件解释成另外那台计算机存储文件的格式。但是常有这种情况,用户正传输的文件包含的不是文本文件,可能是程序,数据库,字处理文件或压缩文件。在拷贝任何非文本文件前,用binary命令告诉FTP逐字拷贝,不对这些文件进行处理。在二进制传输中,保存文件的位序,以便原始和拷贝的是一一对应的。即使目的机器上包含位序列的文件是没意义。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,这个文件就不能执行。若你在ASCII方式下传输二进制文件,即使不需要也会转译。这就使传输变慢,也会损坏数据,使文件不能用。若你知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的。5.开发环境及其工具介绍Java是种简单的,跨平台的,面向对象的,分布式的,安全的,结构的中立,可移植的,性能很优异的多线程的动态语言。在一九九五年SUN公司推出Java语言之后,全世界的目光都被这种神奇的语言吸引。Java最初被命名为Oak,目标设定为家用电器等小型系统编程语言,以此解决电视机、电话、闹钟等家用电器的控制以及通讯问题。由于这些智能化家电市场需求没有所预期的高,Sun放弃了这项计划。然而就在Oak几近失败的时候,伴随着互联网的发展,Sun看到了Oak在计算机网络领域的广阔应用前景,就改造了Oak,并以“Java”的名称正式发布。Java编程语言的风格很接近C、C++语言。Java是一种纯的面向对象的程序设计语言,继承C++语言面向对象技术的核心,Java舍弃了C++语言中容易引起错误的指针、运算符重载、多重继承等等的特性,增加垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使程序员们不用再为内存管理而担忧。在JavaSE1.5版本中,Java又引入了泛型编程、类型安全的枚举、不定长参数和自动装/拆箱等等的语言特性。所以说Java不同于一般的编译执行计算机语言和解释执行计算机语言。这种平等和一致性并不仅限于Java开发工具。尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C++、COBOL、PHP等编程语言的插件已经可用,或预计将会推出。Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。基于Eclipse的应用程序的一个突出例子是IBMRationalSoftwareArchitect,它构成了IBMJava开发工具系列的基础Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具。Eclipse+JDK集成开发环境是Java开发的必备选择。6.FTP客户端程序的设计与实现使用SUN公司提供的FTP客户端类库。主要包括4个类:.TelnetInputS.TelnetOutputS.ftp.FtpC.ftp.FtpLoginException编写FtpBean类实现业务逻辑,包含一个FtpClient类的对象ftpClient。包含的方法如下:(1)连接服务器建立连接Stringconnect(Stringdir,Stringhostname,intport,Stringusername,Stringpasswd)使用ftpClient=newFtpClient(hostname,port);ftpClient.login(username,passwd);(2)获取文件名列表List<String>getFileNameList()使用InputStreamReaderisr=null;BufferedReaderbr=null;isr=newInputStreamReader(this.ftpCList(this.getDir()));br=newBufferedReader(isr);获取输入流来得到目录中的文件信息(3)断开服务器使用Stringclose()ftpClient.closeServer();实现(4)上传文件booleanuploadFile(StringlocalFile,StringtargetFileName)使用TelnetOutputStreamtos=null;RandomAccessFilesendFile=null;DataOutputStreamdos=null;try{Filefile=newFile(localFile);sendFile=newRandomAccessFile(file,"r");sendFile.seek(0);tos=this.ftpClient.put(targetFileName);dos=newDataOutputStream(tos);intch=0;while(sendFile.getFilePointer()<sendFile.length()){ch=sendFile.read();dos.write(ch);}获取文件输出流,读取数据并写入文件(5)下载文件booleandownloadFile(StringsrcFileName,StringtargetFileName)使用TelnetInputStreamtis=null;RandomAccessFilegetFile=null;booleanresult=true;try{Filefile=newFile(targetFileName);getFile=newRandomAccessFile(file,"rw");getFile.seek(0);tis=this.ftpClient.get(srcFileName);DataInputStreamdis=newDataInputStream(tis);intch=0;while(true){ch=dis.read();if(ch<0){break;}getFile.write(ch)}(6)给文件重命名booleanrenameFile(StringoldName,StringnewName)使用ftpClient.rename(oldName,newName);来

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论