服务器基于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的服务器及客户端的设计与实现论文相关文档

Hostodo,美国独立日特价优惠,四款特价VPS云服务器7折,KVM虚拟架构,NVMe阵列,1核512M内存1Gbps带宽3T月流量,13.99美元/月,赠送DirectAdmin授权

Hostodo近日发布了美国独立日优惠促销活动,主要推送了四款特价优惠便宜的VPS云服务器产品,基于KVM虚拟架构,NVMe阵列,1Gbps带宽,默认分配一个IPv4+/64 IPv6,采用solusvm管理,赠送收费版DirectAdmin授权,服务有效期内均有效,大致约为7折优惠,独立日活动时间不定,活动机型售罄为止,有需要的朋友可以尝试一下。Hostodo怎么样?Hostodo服务器好不好?...

DMIT:新推出美国cn2 gia线路高性能 AMD EPYC/不限流量VPS(Premium Unmetered)$179.99/月起

DMIT,最近动作频繁,前几天刚刚上架了日本lite版VPS,正在酝酿上线日本高级网络VPS,又差不多在同一时间推出了美国cn2 gia线路不限流量的美国云服务器,不过价格太过昂贵。丐版只有30M带宽,月付179.99 美元 !!目前美国云服务器已经有个4个套餐,分别是,Premium(cn2 gia线路)、Lite(普通直连)、Premium Secure(带高防的cn2 gia线路),Prem...

BGPTO独服折优惠- 日本独服65折 新加坡独服75折

BGPTO是一家成立于2017年的国人主机商,从商家背景上是国内的K总和有其他投资者共同创办的商家,主营是独立服务器业务。数据中心包括美国洛杉矶Cera、新加坡、日本大阪和香港数据中心的服务器。商家对所销售服务器产品拥有自主硬件和IP资源,支持Linux和Windows。这个月,有看到商家BGPTO日本和新加坡机房独服正进行优惠促销,折扣最低65折。第一、商家机房优惠券码这次商家的活动机房是新加坡...

代理服务器为你推荐
开机滚动条开机滚动条太多怎么办?xv播放器下载求手机可以看xv格式的视频播放器xp系统停止服务xp系统停止服务怎么办?电子商务网站模板网页制作模板rewritebase如何使用WampServer2.0软件声母是什么什么是声母网站排名靠前如何使网站排名靠前?王炳坤南北小年为何不同日主板温度多少正常电脑主板温度多少正常价格在线股票行情在线查询 股票行情查询软件 今日股票行情查询
虚拟主机购买 虚拟主机评测网 fc2新域名 国外php主机 mach5 韩国电信 evssl证书 一元域名 河南服务器 100m免费空间 七夕快乐英文 softbank邮箱 hdd metalink 双线asp空间 免费的asp空间 免费asp空间 实惠 攻击服务器 博客域名 更多