《计算机网络课程设计报告--客户端 FTP软件.docx》由会员分享,可在线阅读,更多相关《计算机网络课程设计报告--客户端 FTP软件.docx(15页珍藏版)》请在优知文库上搜索。
1、课程设计报告20142015学年第一学期课程名称计算机网络设计题目客户端FTP软件目录绪言3LFTP介绍32. FTP的基本工作原理43. FTP的工作模式64. FTP的传输模式5. FTP开发环境及其工具介绍86. FTP客户端程序的设计与实现97. 结束语15绪言目前,FTP服务在网络上已经成为一种广泛使用的服务了,它是建立在FrP协议上的一种用于在网络环境下进行文件传输的文件传输系统,几乎可以传输所有类型的文件,比如文本文件、声音文件和图像文件等等,这个文件传输系统由服务器端程序以及客户端程序共同组成,客户端程序提供用户操作界面并完成文件的上传和下载。在众多的网络应用当中,FTP有着十
2、分重要的地位,在IInernet当中资源是非常重要的,然而这些资源大多数都是放在FTP服务器中的,所以为了获得这些资源,我们必须使用FTP客户端软件。现如今网络上有许多FTP客户端类的软件,但是由于它们的界面复杂,操作繁琐,并不能被大多数用户接受,所以为了更好的利用网络资源,方便用户使用FTP,我想设计一种简便易用的FTP客户端。本文首先分析了FTP协议,FTP的基本工作原理等,然后介绍了如何来设计和实现一个简单的FTP客户端。使用这个FTP客户端,可以实现用户轻松的下载、上传网络资源。LFTP介绍一般来说,用户联网的最重要的目的就是实现信息共享,文件传输便是信息共享非常重要的一个内容之一。在
3、Internet早期,实现传输文件是一件很不容易的事情,我们知道Internet是一个十分复杂的计算机环境,有PC,有工作站,有MAC还有大型机,根据统计,连接在Internel上的计算机已经有上千万台,然而这些计算机可能会运行不同的操作系统,有运行UniX的服务器的,也有运行Dos.Windows的PC机的和运行MacOS的苹果机的等等,但是各种操作系统之间的文件交流问题,就需要我们建立一个统一的文件传输协议,这也就是所谓的FTPo基于不同操作系统有着不同的FTP应用程序,而所有的这些应用程序都遵守同一种协议,这样的话用户就可以把自己的文件传送给别人,或者是从其它的用户环境中获得到文件。与大
4、多数的Internet服务一样,FTP也是一个客户机/服务器系统。用户可以通过一个支持FTP协议的客户机程序,连接到在远程主机上面的FTP服务器程序。用户可以通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并且将执行的结果返回到客户机上。举个例子说,用户发出一条命令,来要求服务器向用户传送某一个文件的拷贝,服务器就会响应这条命令,并且将指定文件送至用户的机器上。客户机程序代表着用户接收到这了个文件,会将其存放在用户目录中。在使用FTP时,用户经常会遇到两个概念:“下载(DOWnIOad)和“上传”(UPload).”下载”文件就是从远程主机将文件拷贝到自己的计算机上;“上传
5、”文件就是将文件从自己的计算机上拷贝到远程主机上去。用Internet的语言来说,用户可以通过客户机程序向(从)远程主机上传(或者下载)文件。使用FTP的时候必须首先登录,在远程主机上面获得了相应的权限以后,才可以上传或着是下载文件。这也就是说,你要想同哪一台计算机传送文件,就必须要有那一台计算机的适当授权。换句话来说,除非是有用户ID和口令,否则就无法传送文件。这种情况显然违背了Internet的开放性,Internet上的FTP主机何止有千万,不可能去要求每个用户在每一台主机上都拥有一个帐号。匿名FTP就是为了解决这个问题而产生的。匿名FrP就是这样的一种机制,用户可以通过它连接到远程主机
6、上去,并从上面下载文件,并且不需要成为其注册用户。系统的管理员建立了一个特殊的用户ID,名字为anonymous,Internet上的任何人在任何地方都可以使用这个用户IDo通过FTP程序可以通过连接匿名FTP主机的方式和连接普通FTP主机的方式差不多,只不过在要求提供用户标识ID时必须输入anonymous,该用户ID口令可以是任意的字符串。习惯上面,会用自己的E-mail地址作为口令,使得系统的维护程序能够记录下来谁在存取这些文件。2 .FTP的基本工作原理网络环境里面的一项基本应用就是将文件从一台计算机中复制到另一台可能相距很远的计算机中。刚开始看起来,在两个主机之间传送文件是十分简单的
7、事情。然而事实上往往非常困难。原因就是众多的计算机厂商研制出的文件系统多达数百种,而且差别很大。文件传送协议FTP只能提供文件传送的一些基本服务,它使用的是TCP可靠的运输服务。FTP的主要功能就是减少或消除在不同操作系统下处理文件的不兼容性。FTP使用客户服务器方式。一个FTP服务器进程可同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:一个主进程,负责接受新的请求:另外有若干个从属进程,负责处理单个请求。主进程的工作步骤如下:(1)打开熟知端口(端口号为21),使客户进程能够连接上。(2)等待客户进程发出连接请求。(3)启动从属进程来处理客户进程发出的请求。从属进程对客户进程的
8、请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。(4)回到等待状态,继续接受其他客户进程发来的请求。主进程与从进程的处理是并发地进行。FTP的工作情况如下图所示。图中的椭圆表示在系统中运行的进程。图中的服务器端有两个从属进程:控制进程和数据传送进程。为简单起见,服务器端的主进程没有画上。在客户端除了控制进程和数据传送进程外,还有一个用户界面进程用来和用户接口。在进行文件传输时,FTP的客户和服务器之间要建立两个并行的TCP连接:“控制连接”和“数据连接”。控制连接在整个会话期间一直保持打开,FTP客户所发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制连接
9、并不用来传送文件。实际用于传输文件的是“数据连接:服务器端的控制进程在接收到FTP客户发送来的文件传输请求后就创建“数据传送进程”和“数据连接”,用来连接客户端和服务器端的数据传送进程。数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行。由于FTP使用一个分享的控制连接,所以FTP的控制信息都是带外传送的。当客户进程向服务器进程发出建立连接请求的时候,需要寻找连接服务器进程的熟知端口。同时还要告诉服务器进程自己的另一个端口号码,一遍建立数据传送连接。然后,服务器进程用自己传送数据的熟知端口与客户进程提供的端口号码建立数据传送连接。因为FTP使用两个不同的端口号,所以数据
10、连接与控制连接就不会发生混乱。使用两个独立连接的好处就是使协议更加简单并且更容易实现,同时在传输文件的时候还可以利用控制连接FTP并不是对所有的数据传输都是最佳的。比如,在计算机A上运行的应用程序需要在远地计算机B的一个很大的文件末尾添加一行信息。如果使用FTP,则应该先将此文件从计算机B传送到计算机A,添加上这一行信息之后再用FTP将此文件传送到计算机B,来回传送这样大的文件比较花时间。而实际上这种传送也是不必要的,因为计算机A并没有使用该文件的内容。而网络文件系统NFS则采用另外一种思路。NFS会允许应用进程打开一个远地文件,并且能在该文件的某一个特定的位置开始读写数据。这样的话,NFS就
11、可以使用户只复制一个大文件中的一个很小的片段,而不是需要复制整个大文件。3 .FTP的工作模式FTP是基于TCP的服务,并不支持UDP。不同的是FTP使用2个端口,一个数据端以及一个命令端口。一般来说这两个端口是21(命令端口)以及20(数据端口)。但是由于FTP工作方式的不同,数据端口并不总是20o这也就是主动与被动FTP的最大不同之处。(一)主动FTP在主动模式下,客户端会从一个任意非特权端口N连接到FTP服务器的命令端口,即21端口。随后客户端开始监听端口N+1,发送FTP命令portN+1”给FTP服务器。服务器接收到命令后,就会用其本地的FTP数据端口来连接客户端指定端口N+1,再进
12、行数据传输。针对FTP服务器前面的防火墙来看,必须允许以下通讯才可以支持主动方式FTP:1.任意大于1024的端口到FTP服务器的21端口。(客户端初始化连接)2.FTP服务器21端口到大于1024的端口。(服务器响应客户端控制端口)3.FTP服务器20端口到大于1024的端口。(服务器端初始化数据连接到客户端数据端口)4.大于1024端口到FTP服务器20端口(客户端发送ACK响应到服务器数据端口)(二)被动FTP为解决服务器发起的客户的连接的问题,有人开发了一种不同的FTP连接方式。这也就是所谓的被动方式,或者是叫做PASV,只有当客户端通知服务器它处于被动模式时才会启用。在被动方式的FT
13、P中,命令连接和数据连接都是由客户端发起的,这样就可以解决从服务器到客户端的数据端口的入方向的连接会被防火墙过滤掉的问题。在被动模式下,FTP库户端随机开启一个大于1024的端口N向服务器的21号端口发起了连接,同时会开启N+1号端口。然后就会向服务器发送PASV的命令,以通知服务器自己处于被动模式。当服务器收到命令后,就会开放一个大于1024的端口P进行监听,随后用PORTP命令来通知客户端,自己的数据端口是P。当客户端收到命令后,就会通过N+1号端口连接服务器的端口P,之后会在两个端口之间进行数据传输。对于服务器端的防火墙来说,必须允许以下通讯才能够支持被动方式的FTP:1.从任何大于10
14、24端口到服务器21端口(客户端初始化连接)2.服务器21端口到任何大于1024端口(服务器响应到客户端控制端口的连接)3.从任何大于1024端口到服务器大于1024端口(客户端初始化数据连接到服务器指定任意端口)4.服务器大于1024端口到远程大于1024的端口(服务器发送ACK响应和数据到客户端数据端口)。4 .FTP的传输模式FTP协议的任务是把文件从一台计算机传送到另一台计算机上,它与这两台计算机所在的位置、联接方式、甚至是否用相同的操作系统没有关系。假如两台计算机在用FTP协议对话,并可以访问Internet,你就能用FTP命令来传输文件。每种操作系统的使用上都有某一些细微得差别,但
15、每种协议基本命令结构是相同的。FTP传输有两种方式:ASCII传输模式以及二进制数据传输模式。ASCII传输方式是假设用户正在拷贝的文件包含简单ASCII码文本,若远程机器运行的不是UNlX,当文件传输时FTP会自动调整文件的内容以便于将文件解释成另外那台计算机存储文件的格式。但是常有这种情况,用户正传输的文件包含的不是文本文件,可能是程序,数据库,字处理文件或压缩文件。在拷贝任何非文本文件前,用binary命令告诉FTP逐字拷贝,不对这些文件进行处理。在二进制传输中,保存文件的位序,以便原始和拷贝的是一一对应的。即使目的机器上包含位序列的文件是没意义。例如,macintosh以二进制方式传送
16、可执行文件到Windows系统,在对方系统上,这个文件就不能执行。若你在ASCII方式下传输二进制文件,即使不需要也会转译。这就使传输变慢,也会损坏数据,使文件不能用。若你知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的。5 .开发环境及其工具介绍JaVa是种简单的,跨平台的,面向对象的,分布式的,安全的,结构的中立,可移植的,性能很优异的多线程的动态语言。在一九九五年SUN公司推出JaVa语言之后,全世界的目光都被这种神奇的语言吸引。JaVa最初被命名为Oak,目标设定为家用电器等小型系统编程语言,以此解决电视机、电话、闹钟等家用电器的控制以及通讯问题。由于这些智能化家电市场需求没有所预期的高,SUn放弃了这项计划。然而就在Oak几近失败的时候,伴随着互联网的发展,SUn看到了Oak在计算机网络领域的广阔应用前景,就改造了Oak,并以“Java”的名称正式发布。Java编程语言的风格很接近C、C