论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > 计算机科学与技术 >

ftp客户端设计与开发 (论文+程序)

2.2    Visual Studio.NET简介 http://www.paper51.com

Visual Studio .NET是Microsoft为实现其.NET技术而开发的一整套工具组件。它把开发功能强大、性能可靠的企业网络解决方案进行了简化。通过提供终端到终端的网络开发能力以及可伸缩、可复用的服务器端组件。Visual Studio .NET的主要作用在于:第一、提供加速开发过程的高效工具;第二、提供对各种各样的网络应用程序的快速设计能力,即程序员可以借助于Web Forms在开发基于窗体的桌面应用程序时所使用的技巧来创建跨平台、跨浏览器的网络应用程序;第三、利用XML和WebServices来简化分布式。 paper51.com

2.3    开发语言选择 内容来自www.paper51.com

C#是一种现代的面向对象的程序开发语言,它使得程序员能够在新的微软.NET平台上快速开发种类丰富的应用程序。.NET平台提供了大量的工具和服务,能够最大限度地发掘和使用计算及通信能力。 copyright paper51.com

由于其一流的面向对象的设计,从构建组件形式的高层商业对象到构造系统级应用程序你都会发现C#将是最合适的。选择使用C#语言设计的组件能够用于Web服务,这样通过Internet可以被运行于任何操作系统上任何编程语言所调用。C#还能为C++程序员提供快捷的开发方式又没有丢掉C和C++的基本特征强大的控制能力,C#与C和C++有着很大程度上的相似性,熟悉C和C++的开发人员很快就能精通C#。 http://www.paper51.com

正如前文所述,C#是专门为.NET应用而开发出的语言,这从根本上保证了C#与.NET框架的完美结合。在.NET运行库的支持下,.NET框架的各种优点在C#中表现得淋漓尽致。让我们来看看C#的一些突出的特点,相信了解了这些特点以及本项目后你将会深深体会到“#”──“SHARP”的真正含义:简洁的语法;精心的面向对象设;与Web的紧密结合;完整的安全性与错误处理;版本处理技术;灵活性与兼容性。 paper51.com

2.4    FTP简介 http://www.paper51.com

FTP是 TCP/IP 协议组中的协议之一,是英文FileTransfer Protocol的缩写。该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载(download)”文件。若将文件从自己计算机中拷贝至远程计算机上,则称之为“上载(upload)”文件。在TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。 内容来自www.paper51.com

从根本上说,FTP协议就是在网络中各种不同的计算机之间按照TCP/IP协议来传输文件。FTP协议采用客户机/服务器 (Client/Sever)模式,由FTP客户端程序和FTP服务器端程序组成。使用时,先启动FTP客户端程序与远程主机建立连接,然后向远程主机发出传输命令,远程主机在收到命令后就给予响应,并执行正确的命令。但是FTP有一个根本的限制,那就是,如果用户在某个主机上没有注册获得授权,即没有用户名和口令,就不能与该主机进行文件传输。但匿名FTP服务器除外,它能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。用户使用特殊的用户名“Anonymous”或“guest”就可有限制地访问远程主机上公开的文件。现在许多系统要求用户将Emai1地址作为口令,以便更好地对访问者进行跟踪。出于安全的目的,大部分匿名FTP主机一般只允许远程用户下载(download)文件,而不允许上载(upload)文件。也就是说,用户只能从匿名FTP主机拷贝其需要的文件而不能把文件拷贝到匿名FTP主机。另外,匿名FTP主机还采用了其他一些保护措施以保护自己的文件不至于被用户修改和删除,并防止计算机病毒的侵入。匿名FTP一直是Internet上获取信息资源的最主要方式,在Internet成千上万的匿名FTP主机中存储着无以计数的文件,这些文件包含了各种各样的信息、数据和软件。人们只要知道特定信息资源的主机地址,就可以用匿名FTP登录。 http://www.paper51.com

2.5    FTP工作模式 http://www.paper51.com

FTP支持两种模式,一种方式叫做Standard(也就是 PORT方式,主动方式),一种是Passive(也就是PASV,被动方式)。Standard模式FTP的客户端发送PORT命令到FTP服务器。Passive模式FTP的客户端发送PASV命令到FTP Server。 http://www.paper51.com

