滁 州 学 院
课 程 设 计 报 告
课程名称:
计算机网络
设计题目: ftp 客户端的设计与实现
系
专
组
别:
计算机与信息工程学院
业:
别:
计算机科学与技术
第八组
起止日期: 2011 年 12 月 24 日~2011 年 1 月 8 日
指导教师:
计算机与信息工程学院 二○一 一年制
课程设计题目
FTP 客户端的设计与实现
计 算 机 与 信 息 工
程学院
学号
专业
组长
系别
组员
指导教师
课程设计目的
班级
2 班
计算机科学与技术
实现 ftp 客户端
课程设计所需环境
C++
ftp 服务器
课程设计任务要求
设计一个 ftp 客户端可以实现文件的上传和下载的功能
课程设计工作进度计划
序号 起止日期
工 作 内 容
分工情况
1
2
3
4
5
2011.11.30
2011.12.2
2011.12.3
2011.12.13
分析课题和查找资料
全体成员参与
编程语言的选择
2011.12.3
2011.12.13 主要函数的编写
2011.12.3
2011.12.13
2011.12.14
2011.12.15
其它函数的编写
实验报告的编写
教研室审核意见:
指导教师签字:
年
月
日
教研室主任签字:
年
月
日
目录
1 绪论 ................................................................................................................................................ 1
1.1 研究背景 ............................................................................................................................ 1
1.2 主要工作 ............................................................................................................................ 1
1.3 本文结构 ............................................................................................................................ 1
2 相关知识介绍 ................................................................................................................................ 2
2.1 FTP 工作原理 .................................................................................................................... 2
2.2 FTP 工作模式 ..................................................................................................................... 2
2.3 FTP 传输模式 .................................................................................................................... 4
2.3.1 ASCII 传输方式 .....................................................................................................4
2.3.2 二进制传输方式 ....................................................................................................4
3 FTP 客户端的设计 ......................................................................................................................... 4
3.1 设计目的及工具选择......................................................................................................... 4
3.1.1 设计目的 ................................................................................................................ 4
3.1.2 设计工具 ................................................................................................................ 5
3.2 客户端主要模块设计........................................................................................................5
3.2.1 客户端连接模块 ....................................................................................................5
3.2.2 上传模块 ................................................................................................................ 7
3.2.3 下载模块 ................................................................................................................ 9
4 调试与操作说明 .......................................................................................................................... 11
4.1 运行方法 .......................................................................................................................... 11
4.2 运行结果 ........................................................................................................................... 11
5 课程设计总结与体会 .................................................................................................................. 14
参考文献 .......................................................................................................................................... 15
附录 .................................................................................................................................................. 16
致谢 .................................................................................................................................................. 27
滁州学院本科课程设计
FTP 客户端的设计与实现
FTP 是 Internet 上用来传送文件的协议。它是为了我们能够在 Internet 上互相传送文
件而制定的文件传送标准,规定了 Internet 上文件如何传送。通过 FTP 协议,我们就可以跟
Internet 上的 FTP 服务器进行文件的上传或下载。本文以实现一个简单易用的 FTP 客户端为
目标,通过分析 FTP 协议的基本工作原理和 FTP 的数据传输原理,研究如何使用 C++ 工具对
FTP 客户端进行设计,选择 C++来实现 FTP 客户端程序的上传下载等主要功能, 并用相应软
件提供的一个支持可视化编程的开发环境,从而实现了对 FTP 客户端的实现。
1 绪论
1.1 研究背景
FTP 是 Internet 上最早也是最广的应用,直到今天它仍是最重要和最基本的应用之
一。用 FTP 将信息下载到本地是一件十分普遍的事。也随之出现了许多下载软件。尽管远程
登录(Telnet)提供了访问远程文件的极好方法,但怎么也比不上使用自己计算机中的文件
方便。如果用户想使用其它计算机上的文件,最理想的方法就是把它 COPY 到自己的计算机
中,以便在本地计算机上操作。FTP 正是完成这项工作的工具,你可以在任意一个经过文件
传输协议(FTP)访问的公共有效的联机数据库或文档中找到你想要的任何东西。全世界现
在已有 1000 多个(96 年的数据)FTP 文件服务器对所有 INTERNET 用户开使用,用户可以通
过与 Internet 相连到远程计算机,把自己需要的文件传输过来或是把自己的收集传输上去
与他人共享。传统的数据库应用系统采用的是客户机/服务器(Client/Server)模式,有高度
的交互性,高效的用户界面等优点
1.2 主要工作
通过客户端可以实现文件的上传和下载。其促进文件的共享(计算机程序或数据)、鼓
励间接或者隐式的使用远程计算机、向用户屏蔽不同主机中各种文件存储系统的细节和可靠
和高效的传输数据。
1.3 本文结构
本文第 1 部分绪论主要说明了研究背景、主要工作和本文结构。第 2 部分说明了有关
ftp 的相关知识。第三部分系统设计,绘制了系统的模块图、流程图和模块的实现。第四部
分系统的测试与数据分析,说明了测试遇到的问题、解决方法及系统进一步的优化。第五部
分是本课程设计的总结和体会。
1
滁州学院本科课程设计
2 相关知识介绍
2.1 FTP 工作原理
FTP(File Transfer Protocol),是文件传输协议的简称。用于 Internet 上的控制文
件的双向传输。同时,它也是一个应用程序。用户可以通过它把自己机器与世界各地所有运
FTP 协议的服务器相连,访问服务器上的资源和信息。
FTP 协议在 TCP/IP 协议栈中的位置如表 1:
表 1 TCP/IP 协议栈
HTTP FTP TELN SMTP DNS TFTP NMP
TCP UDP
IP
X25 ISDN LAN WLAN FDDI ATM
应用层
传输层
互联网络层
网络接口层
当启动FTP从远程计算机拷贝文件时,事实上启动了两个程序:一个本地机器上的FTP
客户端程序,它向FTP服务器提出拷贝文件的请求。另一个是启动在远程计算机的上的FTP
服务器程序,它响应请求把你指定的文件传送到你的计算机中。FTP采用“客户端/服务器”
方式,用户要在自己的本地计算机上安装FTP客户端程序。从根本上说,FTP协议就是在网络
中 各 种 不 同 的 计 算 机 之 间 按 照 TCP/IP 协 议 来 传 输 文 件 。 FTP协 议 采 用 客 户 端 / 服 务 器
(Client/Sever)模式,由FTP客户端程序和FTP服务器端程序组成。使用时,先启动FTP客户
端程序与远程主机建立连接,然后向远程主机发出传输命令,远程主机在收到命令后就给予
响应,并执行正确的命令。但是FTP有一个根本的限制,那就是,如果用户在某个主机上没
有注册获得授权,即没有用户名和口令,就不能与该主机进行文件传输。但匿名FTP服务器
除外,它能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该
远程主机的注册用户。用户使用特殊的用户名“Anonymous”或“guest”就可有限制地访问
远程主机上公开的文件。现在许多系统要求用户将Emai1地址作为口令,以便更好地对访问
者进行跟综。出于安全的目的,大部分匿名FTP主机一般只允许远程用户下载文件,而不允
许上载文件。也就是说,用户只能从匿名FTP主机拷贝其需要的文件而不能把文件拷贝到匿
名FTP主机。另外,匿名FTP主机还采用了其他一些保护措施以保护自己的文件不至于被用户
修改和删除,并防止计算机病毒的侵入。匿名FTP一直是Internet上获取信息资源的最主要
方式,在Internet成千上万的匿名FTP主机中存储着无以计数的文件,这些文件包含了各种
各样的信息、数据和软件。人们只要知道特定信息资源的主机地址,就可以用匿名FTP登陆。
2.2 FTP 工作模式
FTP 采用C/S(客户端/服务器)模式进行通信,但与其他的C/S 模式网络通信协议又有
一个很大的区别。通常在进行HTTP 通信或是TELNET 通信的时候,只需要一个端口进行通信。
2
滁州学院本科课程设计
即客户端只需要连接一个端口进行数据通信。如TELNET 的默认端口是23,用户从头到尾都
只需使用这个端口。但是FTP 通信除了有一个默认端口21 之外,还需要其他的端口。其中
默认端口(21)主要进行控制连接,进行命令协议和服务器端的响应码的传输;另外一个非
标准端口主要进行数据传递,如文件的上载、下载等。至于非标准端口的产生则要根据用户
选择的连接模式而定:如果客户选择的是主动模式(PORT),则需要用户端提供给服务器一
个IP 地址和一个非标准端口;而如果用户采用被动模式(PASV),则服务器端需要提供给
客户端一个IP 地址和一个非标准端口。下表是几个著名的TCP 端口号:
TCP 端口号
20
21
23
25
53
80
110
119
表2 TCP 端口号
关键字
FTP-DATA
FTP
TELENET
SMTP
DOMAIN
HTTP
POP3
NNTP
描述
文件传输协议数据
文件传输协议控制
远程登录协议
简单邮件传输协议
域名服务器
超文本传输协议
邮局协议
新闻传送协议
FTP 中字节大小有两个:逻辑字节大小和用于传输的字节大小。后者通常是8 位,而前
者可不一定是多少了。传输字节不必等于逻辑字节大小,也不必对数据结构进行解释。控制
连接是建立在USER-PIT 和SERVER-PI 之间用于交换命令与应答的通信链路。数据连接是传
输数据的全双工连接,传输数据可以发生在服务器DTP 和用户DTP之间也可以发生在两个服
务器DTP 之间,FTP 可以传输非连续的文件,这些文件的一部分称为页。服务器DTP 代表一
种传输过程,它通常处于“主动”状态,它和侦听端口建立数据连接,它还可以为传输和存
储设置参数,并根据PI 的指令传输数据。当然,DTP 也可以转入“被动”状态。服务器FTP
进程,它是和用户FTP 进程一起工作的,它由PI 和DTP 组成。在开始阶段,标准FTP 命令
由用户PI 产生并通过控制连接传送到服务器进程。服务器PI 向用户PI 返回标准应答。FTP
命令指定数据连接参数和文件系统操作。用户DTP 在特定数据端口侦听,服务器开始数据连
接并以指定的参数开始数据传输。数据端口不必在开始FTP 命令的机器上,但用户或用户FTP
进程必须确定它在指定的数据端口上侦听.这个数据连接是全双工的。
3
滁州学院本科课程设计
2.3 FTP 传输模式
FTP 协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的
位置、联接的方式、甚至是是否使用相同的操作系统无关。假设两台计算机通过ftp 协议对
话,并且能访问Internet, 你可以用ftp 命令来传输文件。每种操作系统使用上有某一些
细微差别,但是每种协议基本的命令结构是相同的。FTP的传输有两种方式:ASCII传输模式
和二进制数据传输模式。
2.3.1 ASCII 传输方式
假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,
当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文
本文件的格式。但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可
能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中
也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件之前,用binary
命令告诉ftp逐字拷贝,不要对这些文件进行处理。
2.3.2 二进制传输方式
在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地
机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到
Windows系统,在对方系统上,此文件不能执行。如果你在ASCII方式下传输二进制文件,即
使不需要也仍会转译。这会使传输稍微变慢,也会损坏数据,使文件变得不能用。
3 FTP 客户端的设计
3.1 设计目的及工具选择
3.1.1 设计目的
FTP 早已应用在网络的各个方面,比如我们在访问网络上的资源时,经常会遇到需要
连接FTP 服务器来下载,或者你制作了一个网站,想要将其上传至服务器,让大家能够访问
它,这个时候就会用到FTP 客户端。
虽然平时使用windows 自带的IE 浏览器即可实现对FTP 服务器的访问,但是IE 只是个
很粗糙的FTP 客户端。IE 浏览器在6.0 以下的版本不支持PASV 方式访问服务器, 而且IE
浏览器在登录FTP 服务器的时候,无法查看返回的信息,在出错的时候,无法找到错误的原
因,因此在使用上很不方便。
现在大多数的FTP 客户端软件都是收费版的,而且以英文版居多,使用上操作很复杂,
4
滁州学院本科课程设计
目前流行的有CoreFtp、AceFtp 、Ftp Voyager 等,但是大多数用户并不习惯使用这些软件。
本文所设计的FTP 客户端则适合大多数用户使用,界面设计的很简单,使用户可以一目
了然,而且具备FTP 客户端的基本功能,可以作为下载、上传文件的工具来使用。
3.1.2 设计工具
程序设计中用到的主要工具就是C++,C++是一种面向对象的新一代网络编程语言,它
可以在各种不同的机器、操作系统的网络环境中进行开发,具有解释型语言(如Basic语言)
和编译型语言(如C语言)的特性。 C++中各种利大于弊的功能和许多很少用到的功能,用C++
开发的程序可以在网络上传输,并运行于任何客户机上。
使用C++语言可以方便的设计出网络应用类的程序,而且C++的移植性很好,在、其应用
程序在各种机器上都能无差别的执行。
为了使FTP客户端能适应大多数平台下的使用,我选择使用C++语言来实现。
3.2 客户端主要模块设计
3.2.1 客户端连接模块
运行客户端后,首先是连接服务器,需要输入服务器IP 地址,用户名和密码,然后点
击连接,观察是否连接成功,若成功则显示远程文件的列表。
若连接失败,则抛出异常,弹出对话框显示出错误,可知如何修改,然后重新输入服务
器 IP 地址或用户名或密码,直到连接上服务器。下图为客户端连接流程图:
5