第1章 绪论
1.1 课题背景
随着Internet在全世界的普及和发展,越来越多的用户将自己的计算机连入这个人类有史以来最庞大的网络中。其中FTP(File Transfer Protocol)是Internet中最早提供的服务之一,目前仍在被人们广泛使用着。如果说Internet是如今的信息高速公路的话,FTP文件传输系统就是其上面的洲际车,它使用TCP/IP体系结构中应用层上的FTP协议在不同的计算机系统之间互相传输文件。人们通常将文件传输服务称为FTP服务。通过FTP服务,Internet上的用户可以从授权的异地计算机上获取所需的文件,也可以把本地文件传输到其他计算机上,这就为计算机之间双向传输文件提供了一种有效的手段。FTP凭借其透明、快捷等特点,越来越多的人通过FTP能够在互联网上获得大量免费文件,FTP协议已经是Internet上应用最多的协议之一。
虽然FTP应用非常广泛,但在国内仍然缺乏高性能的产品。由于商业原因,对国外FTP文件传输系统中的关键技术也知之甚少;同时国内对FTP系统的研究也是相对较少的,这从学术刊物上发表的相关文章就可以看出。所以基于FTP的文件传输系统的研究是有一定意义的。在FTP的众多功能中,安全性是一个突出且敏感的功能。绝大多数企业、部门在使用FTP的时候,都会考虑这个问题,把它作为选购FTP文件传输系统产品的重要依据。目前市场上流行的FTP系统,像CuteFtp、FtpCommander、FlashFtp等,都是国外的产品,虽然功能和性能等方面都还不错,但毕竟是通用的软件,任何人都可以得到并对其进行研究,从而可能给这些软件的安全性带来潜在的问题。从保证安全性的角度出发,很有必要根据自身的需要开发一个自己的文件传输系统,这样就可以避免采用通用软件带来的危险。另一方面,在实际使用国外产品的过程中,发现它们并不能很好的满足用户的要求。比如说,访问日志功能,虽然绝大多数的国外产品都有,但是,这些日志功能都是固定的,不能够根据用户的要求来灵活的生成,而这个功能又是用户所必须的。因此研究并实现FTP文件传输系统不仅有助于深入了解各种Innternet协议的实现细节,掌握FTP的技术,而且可实现软件的国产化,满足国内用户的安全性需求,对于社会和个人都有积极的意义。
本毕业设计将介绍FTP客户端系统的设计和开发工作,因此,文章将涵盖以下四个方面的内容:1.基础技术知识介绍; 2.文件传输系统的详细需求;3.介绍系统体的具实现;4.对最终系统进行测试。通过这次课题,对整个开发过程有深入的了解,提高实践能力。FTP将在未来的很长时间里作为主要的文件传输协议,使用前景仍然宽广,功能会更加强大。
1.2 课题现状
互联网上传统的技术模式是C/S模式,FTP(File Transfer Protocol)文件传输服务就是这种模式的典型代表。FTP是TCP/IP协议组中的协议之一,该协议是Internet文件传送的基础,它促进了文件的共享、鼓励间接或者隐式地使用远程计算机、向用户屏蔽不同主机中各种文件存储系统的细节以及提供可靠和高效的数据传输。在TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。FTP中主要采用了TCP传输控制协议(Transmission Control Protocol)和Telnet协议。
在网络普及的今天,政府机关、企业、学校等各行各业已经广泛地应用并建立了自己的FTP文件传输系统,FTP极大地提高了我们的工作效率和管理水平。由于计算机网络的互联、互通的特性,为我们工作带来方便和效率。普通的FTP服务要求用户必须在要访问的计算机上有用户名和口令。而Internet上最受欢迎的是称为匿名FTP的服务,用户在登录这些服务器时不用事先注册一个用户名和口令,而是以“anonymous”或“FTP”为用户名,自己的电子邮件地址为口令即可。匿名FTP是目前Internet上进行资源共享的主要途径之一。它的特点是访问方便,操作简单,容易管理。Internet上有许多的资源都是以FTP的形势提供给大家使用的,包括各种文档、软件工具包等等。
FTP虽然是一种已经成熟且应用广泛的的技术,但是其仍然存在需要改进的地方。主要有下面几个方面:
(1) 服务器和客户端的功能被明确划分,如何在服务器端负载压力很大的情况下提高客户端的带宽资源的利用率。
(2) FTP使用明文传输,如何使用多种加密手段保全系统及客户信息的安全。 (3) FTP时延太高,如何保证文件传输速度的稳定。 (4) FTP的开放性,如何保证共享资源的内容健康。
1.3 本文组织方式
本文从课题的的现状和背景入手,分析了FTP文件传输系统的现状和国内外的研究背景。后续章节的主要内容安排如下:第二章开发工具及关键技术,主要讲述了本次设计用到的编程语言java和开发平台Jbuilder 2006,并对它们的特点进行了说明;接着阐述了本次设计用到的关键技术C/S模式与socket网络编程,最后对FTP协议进行了介绍。第三章文件传输系统设计主要讲述了FTP文件传输系统的设计,对系统进行需求分析,各个模块的流程划分、设计和架构,并对用到的关键技术进行了说明。第四章文件传输系统的实现,对客户端和服务器各个功能模块的编码实现进行说明并列出部分代码。第五章系统测试,对客户端和服务器进行了测试,测试结果表明系统实现了设计的功能并达到预期的性能。
第2章 开发工具及关键技术
2.1 开发工具
2.1.1 开发语言
Java是Sun公司推出的一种编程语言。Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型,高度抽象,采用纯面向对象编程的思想和方法。Java还带有很多的扩展的类包(Package),在程序中可以轻松调用,简化程序员的工作。Java程序运行的硬件或软件环境,称为平台。Java平台包括2个部分:Java虚拟机和Java应用程序接口。Java API:Java应用程序接口,用于Java程序的使用和Java虚拟机的接口。Java虚拟机用于将Java字节码翻译成特定机器码。基于硬件的平台,即Java程序运行的特定的硬件环境。
Java是一种简单的、面象对象的、分布式的、解释的、键壮的、安全的、结构的、中立的、可移植的、性能很优异的、多线程的、动态的语言。Java特点有如下: 1、平台无关性
平台无关性是指Java能运行于不同的平台。Java引进虚拟机原理,并运行于虚拟机,实现不同平台的Java接口之间。使用Java编写的程序能在世界范围内共享。Java的数据类型与机器无关,Java虚拟机(Java Virtual Machine)是建立
在 硬件和操作系统之上,实现Java二进制代码的解释执行功能,提供于不同平台的接口的。 2、安全性
Java的编程类似C++,学习过C++的读者将很快掌握Java的髓。Java舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统。Java对程序提供了安全管理器,防止程序的非法访问。 3、面向对象
Java吸取了C++面向对象的概念,将数据封装于类中,利用类的优点实现了程序的简洁性和便于维护性。类的封装性、继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性反复利用。程序员只需把主要精力用在类和接口的设计和应用上。Java提供了众多的一般对象的类,通过继承即可使父类的方法。在Java中,类的继承关系是单一的而非多重的,一个子类只有一个父类,子类的父类又有一个父类。Java提供的Object类及其子类的继承关系如同一棵倒立的树形,根类为Object类,Object类功能强大,经常会使用到它及其它派生的子类。 4、分布式
Java建立在扩展TCP/IP网络平台上。库函数提供了用HTTP和FTP协议传送和接受信息的方法。这使得程序员使用网络上的文件和使用本机文件一样容易。 5、键壮性
Java致力于检查程序在编译和运行时的错误,类型检查帮助检查出许多开发早期出现的错误。Java可以自己操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能。这些功能特征大大提高了开发Java应用程序的周期。
2.1.2 开发平台
NetBeans包括开源的开发环境和应用平台,NetBeans IDE可以使开发人员利用Java平台能够快速创建Web、企业、桌面以及移动的应用程序,NetBeans IDE已经支持PHP、Ruby、JavaScript、Groovy、Grails和C/C++等开发语言。
NetBeans项目由一个活跃的开发社区提供支持, NetBean开发环境提供了丰富的产品文档和培训资源以及大量的第三方插件。
NetBeans是开源软件开发集成环境,是一个开放框架,可扩展的开发平台,可以用于Java、C/C++,PHP等语言的开发,本身是一个开发平台,可以通过扩展插件来扩展功能。
在 NetBeans Platform 平台中,应用软体是用一系列的软体模组(Modular Software Components)建构出来。而这些模组是一个jar档(Java Archive File)它包含了一组Java程式的类别而它们实作全依据依 NetBeans 定义了的公开介面以及一系列用来区分不同模组的定义描述档(Manifest File)。有赖於模组化带来的好处,用模组来建构的应用程式可只要加上新的模组就能进一步扩充。由於模组可以独立地进行开发,所以由 NetBeans 平台开发出来的应用程式就能利用着第三方软件,非常容易及有效率地进行扩充。如果用户既要求易于进行可视化布局,又要求有较大的灵活性,NetBeans就是最好的选择。
2.2 关键技术
2.2.1 C/S架构简介
客户机/服务器在分布处理过程中,使用基于连接的网络通信模式。该通信模式首先在客户机和服务器之间定义一套通信协议,并创建一Socket类,利用这个类建立一条可靠的链接;然后,客户机/服务器再在这条链接上可靠地传输数据。客户机发出请求,服务器监听来自客户机的请求,并为客户机提供响应服务。这就是典型的“请求--应答”模式。下面是客户机/服务器的一个典型运作过程:
(1)服务器监听相应端口的输入; (2)客户机发出一个请求; (3)服务器接收到此请求;
(4)服务器处理这个请求,并把结果返回给客户机; (5)上述过程,直至完成一次会话过程。
图1 2层C/S结构图