1.主动方式的FTP工作过程:Port模式FTP客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP20端口连接至客户端的指定端口发送数据。FTP server必须和客户端建立一个新的连接用来传送数据。 内容来自www.paper51.com

针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP: paper51.com

1).任何端口到FTP服务器的21端口(客户端初始化的连接SßC)。

内容来自www.paper51.com

2).FTP服务器的21端口到大于1023的端口(服务器响应客户端的控制端口SàC)。 paper51.com

3).FTP服务器的20端口到大于1023的端口(服务器端初始化数据连接到客户端的数据端口SàC)。

内容来自论文无忧网 www.paper51.com

4).大于1023端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口SßC)。

内容来自www.paper51.com

连接过程如下图1:

copyright paper51.com

图1 FTP主动模式连接过程图 copyright paper51.com

在第1步中,客户端的命令端口与FTP服务器的命令端口建立连接,并发送命令“PORT 1027”。然后在第2步中,FTP服务器给客户端的命令端口返回一个"ACK"。在第3步中,FTP服务器发起一个从它自己的数据端口(20)到客户端先前指定的数据端口(1027)的连接,最后客户端在第4步中给服务器端回一个"ACK"。 内容来自www.paper51.com

主动方式FTP的主要问题实际上在于客户端。FTP的客户端并没有实际建立一个到服务器数据端口的连接,它只是简单的告诉服务器自己监听的端口号,服务器再回来连接客户端这个指定的端口。对于客户端的防火墙来说,这是从外部系统建立到内部客户端的连接,这是通常会被阻塞的。

内容来自论文无忧网 www.paper51.com

2.被动方式的FTP是这样的:在被动方式FTP中,命令连接和数据连接都由客户端,这样就可以解决从服务器到客户端的数据端口的进入方向连接被防火墙过滤掉的问题。当开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N>1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P>1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。 copyright paper51.com

对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP: copyright paper51.com

1).从任何端口到服务器的21端口(客户端初始化的连接SßC)。

paper51.com

2).服务器的21端口到任何大于1023的端口(服务器响应到客户端的控制端口的连接SàC)。 http://www.paper51.com

3).从任何端口到服务器的大于1023端口(入;客户端初始化数据连接到服务器指定的任意端口SßC)。

paper51.com

4).服务器的大于1023端口到远程的大于1023的端口(出;服务器发送ACK响应和数据到客户端的数据端口SàC)。

paper51.com

被动方式的FTP连接过程如下图2:

内容来自www.paper51.com

图2 FTP主动模式连接过程图 内容来自论文无忧网 www.paper51.com

在第1步中,客户端的命令端口与服务器的命令端口建立连接,并发送命令“PASV”。然后在第2步中,服务器返回命令"PORT 2024",告诉客户端(服务器)用哪个端口侦听数据连接。在第3步中,客户端初始化一个从自己的数据端口到服务器端指定的数据端口的数据连接。最后服务器在第4步中给客户端的数据端口返回一个"ACK"响应。 内容来自www.paper51.com

被动方式的FTP解决了客户端的许多问题,但同时给服务器端带来了更多的问题。最大的问题是需要允许从任意远程终端到服务器高位端口的连接。幸运的是,许多FTP守护程序,包括流行的WU-FTPD允许管理员指定FTP服务器使用的端口范围。

内容来自www.paper51.com

第二个问题是客户端有的支持被动模式,有的不支持被动模式,必须考虑如何能支持这些客户端,以及为他们提供解决办法。例如,Solaris提供的FTP命令行工具就不支持被动模式,需要第三方的FTP客户端,比如ncftp。

内容来自www.paper51.com

随着WWW的广泛流行,许多人习惯用web浏览器作为FTP客户端。大多数浏览器只在访问ftp://这样的URL时才支持被动模式。这到底是好还是坏取决于服务器和防火墙的配置。

copyright paper51.com

很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登录FTP服务器,因为从服务器的TCP20无法和内部网络的客户端建立一个新的连接,造成无法工作。 http://www.paper51.com

下面是主动与被动FTP优缺点的简要总结:

