摘要
网络环境中的一项基本应用就是将文件从一台计算机中复制到另一台可能相距很远的计算机中。而文件传送协议FTP是因特网上使用得最广泛的文件传送协议。 FTP使用客户服务器方式。本课题就是设计一个FTP服务器程序和一个FTP客户端程序。
本文通过软件工程学的方法完成对FTP服务器程序和客户端程序的设计以及具体的实现设计步骤采用自顶向下的方法。描述了需求分析 总体设计详细设计等内容并对程序系统的实现做出了详细的介绍。本文所实现的FTP程序基本符合编程规范主要具备完成FTP连接的打开和关闭操作能执行文件的上传和下载能完成用户的登陆判断 目录的跳转以及文件目录的输出几个功能。关键词服务器系统设计软件工程
- I -
AB S TRAC T
One basic application of Internet environment is to copy documents from onecomputer to another distant one,while the File Transfer Protocol (FTP) is the mostwidely-used document transfer protocol on the Internet. FTP adopts the client-servermode. The object of this task is to design a FTP server program and a FTP clientpro gram.
This article mainly focuses on how to design and concretely realize the programsof FTP server and client through the method of software engineering.The proceduresfollow the way which is from the top to the bottom. This article could be divided intoseveral chapters, including the analysis of FTP protocol, the analysis of demands,program design and practical function design,with a detailed introduction of theanalysis, design and realization of FTP programs.This largely according withprogramming criterion, this FTP program is equipped with a couple of functionsinvolving the initiation and closure of FTP links,uploading and downloading files, thejudgement of user’s logging status, automatically altering Jumping catalogs and theoutput of file catalogs.
Key words Server,System Design,Software Process
- II -
目录
摘要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .I
ABSTRACT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .I I
第1章绪论. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
1 . 1系统开发背景. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
1 .2课题主要研究内容和意义. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2
1 .3 Ecl ipse的概述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2
1 .4本章小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
第2章FTP协议. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4
2. 1 FTP简介. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4
2. 1. 1 FTP服务器登入方式的分类. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4
2. 1.2 FTP运行原理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5
2.2 FTP标准命令. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
2.3本章小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8
第3章需求分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
3. 1任务描述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
3.2用户特点. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
3.3软件架构. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
3.3. 1服务器架构设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
3.3.2客户端架构设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
3.4开发环境. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 1
3.5本章小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 1
第4章系统设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
4. 1模块设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
4. 1. 1 FTP服务器模块. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
4. 1.2 FTP客户端模块. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13
4.2 FTP服务器模块的设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13
4.2. 1服务器控制模块. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13
4.2.2数据传输模块. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17
- III -
4.2.3命令信道模块. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18
4.2.4文件处理模块. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19
4.2.5用户相关模块. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20
4.3 FTP客户端模块设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21
4.3. 1客户端信息处理模块. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21
4.3.2客户端文件传输模块. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23
4.3.3客户端网络连接模块. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25
4.4 FTP类图. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25
4.5本章小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26
第5章系统实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
5. 1服务器端的具体功能实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
5. 1. 1 GUI界面时间处理功能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
5. 1.2用户的添加功能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
5. 1.3用户的删除功能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
5. 1.4远程客户端的监听功能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
5. 1.5用户判断具体功能实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
5. 1.6远程客户端FTP命令处理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31
5. 1.7 PASV与PORT命令的具体实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32
5. 1.8 TYPE命令的具体实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33
5. 1.9文件列表的输出功能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34
5. 1. 10文件的上传和下载功能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36
5.2客户端具体功能实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36
5.2. 1 GUI界面事件处理功能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36
5.2.2服务器的连接功能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37
5.2.3获取服务器的输出列表功能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39
5.2.4文件的上传和下载功能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40
5.3本章小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42
第6章结论. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43
致谢. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44
参考文献. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45
- IV-
第1章绪论
1.1系统开发背景
起初 FTP并不是应用于IP网络上的协议而是ARPANET网络中计算机间的文件传输协议,ARPANET是美国国防部组建的老网络于19601980年使用。在那时 FTP的主要功能是在主机间高速可靠地传输文件。 目前FTP仍然保持其可靠性即使在今天它还允许文件远程存取。这使得用户可以在某个系统上工作而将文件存贮在别的系统。例如如果某用户运行Web服务器需要从远程主机上取得HTML文件和CGI程序在本机上工作他需要从远程存储站点获取文件(远程站点也需安装Web服务器) 。当用户完成工作后可使用FTP将文件传回到Web服务器。采用这种方法用户无需使用Telnet登录到远程主机进行工作这样就使Web服务器的更新工作变得如此的轻松。
FTP并不像HTTP协议那样只需要一个端口作为连接HTTP的默认端口是
80 FTP的默认端口是21 FTP需要2个端口一个端口是作为控制连接端口,也就是21这个端口用于发送指令给服务器以及等待服务器响应另一个端口是数据传输端口,端口号为20 仅PORT模式是用来建立数据传输通道的主要有3个作用
1从客户向服务器发送一个文件。
2从服务器向客户发送一个文件。
3从服务器向客户发送文件或目录列表。
一般来说通过FTP传输文件要比使用其他协议如HTTP更加有效其中主要的原因有
1 FTP协议主要用来传输文件不像HTTP还有其他一些功能除了校验发送和接受的文件以外它不会像HTTP那样停下来翻译文件内容。
2通常主机的FTP事物处理是FTP服务器的唯一工作既然这样计算机的处理器资源被完全投入到FTP事物处理中而不会被几个竞争服务器处理器时间的工作所分割。
实际上存在2种FTP站点一种是匿名的之所以称之为匿名是因为任何
人都可以访问它虽然它有所谓的密码保护但是任何匿名的FTP站点都允许那些使用anonymous用户名以及E-mai l地址作为密码的用户访问。在匿名站点中一些访问的类型受到了限制如大多数站点允许下载但是不允许匿名用户
- 1 -
上传资料。另外一种FTP站点是非匿名的他们要求用户有个合法的用户名和密码用户和密码通常是系统管理员或者是ISP尤其是站点的所有者提供的。如果没有用户密码将会被拒绝访问。
1.2课题主要研究内容和意义
文件传输与共享是计算机网络的重要应用之一本课题实现一个基于FTP协议的文件传输服务器及客户端程序的开发主要完成以下工作
1查阅相关文献资料。
2.利用软件工程学的方法实现系统分析与设计。
3. 熟悉FTP协议并实现文件传输服务器的设计编码。
4.采用多线程技术实现客户端与服务器的程序的设计与编码。
5.编码语言为JAVA开发环境Ecl ipse。
FTP(File transfer Protocol,文件传输协议)是Internet上使用非常广泛的一种的通信协议它是由支持Internet文件传输的各种规则组成的这些规则使Internet用户可以把文件从一个主机拷贝到另外一个主机上。 FTP支持多种文件类型和文件格式包括ASCⅡ文件传输格式和二进制文件传输格式。与大多数Internet服务一样 FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令服务器程序执行用户所发出的命令并将执行的结果返回到客户机 比如说用户发出一条命令要求服务器向用户发送某一文件的一份拷贝服务器会响应这条命令。将指定的文件发到用户的机器上。客户机程序代表用户接受到这个文件将其存放在用户指定的目录中。
1.3 Eclipse的概述
Eclipse是一个开放源代码的软件开发项目专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它由Eclip se项目、 E c lip se工具项目和Eclipse技术项目三个项目组成每一个项目由一个项目管理委员会监督并由它的项目章程管理。每一个项目由其自身的子项目组成并且使用CommonPublic License CPL版本1.0许可协议。 Eclipse工具项目为不同的工具建造者提供一个焦点以保证为Eclipse Platform创建最好的工具。Eclipse工具项目的任务是为Eclipse Platform培育广泛的工具的创建。工具项目提供单一的联系点以调
-2-
和开放源代码工具建造者从而使得覆盖和重复最小化并保证共享的最大化和共同组件的创建促进不同类型工具的无缝互操作。工具项目由工具开发者委员会和工具项目的项目管理委员会提议、选择和开发的子项目组成。 E c lip s e技术项目的任务是为开放源代码开发者、研究者、学院和教育者提供新的管道 以参与将来Ec lip se的演化。它按照研究、培育和教育三个项目流来组织研究项目在Eclipse相关领域诸如编程语言、工具和开发环境方面进行探索和研究培育项目是小型的、未正式结构化的项目为Eclipse软件基础添加新的能力教育项目聚焦于教育材料的开发、教学帮助和课件。 EclipsePlatform是一个开放的可扩展的IDE。 Eclipse Platform提供建造块和构造并运行集成软件开发工具的基础。 EclipsePlatform允许工具建造者独立开发与他人工具无缝集成的工具你无须分辨一个工具功能在哪里结束而另一个工具功能在哪里开始。 Eclipse SDK
软件开发者包是3个Eclipse项目的子项目 Platform、 JDT、 PDE所生产的组件合并它们可以一次下载。这些部分在一起提供了一个具有丰富特性的开发环境允许开发者有效地建造可以无缝集成到Eclipse Platform中的工具。Eclipse SDK由Eclipse项目生产的工具和来自其它开放源代码的第三方软件组合而成。 Eclipse项目生产的软件以CPL发布第三方组件有各自自身的许可协议。
1.4本章小结
本章主要介绍了FTP的开发背景研究的内容以及意义介绍了开发java应用涉及的技术和开发工具。
-3-
第2章FTP协议
2.1 FTP简介
FTP File Transfer Protocol 即文件传输协议。 FTP的主要作用就是让用户连接上一个远程计算机这些计算机上运行着FTP服务器程序察看远程计算机有哪些文件然后把文件从远程计算机上拷到本地计算机或把本地计算机的文件送到远程计算机去。是TCP/IP的一种具体应用它工作在OSI模型的第七层 TCP模型的第四层上 即应用层使用TCP传输而不是UDP这样FTP客户在和服务器建立连接前就要经过一个被广为熟知的"三次握手"的过程它带来的意义在于客户与服务器之间的连接是可靠的而且是面向连接为数据的传输提供了可靠的保证。采用FTP协议可使Internet用户高效地从网上的FTP服务器下载大信息量的数据文件将远程主机上的文件拷贝到自己的计算机上。以达到资源共享和传递信息的目的。 由于FTP的使用使得Internet上出现大量为用户提供的下载服。 Internet成为了一个巨型的软件仓库。 FTP在文件传输中还支持断点续传功能可以大幅度地减小CPU和网络带宽的开销。
FTP协议要使用两个TCP连接传送数据一个是命令连接用来在FTP客户端与服务器之间传递命令另一个是数据连接用来上传或下载数据。这就直接导致FTP需要2个端口一个端口用于控制连接即21端口发送指令给服务器以及等待服务器响应另一个端口是数据传输端口端口号为20是用来建立数据传输通道。
2.1.1 FTP服务器登入方式的分类
我们已经知道FTP服务实际上就是将各种可用资源放在各个FTP主机中 网络上的用户可以通过Internet联到这些主机上并且使用FTP 文件传送协议将想要的文件拷回到自己的计算机中。在使用FTP传送文件之前最主要的步骤就是如何联入各Internet上的FTP服务器。联入的主要步骤也就是登录Login的过程。通常用户在欲下载的FTP服务器上输入许可的帐号account和密码(password) 得到该服务器许可后 即可进入。 FTP服务器分为两种
其一为一般的FTP服务器进入这种服务器时必须拥有该主机的帐号和密码
-4-
其二为匿名FTP服务器称为anonymous FTP服务器登录此类FTP服务器时用户只要以“guest”或“anonymous”为帐号并以自己的E-mail地址为密码即可进入该FTP服务器主机任意浏览和下载文件。当用户登录到某个FTP服务器时如果用“guest”或“anonymous”为帐号均无法进入则表明该服务器不是匿名FTP服务器。实际上匿名FTP只是FTP中的一种它是一种开放式帐号的FTP服务器它可以为网络上的任何使用者所利用与非匿名的FTP不同的只是登录时的帐号为“anonymous”而密码为任一用户的E-mail地址。现在,某些站点还明确要求使用电子邮件地址作为匿名用户密码,而不接受"guest"这样的密码.提供电子邮件地址,有助于让站点的拥有者了解到是哪些人在使用他们的服务。
2.1.2 FTP运行原理
在一个FTP会话中会存在两个独立的网络连接一个是由两端的P I使用的另一个是由两端的DTP使用的。 PI之间的连接一般被称做控制连接(controlconnection) DTP之间的连接被称做数据连接(data connection) 。通常情况下FTP服务器监听端口号2 1来等待控制连接建立请求当客户连接请求到达会在客户和FTP服务器之间建立一个控制连接。而数据连接端口号的选择依赖于控制连接上的命令通常是客户发送一个控制消息来指定客户需要建立一个数据连接来传输FTP数据(如下载/上载一个文件显示当前目录的内容等等都需要建立数据连接来传输数据) 在该消息中指定了客户监听并等待连接的端口号而服务器从控制连接收到该命令 向客户端发起一个连接请求到消息中指定的端口号客户端收到该请求以后就会建立一个数据连接。连接建立以后服务器或客户就会主动通过该连接发送数据(可能是要传输的文件也可能是用户在命令行上发出的ls命令的输出) 。
一个完整的FTP文件传输需要建立两种类型的连接一种为文件传输下命令称为控制连接另一种实现真正的文件传输称为数据连接。
1控制连接
客户端希望与FTP服务器建立上传下载的数据传输时它首先向服务器的TCP21端口发起一个建立连接的请求 FTP服务器接受来自客户端的请求完成连接的建立过程这样的连接就称为FTP控制连接。
2数据连接
-5-
Hostodo近日发布了美国独立日优惠促销活动,主要推送了四款特价优惠便宜的VPS云服务器产品,基于KVM虚拟架构,NVMe阵列,1Gbps带宽,默认分配一个IPv4+/64 IPv6,采用solusvm管理,赠送收费版DirectAdmin授权,服务有效期内均有效,大致约为7折优惠,独立日活动时间不定,活动机型售罄为止,有需要的朋友可以尝试一下。Hostodo怎么样?Hostodo服务器好不好?...
DMIT,最近动作频繁,前几天刚刚上架了日本lite版VPS,正在酝酿上线日本高级网络VPS,又差不多在同一时间推出了美国cn2 gia线路不限流量的美国云服务器,不过价格太过昂贵。丐版只有30M带宽,月付179.99 美元 !!目前美国云服务器已经有个4个套餐,分别是,Premium(cn2 gia线路)、Lite(普通直连)、Premium Secure(带高防的cn2 gia线路),Prem...
BGPTO是一家成立于2017年的国人主机商,从商家背景上是国内的K总和有其他投资者共同创办的商家,主营是独立服务器业务。数据中心包括美国洛杉矶Cera、新加坡、日本大阪和香港数据中心的服务器。商家对所销售服务器产品拥有自主硬件和IP资源,支持Linux和Windows。这个月,有看到商家BGPTO日本和新加坡机房独服正进行优惠促销,折扣最低65折。第一、商家机房优惠券码这次商家的活动机房是新加坡...