1、本 科 毕 业 论 文(科研训练、毕业设计)网络服务器 FTP 客户端的设计与实现The Design and Implementation of FTP Client for Network Server姓 名:学 号:学 院:软件学院系:软件工程专 业:软件工程年 级:校外指导教师: 校内指导教师: 年 月摘要由于网络环境越来越复杂,企业网络的安装和维护的难度大大增加,给网络管理员带来了沉重的负担。为了简化当今企业级用户网络安装和维护的难度,加强企业网络的安全,富士通公司推出了新的网络服务器。该设备集路由器、UTM、负载平衡等功能于一体,大大简化了企业网络的复杂性,提升网络安装和维护的效率
2、。由于在使用过程中,经常需要从设备中向外部传送文件或从外部获取文件,因此需要为该设备提供一款 FTP 客户端软件。与普通 FTP 客户端相比,应该具备文件过滤功能,只能对系统中特定的文件进行操作。由于这些文件在系统中分布在不同的文件夹中,因此如何实现一种简便、有效、易扩展的文件过滤机制成为本系统的研究重点。本文主要研究如下几个方面的内容:第一、如何利用 Linux 系统中常见的配置文件机制来创建一个适合本系统的文件过滤体制。第二、由于配置文件位于不同的系统路径中,如何解决 FTP 客户端的本地工作目录问题。第三、介绍了如何对该 FTP 客户端进行测试。关键词:文件过滤;FTP;LinuxAbs
3、tractAs the network grows large, the installation and maintenance of the enterprise network turns out to be very hard, which has become the burden of network administrator. To simplify this work and strengthen the security of enterprise network., Fujitsu company introduces a new series of network se
4、rver. It integrates the function of router, UTM, load-balance, etc, which could sharply simplify the complexity of enterprise network and improve the efficiency of installation and maintenance.During the daily work, we often need to upload file to outside server or download file into the server. So,
5、 we need a specified FTP client to finish this job. Compared to common FTP client, it must have a file filtering, so we can only operate on some certain files. Because these files are in different paths, its the point to realize a easy, efficient, upgradeable file-filter mechanism.The whole work mai
6、nly focuses on the following aspects:1. How to create a adequate mechanism referring to the existed configurationfile custom in Linux.2. As the files are in different paths, how to solve the local working directory.3. How to test the FTP client is explained.Key words: File-filter;FTP; Linux目录第一章 绪论
7、11.1 选题背景与意义 .11.2 现阶段研究状况 11.3 本文的主要内容和结构 1第二章 背景知识 .32.1 产品介绍 32.2 系统结构介绍 32.2.1 系统总体结构 32.2.2 CLI 系统结构 .42.3 FTP 客户端需求介绍 .62.3.1 FTP 模块存在形式 .62.3.2 FTP 模块 FD 部分文档 62.4 本章小结 9第三章 FTP 客户端原理 103.1 FTP 协议简介 .103.2 FTP 客户端工作流程 .103.3 本章小结 11第四章 定制 FTP 客户端的设计与实现 .124.1 系统设计 124.1.1 系统结构设计 124.1.2 系统流程
8、124.1.3 系统流程图 134.2 详细设计 154.2.1 本地工作目录 154.2.2 过滤规则文件 154.2.3 上传操作流程图 164.2.4 下载操作流程图 184.3 模块测试 194.3.1 命令输入测试 194.3.2 消息检查 194.3.3 全路由测试 194.4 系统运行效果图 194.5 本章小结 21第五章 总结 .22致谢 23参考文献 24CONTENTSChapter 1 Introduction 11.1 The Research Topics Background and Significance .11.2 The Status Quo 11.3 T
9、he Main Work and Structure of This Thesis 1Chapter 2 Background Knowledge.32.1 Production Introduction32.2 System Structure Introduction .32.2.1 System Introduction 32.2.2 CLI Module Introduction 42.3 FTP Client Requirement Introduction62.3.1 The Form of the FTP Client 62.3.2 FD Document for FTP mod
10、ule .62.4 Chapter Summary9Chapter 3 How FTP Works.103.1 File Transfer Protocol103.2 FTP Client Work Flow 103.3 Chapter Summary11Chapter 4 The Design and Implementation of FTP124.1 System Design .124.1.1 System Structure Design .124.1.2 System Flow124.1.3 System Flow Graph.134.2 Detailed Design .154.
11、2.1 Local Working Directory 154.2.2 File-filter Rule File154.2.3 Upload Flow Graph.164.2.4 Download Flow Graph184.3 Module Test 194.3.1 Command Input Test.194.3.2 Message Check194.3.3 All Route Test .194.4 System Running Graph .194.5 Chapter Summary21Chapter 5 Summary.22Acknowledgement 23Reference.2
12、4网络服务器 FTP 客户端的设计与实现1第一章 绪论1.1 选题背景与意义本项目来源于企业实际项目。该项目主要内容是为网络服务器开发命令行解析器,负责处理用户输入的命令并完成用户指定的内容。其中一个模块就是要在该系统中提供一个 FTP 客户端,用以从服务器外部获取文件或向服务器外部传送文件。其中最重要的功能则是要实现文件的过滤。由于服务器自身系统中并非所有文件均可公开,如何实现一种合适的机制来保证文件过滤对该系统有着至关重要的作用。1.2 现阶段研究状况目前,FTP 协议应用广泛。各种平台下的 FTP 客户端和服务器端层出不穷,功能也大致相同。在 Linux 系统下,更是有大量的开源 FTP
13、 客户端工具,这些工具都提供了通用的文件下载、上传等功能。然而,都不具备文件过滤的功能,因此更不存在成熟的文件过滤机制。因此,我们需要在这类基本的 FTP 客户端基础上建立一种简易、易扩展的文件过滤机制。 1.3 本文的主要内容和结构本文主要讲述了如何在开源 FTP 的基础上,设计文件过滤机制从而满足项目的需求。本文主要讲述以下几个部分的内容:(1)该服务器系统的结构(2)FTP 客户端的基本原理(3)过滤机制创建本文后续章节安排如下:第二章、介绍该服务器及其软件系统,阐述 FTP 客户端的运行环境,从而对系统流程有详细的认识。第三章、分析 FTP 客户端工作的主要原理从而对其改造打下基础。第
14、四章、详细介绍过滤机制的设计,以及如何建立一个合理的文件过滤机网络服务器 FTP 客户端的设计与实现2制。并且讲解在项目中如何对其进行测试。最后展示系统运行效果。最后总结本文的研究工作和结果,并就本文的后续研究提出自己的思考、见解和展望。网络服务器 FTP 客户端的设计与实现3第二章 背景知识本章主要介绍该 FTP 客户端运行的硬件环境和软件环境,以及 FTP 客户端的需求。为系统的开发奠定知识基础。硬件环境主要对该网络服务器功能和特性进行简要介绍。软件环境主要介绍该网络服务器软件系统的总体结构,对 Monitor, CLI,Web, Engine 这几个模块的功能和环境做简要介绍。由于 FT
15、P 客户端隶属于 CLI 系统,因此对于 CLI 系统进行了更为详细的介绍。最后,对于此次 FTP 客户端的具体功能,通过项目开发文档做简要说明。2.1 产品介绍当今社会,计算机网络成为企业发展必不可少的因素。然而,面对越来越多的攻击手段,企业网络的安全受到严重威胁,普通的网络路由器远远不能满足安全等方面的要求,因此富士通公司在研究了现阶段企业网络的新形势后,推出了一系列新型的网络服务器。该系列产品是一套综合网络设备,除了常见网络设备的交换/路由功能,还提供了 VPN、IIOP、带宽控制、负载均衡、路由控制、PPPoE、DHCP、DNS、NAT 等网络控制功能 1。在安全上,增加了访问控制、状
16、态检测、攻击防御等防火墙功能,大大简化了网络的安装和维护。该网络服务器不仅提供了传统的命令行配置界面,同时提供了 Web 配置界面以及基于 JRE 的监控模块,降低了对网络管理员的要求,简化了设备的配置和维护。2.2 系统结构介绍2.2.1 系统总体结构如图 2-1,该系统主要模块及其功能现简要介绍如下:(1)Engine:负责直接与系统硬件交互,提供了一系列接口由 CLI 模块调用,完成用户命令的配置。(2)CLI:即 Command Line Interpreter,负责与 Engine 交互,接受来自命令行和 Web 界面的命令,经过分析、处理后调用 Engine 提供的 API 完成命
17、网络服务器 FTP 客户端的设计与实现4令的执行。(3)Web:即图形化的用户界面,通过 Web 界面的形式与用户进行交互,将用户的设置通过 XML 文件反馈到 CLI。(4)Monitor:即监视器,在客户端安装相应的 JRE,即可实现图形化的监控界面,提供实时的服务器运行状态。该模块同样是通过 XML 文件和 CLI 进行交互。图 2-1: 网络设备软件系统结构图2.2.2 CLI 系统结构如图 2-2,CLI 模块主要由两大部分构成:Framework 和 Plug-in 。分别介绍如下:Framework:顾名思义,该部分是 CLI 的框架,负责直接与用户交互,分析用户输入的命令,并与
18、系统中加载的命令进行匹配处理。主要包含 ISF_Shell和 ISF_Session 两个类。分别对应了系统框架和与用户的会话。在系统启动时,ISF_Shell 类会创建如图 2-2 所示 4 个线程用以监听来自不同接口的用户连接。每当有新的用户连接到系统,ISF_Shell 类就会创建一个 ISF_Session 类来负责与该用户的会话。并根据连接方式的不同创建不同的 session。在此部分中,包含了系统的基本命令。网络服务器 FTP 客户端的设计与实现5Plug-in:系统中大部分命令均是以插件库的形式存放在系统中,这样可以便于以后的升级。一个插件模块是由如图 2-2 所示几个函数构成。
19、由于此次FTP 命令并非插件开发,在此不再赘述。ISF_Shell Class pthread(主要类型):ReceiveSerialConnectionReceiveSSHConnectionReceiveWebConnectionReceiveShellRequestConnectioncreateISF_Session Class(主要类型):ISF_SESSION_CONISF_SESSION_SSHISF_SESSION_TELNETISF_SESSION_WEBinitializeFramework:对应系统/proc/isfshell/bin/isfsh对应源代码中 Framew
20、ork 文件夹Plugins:对应系统/opt/isfshell/bin/plugin目录中所有.so 文件对应源代码中 lib 开头文件夹.so 插件主要函数:isf_plugin_initialize(ISF_Shellcmd_xxx(ISF_SessioncheckDependency_xxx(ISF_Sessiondistribute_xxx(ISF_Sessionrebuild_xxx(ISF_Sessionload图 2-2: 网络设备软件系统结构图网络服务器 FTP 客户端的设计与实现62.3 FTP 客户端需求介绍2.3.1 FTP 模块存在形式在此系统中,FTP 命令既不存在
21、于 Framework 中,也不存在于 Plug-in 中;而是以单独的二进制文件形式存在于 Linux 系统中,在用户输入 FTP 命令后,由 Framework 通过 Linux 系统来调用既存的 FTP 命令。2.3.2 FTP 模块 FD 部分文档表 2-1:FTP 模块 FD 部分文档 2函数名:cmd_ftp( )操作模式:用户 EXEC 模式管理员 EXEC 模式提示符:ipcom ipcom #命令输出:ipcom ftpftp open Connected to (10.100.10.11)220 internal1 FTP server (Version. ) ready
22、.Name (:isf): manager331 Password required for manager.Password: ftp !ls“!“ Command is not supported.The file list in the system should use the “lls“ command.ftp lls-File name Size Last modified time-sample0822.cli 24331 2003/08/22(Fri)10:22:13sample0823.cli 24843 2003/08/23(Sat)13:38:51memory-dump
23、31411520 2003/08/22(Fri)11:32:44process-dump 210411520 2003/08/22(Fri)14:30:11网络服务器 FTP 客户端的设计与实现7-Available storage capacity Size rate -Configuration 19058688 (93%) - database etc.temporary(CF) 6819840 (15%) - trace / loggingtemporary(HDD) 128556878 (11%) - trace / loggingprocess-dump 28753000 (95%
24、)-ftp put running-config.clilocal: running-f remote: running-f227 Entering Passive Mode (10,100,10,11,7,2).125 Data connection already open; Transfer starting.226 Transfer complete.21385 bytes sent in 6.2e-05 secs (47kbytes/sec)ftp bye221 Goodbye.ipcom XML输入:不支持XML输出:不支持依赖: (1) /save 文件夹初始化(2) 在/sav
25、e 中创建需要上传的文件的符号链接/etc/isfshell/*.cli-配置文件/etc/ipcom/virusgw/ftp-files/anti-virus-admin.txt- 病毒检查记录/etc/ipcom/sslvpn/links/sslvpn-link-*.xml- SSL-VPN link 配置文件/save/waf-site-policy-*.xml- waf site policy 配置文件网络服务器 FTP 客户端的设计与实现8消息:(1) 文件数超过最大值 Can not get more than . Please check the file list with “
26、lls“ command.【处理】删除部分文件后重试【位置】无【等级】错误:ERROR(2) 文件名中字符错误 The file name with an alphanumeric character “a-z 0-9“ and a symbols _- :.【处理】文件名字符应在【a-z】和【0-9】之间【位置】位置情報【等级】警告:WARNING(3) 文件大小超过最大值 Failed to copy file to system(Over: byte):.【处理】减小文件大小后重试【位置】无【等级】警告:WARNING检查处理:无注意事項: 系统中同时只能运行一个 FTP 客户端实例资料
27、来源:富士通:IPCOM X 运用管理机能式样书 ,2008 年 12 月。该文档详细描述了命令的样式,规定了函数的名称。提供了所有需要进行处理的系统中文件的路径和名称。并且明确了各种应该处理的错误,警告,及其对应的消息。系统完成后,应该与该文档中的描述完全一致,否则被认为没有满足需求。网络服务器 FTP 客户端的设计与实现92.4 本章小结本章介绍了该 FTP 客户端运行的硬件环境和软件环境,以及该 FTP 客户端的需求。通过本章,我们了解了系统的整体结构和 FTP 客户端在整个系统中的位置,理清了系统模块间的关系,为我们后续的开发和研究奠定了基础。网络服务器 FTP 客户端的设计与实现10
28、第三章 FTP 客户端原理本章针对 FTP 协议本身进行了介绍,虽然本次并不涉及到 FTP 协议本身的开发,但是理解 FTP 协议的原理可以有效的帮助我们对开源 FTP 进行改造。3.1 FTP 协议简介FTP(File Transfer Protocol) ,是文件传输协议的简称。用于 Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application) 。用户可以通过它把自己的 PC 机与世界各地所有运行 FTP 协议的服务器相连,访问服务器上的大量程序和信息 3。当用户启动 FTP 从远程计算机拷贝文件时,你事实上启动了两个程序:一个本地机上的 FTP 客户程序:它
29、向 FTP 服务器提出拷贝文件的请求。另一个是启动在远程计算机的上的 FTP 服务器程序,它响应你的请求把你指定的文件传送到你的计算机中。FTP 采用“客户机/服务器”方式,用户端要在自己的本地计算机上安装 FTP 客户程序 4。3.2 FTP 客户端工作流程首先,用户指定一个远程的 FTP 服务器地址,以及用户名和密码。服务器验证用户名和密码之后,客户端获取到服务器的默认目录,即可获取到该目录下的文件列表。用户即可下载和上传文件。此时,对客户端而言,有两个工作目录,一个是服务器端的,一个是本地的。下载时,默认下载到本地工作目录;而上传时,默认都是从本地工作目录中检索用户的文件。根据 FTP
30、协议,服务器端接受若干命令,如 PWD, CD 等等。客户端发送来的命令如果满足协议的规定,服务器端则进行处理,并将处理后的结果通过数字返回给客户端 5。FTP协议中定义了一系列的返回值用以表示不同的结果。具体可以参考相关文档。网络服务器 FTP 客户端的设计与实现113.3 本章小结本章是对 FTP 协议和工作原理的介绍, FTP 即文件传输协议,用来在网络间传输文件,它规定了一系列的操作,如 PWD, CD 等。另外,还定义了一些特定的名词,如工作目录,理解 FTP 协议可以帮助我们有效的对开源 FTP 进行改造。网络服务器 FTP 客户端的设计与实现12第四章 FTP 客户端的设计与实现
31、在了解了项目背景、项目需求以后,在本章详细介绍该 FTP 客户端的设计与实现。包括系统设计和详细设计,以及系统完成后的测试方法和运行效果。4.1 系统设计4.1.1 系统结构设计由于本次定制的 FTP 客户端是基于开源 FTP 的基础上改进而来,因此此次改造主要涉及两个方面的内容。首先,在原有开源 FTP 中增加少量文件过滤处理。即在 put()函数和 get()函数中增加一些简单的检查。此时主要进行的是针对 put 方法向外部服务器上传文件的检查,和少量的针对 get 方法的检查,如文件数量和文件大小的检查。另外,在 Framework 中,应该进行临时工作目录的建立,目录中文件的初始化。并
32、通过 Linux 系统创建一个子进程来调用外部的 FTP 命令。在 FTP 命令退出之后,需要进行复杂的文件过滤。大部分 FD 文档中规定的过滤将在此时进行。此时的过滤主要检查通过 get 方法获取到临时工作目录中的文件是否满足条件,如果满足,则将此文件移动到对应的系统目录中;否则,舍弃该文件。最后清空临时工作目录。 4.1.2 系统流程(1) 通过 Session.getOutputMode()函数获取当前 Session 输出类型。Session的输出类型依赖于用户的连接方式。Web 连接中的输出类型为ISF_OUTPUT_XML,其他连接方式的输出类型均为ISF_OUTPUT_CLI。C
33、md_ftp 命令不支持在 Web 方式连接中使用。因此通过输出类型来避免在 Web 中调用 cmd_ftp 命令。(2) 通过 Session.enterProcess()函数将当前执行命令 “execute ftp”记录在m_ProcessMsgStack 容器中,通告 Framework 当前 session 正在执行的任务。由网络服务器 FTP 客户端的设计与实现13于 m_ProcessMsgStack 是共享资源,因此需要对其进行互斥操作。 (3) 针对不同机型,通过 Session.getParam()函数获取命令行的参数。(4) elementLock.trylock()函数尝
34、试给 cmd_ftp 命令上锁。(5) 初始化/save 文件夹,清空该文件夹。该文件夹为 ftp 操作时的本地工作目录 。保存了可以进行 PUT 或 PUT_EX 操作的文件的符号链接。以及用于GET 或 GET_EX 命令下载的文件的临时存储。(6) FTP 命令执行前的初始化:/save 文件夹中符号链接文件的初始化。之前已通过 fileutil.conf 过滤规则文件中定义的文件属性,设置好 isf_fileconf 结构体数组。现在通过 isf_fileconf 中保存的各个文件的信息,对于 mode 为 PUT 或 PUT_EX 的文件进行链接。(7) 禁用 session 的 t
35、imeout 功能,并通过 session.getTerminalReadAuth(true)函数获取终端的读取权限。(8) 获取 ftp 命令的 path 构成 ftppath 字符串。连同其他参数一同压入command 容器中。进而通过 exec.setCommandLine(command)设置 execvp 命令执行时的命令行参数。并保存系统当前工作目录到 curDir 中。(9) 更改本地工作目录为 /save 目录。(10) 通过 exec.doModal() 函数调用 Linux 系统的 execvp() 函数执行 ftp 命令。修改后的 ftp 命令具有文件过滤功能。 (11)
36、 调用系统的 ftp 命令执行完后,放弃 terminal 的 read 权限。重置计时器,开启 timeout 功能。修改工作目录为之前保存的 curDir。(12) FTP 命令执行完的后续处理。针对 isf_fileconf 数组中文件的 mode 类型,对属性为 GET 或 GET_EX 的文件,在/save 目录中查找不是符号链接类型的文件,根据条件对他们进行过滤,不满足条件的文件,放弃复制到对应的系统实际目录中。并显示未被复制到系统中的文件列表。(13) 清空/save 文件夹。(14) 终止 session 处理过程,返回 CMD_SUCCESS。4.1.3 系统流程图网络服务器
37、 FTP 客户端的设计与实现14图 4-1:系统流程图网络服务器 FTP 客户端的设计与实现154.2 详细设计4.2.1 本地工作目录在 FTP 的工作原理中,提到在客户端工作的时候,需要一个本地的工作目录。对文件的上传和下载都是在该目录中进行的。然而,系统中的文件是分布在不同的目录中,所以我们必须新建一个目录作为本地的工作目录,并将所有需要进行操作的文件在该目录中有所体现。直接将这些文件创建一个副本必然会消耗大量的磁盘空间,因此并不合适。庆幸的是,Linux 为我们提供了一个可以满足我们需要的文件类型符号链接文件。符号链接又叫软链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,
38、可以链接不同文件系统的文件。链接文件甚至可以链接不存在的文件,这就产生一般称之为“断链”的现象,链接文件甚至可以循环链接自己。类似于编程语言中的递归。在对符号文件进行读或写操作的时候,系统会自动把该操作转换为对源文件的操作,但删除链接文件时,系统仅仅删除链接文件,而不删除源文件本身 6。因此我们在系统中创建一个名叫“save” 的目录作为 FTP 客户端的本地工作目录,并根据配置文件逐一创建符号链接文件。即可创建一个虚拟的本地工作目录。而在需要上传和下载的时候,通过与配置文件进行比对即可获取到真实路径。对于下文中提到的 GLOB 文件,由于配置文件中 path 一栏给定的是一类文件,我们需要利
39、用字扩展命令来获取完整的文件名。在 Linux 系统中可以通过wordexp()函数 7来完成。文件符号链接的生成则可以通过 symlink()函数来完成8。4.2.2 过滤规则文件文件过滤机制是本次定制 FTP 的主要功能,根据 FD 文档,我们发现需要进行操作的文件分布在不同的目录中;而且文件类型各不相同。如何设计一种简便而且容易进行增加,删除的过滤规则是最重要的。在 Linux 系统中,大部分的配置信息都是通过文本文件的形式进行设置的。网络服务器 FTP 客户端的设计与实现16因此,我们也可以设计一种配置文件作为过滤规则。配置文件格式如图 4-2:图 4-2:文件过滤规则文件格式此配置文
40、件规定了系统中的文件对用户的可见性;不在此配置文件中的文件,对用户是不可见的。下面就此配置文件格式做详细说明:Path:对应了该文件在系统中对应的路径,使用绝对路径。如果文件名中出现“*”号,则表示该条目对应同一类文件, “*”号的作用与在操作系统中的功能一样。例如“*.cli”指代所有后缀为“cli”的文件。Keyword:表示在使用 ls 等命令,以及在临时工作目录中,该文件对应的文件名。Flag:表明该过滤条目中对应的文件类型。ALIAS 表示此条目对应唯一的一个文件。GLOB 表示该条目对应一类文件。Mode:表示在系统中对该条目中的文件可以进行的操作。PUT 表示可以向外部服务器上传
41、该文件。GET 表示可以从外部服务器获取该文件到本系统。LS表示可以通过 LS 命令看到该文件。REMOVE 表示可以从系统中删除该文件。而 GET_EX, PUT_EX, REMOVE_EX 则表示在进行对应的操作之前,需要有额外的检查处理。至此,系统中主要难点均以解决,项目进入编码阶段。4.2.3 上传操作流程图网络服务器 FTP 客户端的设计与实现17图 4-3 上传操作流程图网络服务器 FTP 客户端的设计与实现184.2.4 下载操作流程图图 4-4:下载操作流程图网络服务器 FTP 客户端的设计与实现194.3 模块测试4.3.1 命令输入测试启动系统,检查命令的帮助信息是否完整,
42、正确。输入合法的参数,查看命令运行结果是否正确。通过 shell debug console 打开系统的 debug 信息,查看命令运行时的 debug 信息是否正确 9。4.3.2 消息检查根据 FD 文档中的规定,逐一尝试每一种文件,并验证 FD 文档中的消息是否能够正确反馈给用户。命令输入测试和消息检查都是属于黑盒测试,测试过程中务必做到认真仔细,确认命令的输出和输入与 FD 文档一致。4.3.3 全路由测试GDB 是 GNU 开源组织发布的一个强大的 UNIX 下的程序调试工具。象所有的调试器一样,GDB 可以让你调试一个程序,包括让程序在你希望的地方停下,此时你可以查看变量,寄存器,
43、内存及堆栈。更进一步你可以修改变量及内存值。GDB 是一个功能很强大的调试器,它可以调试多种语言。在此我们仅涉及 C 和 C+的调试,而不包括其它语言。还有一点要说明的是,GDB 是一个调试器,而不像 VC 一样是一个集成环境 10。为了保证系统的严密性,通过命令输入测试和消息检查,我们可以测试大部分的系统分支,但对于某些分支,一般情况下可能无法进入。此时,我们通过抽取工具,将系统中的所有分支抽取出来,通过 GDB 跑完所有剩余的分支。4.4 系统运行效果图进入命令输入符后,输入 tab 键两次,即可查看到命令的帮助信息,然后,输入 ftp 10.32.0.1 连接到自己搭建的 ftp 服务器
44、,效果如图 4-5:网络服务器 FTP 客户端的设计与实现20图 4-5:连接 FTP 服务器输入用户名 anonymous,密码为空,即可进入匿名账户。接下来即可通过 lls命令查看本地目录中的文件,如图 4-6。图 4-6: 查看本地文件接下来我们尝试从外部下载 startup-config.cli 文件时。结果如图 4-7:网络服务器 FTP 客户端的设计与实现21图 4-7:下载非法文件只要上传和下载操作不符合过滤规则文件中的定义,操作必将失败,并输出与该操作失败时相符的错误消息。其他情况不再一一列举。4.5 本章小结本章详细介绍了该 FTP 客户端过滤机制的设置,以及如何解决 FTP
45、 工作目录的设置。过滤采用过滤规则文件的方式,保证了简易性、易扩展性。利用临时目录,结合 Linux 系统的链接文件类型,从而实现了临时的工作目录。至此,一个完整的系统已经完成。网络服务器 FTP 客户端的设计与实现22第五章 总结此次定制 FTP 客户端模块是网络服务器整个系统中很重要的一个功能,如何设计一种文件过滤机制来保证对系统中文件的操作限制是我们主要的研究内容,结合 FTP 工作原理和 Linux 系统的特征,我们最终找到了如下解决方案:1. 采用 Linux 系统中常见的配置文件,创建符合本系统使用的过滤规则文件,记录文件的路径,文件名,文件类型和文件可进行的操作。从而可以通过增加
46、和删除过滤规则来实现对系统中不同文件的控制,满足最初提出的简便性和易扩展性需求。2. 设置临时目录,通过 Linux 系统中的链接文件类型,将可供上传的文件在临时目录中建立链接来创建一个临时的工作目录。临时目录也是下载文件的中转站。这样解决了 FTP 客户端工作时需要工作目录而系统中文件位于不同路径的矛盾。3. 通过命令输入测试、消息检查两项黑盒测试,可以检查基本的命令样式是否满足需求和基本功能是否正常。通过 GDB 进行全路由测试保证了系统各个分支的正常运行。然而,我们的系统仍然存在不尽如人意的地方,主要问题在于,对于文件的过滤操作,我们不得不采用循环语句对过滤规则文件进行遍历,即便是用户只
47、对一个文件进行了上传和下载操作,此时,系统的效率变得相当低下。因此,如何提高在对少量文件进行操作时系统的运行效率,是以后工作的主要内容和研究方向。此次项目总体上满足了最初的设计要求,保证了网络服务器整个系统的完整性,方便了用户在使用时的需要。今后随着系统升级等影响,对于 FTP 客户端的功能需求越来越多,我们也将继续进行深入的研究。网络服务器 FTP 客户端的设计与实现23致谢在我四年的本科生涯中,首先感谢厦门大学软件学院的老师们,你们辛勤的工作保证了我顺利完成人生中关键的四年本科的生活。你们给我们传道解惑,帮我们打好了牢固的理论根基,掌握了学习的方法。感谢我的导师教授在本人本科学习期间的关怀和学习指引,其严谨、认真的治学态度也是我学习的榜样。他的教诲,使我受益匪浅,终生难忘。感谢我的校外导师工程师。在校外实习期间,他总是不厌其烦的帮我指出项目开发过程中的错误。虽然他总是很忙,但是他始终是那么耐心。另外感谢跟我在一个项目组的另外三名实习生,虽然大家来自不同的学校,只相处了短短的三个月时间;但他们是我在实习期间最忠实的朋友,感谢他们对我的帮助。我知道我需要感谢的人实在太多而无法一一列举,但是请相信,我已将大家对我的无私关心和热情帮助铭记在心。