内容来自www.paper51.com

主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。

copyright paper51.com

FTP服务器的管理员需要他们的服务器有最多的客户连接,那么必须得支持被动FTP。我们可以通过为FTP服务器指定一个有限的端口范围来减小服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞。虽然这没有消除所有针对服务器的危险,但它大大减少了危险。

copyright paper51.com

3        FTP软件需求分析3.1   需要完成目标 http://www.paper51.com

本系统的开发要求采用C/S结构,选用所熟悉的开发工具及开发环境进行本系统的设计与开发。 内容来自www.paper51.com

设计开发一个多功能FTP软件,本设计要求实现部分功能——站点的连接、文件的上传与下载、文件的重命名、及站点连接功能;能实现站点的添加与管理;能实现相关个人的设置保存(比如站点名及用户登录口令等)。 内容来自www.paper51.com

本毕业设计要求提供能实现文件传输及站点连接等功能的软件,要求软件具有操作简便、界面友好等特性;形成一个真正实用的、功能完善的FTP软件。

copyright paper51.com

3.2 功能需求

内容来自论文无忧网 www.paper51.com

从用户的角度来分析本软件应具有以下功能:主机的连接包括直接连接和连接,直接连接主要是针对偶尔一次登录的主机,连接是针对常用的主机需要记录多个登录信息;对常用的主机地址及基本配置信息需要进行保存;文件能上传和下载,判断文件名是否重复进行询问是否覆盖,在断电的情况下能对文件进行断点续传,传输时进度显示(获取文件大小和传输速率估计完成时间);通过该软件能新建文件夹,文件名的修改,文件的删除;能搜索文件名为指定的文件;界面需要友好,简洁。 http://www.paper51.com

3.3  环境需求

内容来自论文无忧网 www.paper51.com

操作系统:Windows XP(or Windows 2000Advance Server)

paper51.com

网络服务器:FTP

内容来自www.paper51.com

开发平台:Visual Studio .NET 2003 copyright paper51.com

4        FTP软件详细设计与实现 paper51.com

4.1 软件总体分析与设计

paper51.com

根据需求分析,按照系统开发的基本观点对功能进行分解,从功能上可对模块作如下划分: http://www.paper51.com

1.连接管理模块:主要完成主机与服务器之间的连接与关闭操作。

内容来自论文无忧网 www.paper51.com

2.文件管理模块:主要完成文件的显示、新建文件、删除文件等。 内容来自论文无忧网 www.paper51.com

3.文件传输模块:主要完成主机与服务器连接成功以后文件的上传与下载。

http://www.paper51.com

4.辅助功能模块:主要是保存一些登录信息和一些简单的配置信息。 paper51.com

4.2各模块具体设计 内容来自论文无忧网 www.paper51.com

4.2.1   连接管理设计

内容来自www.paper51.com

该Ftp客户端工具用一个Winsocket连接上Ftp服务器,然后向其发送命令。在这个过程中,我们依靠发送——响应的机制。即发送Ftp命令——接收返回的响应信息——分析该信息——执行相关操作——发送下一条命令。在一般意义上,有一个socket用来连接Ftp服务器的相关端口(如默认的21),它负责Ftp命令的发送和接收返回的响应信息。一些操作如“进入目录”、“删除文件”,依靠这个socket发送一条命令就可完成了。 copyright paper51.com

1.客户端与服务器连接 内容来自论文无忧网 www.paper51.com

FTP是建立在TCP之上的连接,端口号使用21。若客户端与服务器之间成功连接,服务器将返回字符串,如:220 GMS (Version 5.0)。 copyright paper51.com

前三个字符220表示客户端与服务器成功连接,后面的字符会因服务器的不同而不同,但我们只关心前三个字符。 内容来自论文无忧网 www.paper51.com

2.用户名和密码认证 http://www.paper51.com

客户端发送用户名给服务器,如:USER he,如果服务器找到用户名he,将返回字符串,如:331 User name okay, needpassword。 http://www.paper51.com

接着客户端应发送密码给服务器,如:PASS 123,密码正确,返回如:230 User logged in, proceed,如果用户名或密码认证没有通过,返回如:530 Not logged in。

