服务器基于FTP的服务器及客户端的设计与实现论文

代理服务器  时间:2021-03-02  阅读:()

摘要

网络环境中的一项基本应用就是将文件从一台计算机中复制到另一台可能相距很远的计算机中。而文件传送协议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是美国国防部组建的老网络于19601980年使用。在那时 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-

  • 服务器基于FTP的服务器及客户端的设计与实现论文相关文档

RepriseHosting:$27.97/月-L5640,16G内存,1TB硬盘,10TB月流量,西雅图机房

RepriseHosting是成立于2012年的国外主机商,提供独立服务器租用和VPS主机等产品,数据中心在美国西雅图和拉斯维加斯机房。商家提供的独立服务器以较低的价格为主,目前针对西雅图机房部分独立服务器提供的优惠仍然有效,除了价格折扣外,还免费升级内存和带宽,商家支持使用支付宝或者PayPal、信用卡等付款方式。配置一 $27.97/月CPU:Intel Xeon L5640内存:16GB(原...

hostkvm:7折优惠-香港VPS韩国VPS,8折优惠-日本软银、美国CN2 GIA、新加坡直连VPS

hostkvm本月对香港国际线路的VPS、韩国CN2+bgp线路的VPS正在做7折终身优惠,对日本软银线路、美国CN2 GIA线路、新加坡直连线路的VPS进行8折终身优惠促销。所有VPS从4G内存开始支持Windows系统,当然主流Linux发行版是绝对不会缺席的!官方网站:https://hostkvm.com香港国际线路、韩国,7折优惠码:2021summer日本、美国、新加坡,8折优惠码:2...

LOCVPS:VPS主机全场8折,德国/荷兰/美国KVM终身7折

LOCVPS发来了针对元旦新年的促销活动,除了全场VPS主机8折优惠外,针对德国/荷兰KVM #1/美国KVM#2 VPS提供终身7折优惠码(限量50名,先到先得)。LOCVPS是一家成立于2012年的国人VPS服务商,提供中国香港、韩国、美国、日本、新加坡、德国、荷兰、俄罗斯等地区VPS服务器,基于KVM或XEN架构(推荐优先选择KVM),均选择直连或者优化线路,国内延迟低,适合建站或远程办公使...

代理服务器为你推荐
免费制作qq空间如何免费制作QQ空间易pc华硕易PC怎么样?性价比到底怎么样?伪装微信地理位置怎么伪装微信地理位置?eset最新用户名密码eset smart security3.0.621.0最新用户名和密码怎么找吴晓波频道买粉看吴晓波频道的心得bluestacksbluestacks怎么用渗透测试web渗透测试有前途吗百度手写百度如何手写:显卡温度多少正常电脑显卡温度多少正常?数码资源网有什么网站弄相片效果比较好的?
中国万网虚拟主机 老域名全部失效请记好新域名 主机测评 lamp安装 ssh帐号 搜狗12306抢票助手 一元域名 湖南服务器托管 中国电信测速112 美国在线代理服务器 空间合租 四核服务器 杭州电信 googlevoice 上海联通 建站技术 cpu使用率过高怎么办 低价 vi命令 ddos防火墙 更多