FTP服务器的设计与实现(源码)

FTP服务器的设计与实现(源码)[20200111200326]
随着互联网技术的日益普及发展,人们对于文件共享的需求也在进一步加大,因而FTP服务器的应用范围也日益广泛。本课题在Windows系列操作系统上基于套接字接口设计并实现了一个FTP服务器。该服务器可以为用户提供文件上传、下载和创建目录等多种文件服务。 本系统使用的开发环境为VC6.0,系统的整体模式为C/S模式,使用多线程的编程模型,能够同时处理来自客户端的多个连接。系统有着良好的出错处理,能够应对多种突发状况,当远程客户端异常断开时,FTP服务器能够动态检测到客户端的异常,及时的释放该连接所占用的内存。服务器还提供了一个配置界面,方便管理员及时的进行用户管理,包括添加新用户,删除一些无效用户以及更改用户的读写等权限。而且本系统具有较强的扩展性,能够根据实际的需要增加或移除一些功能。  *查看完整论文请+Q: 351916072 
关键字:FTP服务器,套接字,多线程,C/S模式
目 录
1 引言 1
1.1 课题背景 1
1.2 发展现状 1
1.3 开发环境与方法 2
2 系统概述 2
2.1 系统简介 2
2.2 现有的FTP服务器 3
3 需求分析 4
3.1 可行性分析 4
3.2 需求概述 4
3.3 功能要求 5
3.4 性能要求 5
4 概要设计 5
4.1 数据结构设计 5
4.2 接口设计 6
4.3 出错处理设计 8
5 详细设计 8
5.1 系统结构 8
5.2 功能模块设计 9
5.3 配置模块设计 15
6 系统测试 16
6.1 配置模块测试 16
6.2 功能模块测试 18
结 论 32
致 谢 33
参 考 文 献 34
1 引言
1.1 课题背景
随着移动互联网技术的日益普及和发展,越来越多的人们选择将自己的计算机接入互联网。但在因特网发展的初期阶段,用FTP传送的数据量占据着整个因特网通信量的三分之一左右,那时候FTP所产生的通信量比电子邮件和域名解析系统所产生的通信量还要大。只是到了1995年,WWW的通信量才首次超过了FTP[1]。FTP对互联网技术的普及作用是不容忽视的。
FTP是File Transfer Protocol的缩写,顾名思义,就是专门用来传输文件的协议。FTP是TCP/IP协议族中的一个应用层协议,主要用于文件传输。虽然文件传输看似只是从一个系统向另一个系统传送文件,但在这个过程中首先需要解决一些问题。比如,一个系统是Windows操作系统,另一个是Mac,它们有着不同的文件命名规范,而且表示文本和数据的方法也不一定相同,又或者它们有着不同的目录结构,所有这些问题由FTP以一种简单而巧妙的方法解决了[2]。
在FTP出现之前,人们可以通过电子邮件、即时消息等服务相互联系。虽然这些技术使用非常方便,但是每一种技术都只提供单一的服务,不能满足用户的需求;另外,上述技术都有一定容量或者速率的限制。例如,电子邮件服务器通常限制附件容量的大小,网络服务器在进行批量下载时容易出错。
在FTP出现之后,基于FTP的服务器提供了很多旨在管理其应用的功能。这些功能包括用户身份识别、文件传输策略和详细的活动记录等。这使我们能够了解并控制上载和下载的比例、解决带宽瓶颈等问题。与此同时,FTP协议也在继续发展,如基于SSH的SFTP协议使得文件传输具有更高的安全性。
1.2 发展现状
随着Internet的高速发展,FTP的应用范围也日益广泛,FTP协议被设计成一个跨平台、简单且容易实现的协议,其RFC号码是959。
如果将因特网比作信息高速公路的话,FTP就是上面的洲际车。在应用层的协议中,FTP运载数据量约占因特网的流量的三分之一[3]。近几年,随着移动互联网技术的迅猛发展,基于FTP的服务器数量急剧增加,而且随着网盘等云存储技术的不断发展,人们对于FTP服务器的兴趣也越来越大。
FTP协议诞生于1985年,当时仍然是互联网的野蛮生长期,基于FTP协议的应用程序以功能强大,操作灵活,还可以进行完整的用户权限管理而著称,而且FTP使用TCP协议,可以保证数据的可靠交付,不易丢失数据[4]。
但随着时间的发展,FTP的缺点也日益显现。首先,FTP使用多种数据传输模式,默认使用ASCII模式,如果通信中有一方使用其他模式,那就有可能导致传输失败甚至文件损坏;而且在FTP客户端和服务端,数据都以明文的形式传输,任何能够控制该数据通路的人都可能嗅探到用户的数据和密码,对用户而言这是一个很大的威胁,应该使用更加安全的SFTP协议或者用SSL协议封装FTP的数据包。
1.3 开发环境与方法
本课题开发的系统是FTP服务器,使用的开发环境是Microsoft Visual Studio 6.0,主要使用Winsock,即套接字来开发一个基于控制台的系统,Winsock是一种标准API,主要用于网络中的数据通信[5]。
Microsoft Visual Studio 6.0诞生于1998年,是一款功能强大的开发工具套件,适用于Windows和Web应用程序,包含Visual Basic,Visual C ++,Visual J++,Visual InterDev和Visual SourceSafe等开发工具,而且在该版本的Visual Studio中,所有的核心组件都升级到了6.0版本[6]。
2 系统概述
2.1 系统简介
服务器是在互联网上提供某些特定服务的计算机的统称,如FTP服务器则提供FTP服务,简单地说,支持FTP协议的服务器就是FTP服务器。
对于用户而言,接入Internet的目的主要是为了获取信息,文件传输是获取信息的主要渠道之一。早期的Internet有着非常复杂的计算机环境,有PC机,有小型机,有大型机;而且这些计算机很有可能运行着不同的操作系统,有运行着IBM操作系统的服务器,也有运行着DOS或者Windows的PC机,而在当时,不同的操作系统可能使用不同的编码,如微软使用ASCII码进行文件传输,而IBM使用EBCDIC编码,并没有一个统一的文件传输协议。在FTP协议出现之后,虽然不同的操作系统FTP应用程序不尽相同,但它们都遵循同一种协议,这样用户就可以把自己的文件传送给他人,或者从网络中获得他人共享的文件。
与多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户端程序,连接远程的FTP服务器程序[7]。用户启动客户端程序,向FTP服务器发出请求,FTP服务器收到请求后执行响应执行命令,并将执行的结果发送给客户端。例如,用户向服务器发送请求:要求下载服务器上的某一个文件,服务器响应这条命令,将指定文件以数据包的形式发送到用户的计算机上,客户端程序接受数据包并且重组文件,之后将其存放在用户的目录中。
2.2 现有的FTP服务器
2.2.1 Serv-U
Serv-U是一种能够同时运行在Windows和Linux操作系统上的FTP服务器软件,主要提供安全和具有成本效益的文件传输协议解决方案,能够满足中小型公司的数据传输需求。Serv-U支持使用多种安全协议进行文件传输,而且能够根据用户的业务进行系统的定制化,具备较高的安全性。
2.2.2 FileZilla
FileZilla是一款开源的FTP解决方案,包括FileZilla客户端FileZilla服务端。FileZilla客户端支持FTP、SFTP和FTPS三种协议,而且可在多种平台上使用。FileZilla服务器支持SSL安全协议,易于使用,支持IPv6和大文件传输;简洁的界面、有条理的多站点管理方式使得Filezilla成为一个方便高效的FTP服务端工具,并成为2003年SourceForge社区最佳组网方案。

版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/jsj/jsjkxyjs/3213.html

好棒文