http://www.paper51.com

用户名也可以使用匿名,如:USER anonymous,返回如:331 Anonymous access allowed, send identity (e-mail name) aspassword。 内容来自www.paper51.com

3.应答码及其含义

paper51.com

110:重新启动标记应答。在这种情况下文本是确定的,它必须是:MARK yyyy=mmmm其中yyyy是用户进程标记,mmmm是服务器标记。 内容来自www.paper51.com

120:服务在nnn分钟内准备好。

http://www.paper51.com

125:数据连接已打开,准备传送。

paper51.com

150:文件状态良好,打开数据连接。 copyright paper51.com

200:命令成功。

内容来自论文无忧网 www.paper51.com

202:命令未实现。

copyright paper51.com

211:系统状态或系统帮助响应。

http://www.paper51.com

212:目录状态。

paper51.com

213:文件状态。 copyright paper51.com

214:帮助信息,信息仅对人类用户有用。

内容来自论文无忧网 www.paper51.com

215:名字系统类型。 http://www.paper51.com

220:对新用户服务准备好。 内容来自论文无忧网 www.paper51.com

221:服务关闭控制连接,可以退出登录。 内容来自论文无忧网 www.paper51.com

225:数据连接打开,无传输正在进行。

内容来自论文无忧网 www.paper51.com

226:关闭数据连接,请求的文件操作成功。

内容来自论文无忧网 www.paper51.com

227:进入被动模式。 内容来自论文无忧网 www.paper51.com

230:用户登录。

内容来自论文无忧网 www.paper51.com

250:请求的文件操作完成。

内容来自论文无忧网 www.paper51.com

257:创建“PATHNAME”。

copyright paper51.com

331:用户名正确,需要口令。

paper51.com

332:登录时需要账户信息。

copyright paper51.com

350:请求的文件操作需要进一步命令。

http://www.paper51.com

421:不能提供服务,关闭控制连接。

内容来自www.paper51.com

425:不能打开数据连接。 copyright paper51.com

426:关闭连接,中止传输。

http://www.paper51.com

450:请求的文件操作未执行。 http://www.paper51.com

451:中止请求的操作:有本地错误。 copyright paper51.com

452:未执行请求的操作:系统存储空间不足。

内容来自www.paper51.com

500:格式错误,命令不可识别。 http://www.paper51.com

501:参数语法错误。 内容来自论文无忧网 www.paper51.com

502:命令未实现。 copyright paper51.com

503:命令顺序错误。 paper51.com

504:此参数下的命令功能未实现。 内容来自www.paper51.com

530:未登录。

内容来自www.paper51.com

532:存储文件需要账户信息。

paper51.com

550:未执行请求的操作。 http://www.paper51.com

551:请求操作中止:页类型未知。 http://www.paper51.com

552:请求的文件操作中止,存储分配溢出。 paper51.com

553:未执行请求的操作:文件名不合法。

paper51.com

4.2.2   文件管理设计

paper51.com

文件管理具有文件的主要是新建文件夹、删除文件,使用DirectoryInfo类的Delete()方法和CreateDirectory()方法来实现。文件属性的设置包括:是否只读、是否隐藏、是否归档,用File类和Directory类来完成对文件和文件夹的属性设置。

paper51.com

4.2.3   文件传输设计

copyright paper51.com

FTP协议用两个连接来达到客户机与服务器之间交换数据的目的如图3。先建立第一个连接——控制连接,它用于传送命令和响应。在建立第二个连接——数据连接,用于数据传输。FTP提供了两种方式来建立数据连接,一种用PORT命令,一种用PASV命令。我们使用后者。客户端发送PASV命令给服务器,服务器返回IP地址和端口号,用来提供给客户端进行数据连接。如:227 EnteringPassive Mode (10,175,125,49,9,17)括号里6个数字中前4个数字表示IP地址10.175.125.49,后2个数字表示端口号,这2个数字按如下公式计算端口号:9*256+17=2321这样,客户端就可用IP地址10.175.125.49和端口号2321连接服务器,建立数据连接。

paper51.com

图3 文件传输中的处理过程

内容来自www.paper51.com

------分隔线----------------------------
联系方式