FTP客户端的设计与实现
专用FTP客户端系统的设计与实现

( 27 0 2 0 牟第 年第 期
L B R T R S IN E A O A O Y CE C
2 7 月出 0 年4 0 版
专 用 F P客 端 T 户 系统 的设 计 与 实现
田胜 利
( 昌学 院计算 机科 学技 术 学 院 许
关键 词 : 三层 架构 ;r 局域 网教 学 F P; r
随着 I e e 的普及 , nm t t 信息的交互传输显得越来 越重要 。在 局域 网中 , 我们通 过共享 文件夹 , 利用 网 络邻居进行信息共享 、 。在广域网中, r e 传输 我 ̄ s 常 i 用 z P Fl Tas r r oa) r ( i r f o c1进行 网络上信息 的传 e neP t 输和管理 。笔者在教 学实践 中发现无论 是利 用 网络 邻居还是 F P r 进行信息传输和管理 , 在实际应用中 都 有不尽如 人意 的地 方 , 比如 : 学 生 的上 机课 上 , 在 老师会布置一 些 实验 作 业 , 些 实验 作业 同学们 往 这 往一次两次课做不完。因此, 同学们会把未做完 的 作业保存起来 , 下次接着做。等下次上课时 , 同学很 可 能不会再使用上 次保存文 件 的机 器 。即便使用 的 是 同一 台机器 , 也很 可 能会 发现 自己的作 业 已被 删 除。并且 有 的机房 为 了安全 管理 , 取 了一 些措 施 , 采 禁止使用软盘或使用硬盘保护卡 , 使得信息不能保 存在 软盘 或本地机 器上 。有 的机房还 有可能 使用 的 是无盘工作 站 , 也会 出现类 似 的 问题 。平 时老 师会 在教师机上 安装 F P软件并 为 同学们建 立公用 的用 r 户名 、 密码 , 求 同学们 把作业通过 F P上传 到教师 要 T r 机上。因为利用 F P T 上传的信息 , r 你自己上传 、 可能 需 要下载 、 更新 或删 除 , 而其他 同学 同样 有这些 操作 权限, 若老师 为每个 同学建 立一个 用户 名 、 密码 且赋 予不同的权限 , 以解决这一问题。但是这样做比 可 较 麻烦 ( 工作 量 较 大 ) 。有 时 任课 老 师 会 在 教师 机 上 为每个 同学建 立共享 文件夹设置 共享 密码并 告诉 该同学, 使之通过网上邻居进行信息传输 , 显然该方 法也 比较麻烦且存 在一些 其它 问题 。这样 的例子 很 多 , 就不一一枚举 。鉴 于以上 情况 , 过认 真思 这里 经 考, 笔者 找到 了一种 解 决上 述 问 题 的方 法 。那 就 是 做一个专 用 的 F P客户 端软 件 , 用户 可 以 自己管 T r 使 理 自己上 传 的信息并 设置操作 权限 。 1 目前流行 的 F P服务器 软件和客 户端软件 . T r 目前 F P T 服务器端的软件 比较多 , U i操作 r 象 n x 系统 下 的 WU ̄P I'D软 件 、 no s操 作 系 统 下 的 q Widw Sr u( 国生 产 ) ev— 美 的软件 、adn l D( 国台湾 R i F' 中 e P
FTP服务器的安全策略设计与实现

FTP服务器的安全策略设计与实现导言随着互联网的发展,FTP(文件传输协议)作为一种广泛应用的文件传输协议,在数据传输中扮演着重要角色。
然而,由于其通信过程中可能存在的安全风险,设计和实施FTP服务器的安全策略至关重要。
本文将探讨FTP服务器的安全策略,并提供一种可行的实施方案。
1. FTP服务器的安全威胁分析在制定FTP服务器的安全策略之前,首先需要对其中可能存在的安全威胁进行分析。
常见的FTP安全威胁包括密码猜测、数据泄露和未经授权的访问等。
1.1 密码猜测密码猜测是指攻击者使用暴力破解方法,通过尝试多个用户名和密码的组合,试图获取FTP服务器的登录凭证。
1.2 数据泄露FTP服务器传输的数据可能被窃听者截获,导致敏感信息的泄露。
这对个人和组织的安全性构成了严重威胁。
1.3 未经授权的访问攻击者可能通过某种手段绕过权限控制机制,获得对FTP服务器的未经授权访问权限,进而执行恶意操作。
2. FTP服务器的安全策略设计2.1 强化登录验证机制为应对密码猜测攻击,FTP服务器应采用强化的登录验证机制。
具体做法包括:- 设置密码策略:要求用户设置强密码,并定期更换。
- 登录失败锁定机制:在多次登录失败后,暂时锁定用户账号。
- 使用双因素身份验证:引入第二层验证,如短信验证码或指纹识别等。
2.2 数据加密传输为防止数据泄露,FTP服务器应采用数据加密传输机制。
这可以通过以下方式来实现:- 使用安全的传输协议:如FTPS(基于SSL / TLS的FTP加密传输),它通过对传输数据进行加密来保护数据的机密性。
- 确保客户端和服务器端都支持数据加密传输:双方都需要安装并正确配置SSL / TLS证书。
2.3 建立访问控制策略为了限制未经授权的访问,FTP服务器需要建立访问控制策略。
以下是一些可行的方法:- 使用访问控制列表(ACL):根据IP地址、用户名或用户组设置访问权限。
- 强制使用安全通道:禁止使用非加密的FTP协议,只允许使用FTPS或SFTP进行传输。
毕业设计论文-IPv6环境下FTP系统的设计与实现(含源程序代码)

毕业设计(论文)IPv6环境下FTP系统的设计与实现毕业设计(论文)中文摘要IPv6环境下FTP系统的设计与实现摘要IPv4是目前广泛使用的互联网IP技术,IPv6则是下一代的IP协议,注入了许多新的内容。
随着互联网技术的不断发展,IP协议将慢慢从IPv4过渡到IPv6。
文件传输协议是互联网上广泛使用的在远程计算机系统和本地计算机系统之间传输文件的标准。
因此,本次毕业设计研究在IPv6环境下FTP系统的设计与实现。
本设计首先阐述了IPv6的发展状况,然后介绍了IPv6协议在各流行操作系统下的安装与配置,最后按照RFC959-《标准文件传输协议》和RFC2428-《FTP对IPv6和NAT的扩展》的要求,采用支持IPv6 Socket编程的JDK5.0,实现了绝大部分的FTP传输命令,包括一个服务端与一个客户端程序,经测试,均可工作于IPv4与IPv6环境。
关键字:IPv6 FTP C/S JDK5.0毕业设计(论文)外文摘要The Design and Implement of FTP System Base on IPv6 EnvironmentAbstract: While IPv4 is widely used technique at present in the internet, IPv6 is the next generation Internet Protocol that brings many new contents. Along with the development of internet technique, transition from IPv4 to IPv6 is necessary though maybe slowly. File Transfer Protocol is widely used in internet and is the standard of transfer file between remote computer system and local computer system. Consequently, I investigate the design and implement of ftp system in IPv6 environment.This paper first expounds the development of IPv6,then introduces IPv6's installation and configuration on popular operation systems, finally according to RFC595-<FILE TRANSFER PROTOCOL> and RFC2428-<FTP Extensions for IPv6 and NATs>,with JDK5.0 which supports IPv6 socket programming, implements a majority of FTP commands. This design presents a server site and a client site, which can work on IPv4 and IPv6 environment.Keywords: IPv6;FTP;C/S;JDK5.0目录1 引言 (1)1.1 课题的研究背景与意义 (1)1.1.1 课题的研究背景 (1)1.1.2 课题的研究意义 (2)1.2 问题定义及内容简介 (2)1.2.1 问题定义 (2)1.2.2 问题的内容简介 (2)1.3 课题调研与可行性分析 (3)1.3.1 课题调研 (3)1.3.2 可行性分析 (3)1.4 论文各章内容介绍 (4)2 系统需求分析 (5)2.1 IPv6发展现状 (5)2.2 系统环境的搭建 (9)2.3 基于C/S模型的网络开发 (9)2.4 支持IPv6的Socket编程 (12)3 文件传输协议 (15)3.1 介绍 (15)3.2 概览 (15)3.3 FTP的传输模式 (16)3.4 FTP的工作方式 (16)3.5 文件传输功能 (17)3.6 说明 (21)4 FTP对IPv6和NAT的扩展 (24)4.1 介绍 (24)4.2 EPRT命令 (24)4.3 EPSV命令 (25)4.4 命令使用 (25)5 FTP服务器的实现 (27)5.1 总体设计 (27)5.2 详细设计 (27)5.2.1 主函数设计 (27)5.2.2 服务线程 (27)5.2.3 其他主要命令 (30)5.2.4 数据库设计 (33)5.2.5 界面设计 (33)5.3 服务器测试 (33)6 FTP客户端的实现 (37)6.1 方案的选择 (37)6.2 界面的设计 (37)6.3 几个重要的类 (38)6.4 实现步骤 (38)7 用户使用手册 (40)7.1 系统功能简介 (40)7.2 运行环境简介 (40)7.2.1 系统环境配置 (40)7.2.2 JDK环境变量配置 (42)7.2.3 SQL Server2000的有关配置 (42)8 系统评价 (44)8.1 系统特色/优点介绍 (44)8.2 系统存在的不足与改进方案 (44)8.2.1 系统存在的不足 (44)8.2.2 系统的改进方案 (44)结论 (45)致谢 (46)参考文献 (47)1 引言1.1 课题的研究背景与意义1.1.1 课题的研究背景现有的互联网主要是基于IPv4协议的。
FTP(文件传输协议)的原理与实现

FTP(文件传输协议)的原理与实现FTP,即文件传输协议(File Transfer Protocol),是一种用于在计算机网络中进行文件传输的应用层协议。
它允许用户通过客户端和服务器之间进行文件的上传、下载和删除等操作。
本文将介绍FTP的原理和实现。
一、FTP的原理FTP的原理基于客户端-服务器(client-server)模型。
客户端和服务器通过FTP协议进行通信,客户端发出命令请求,服务器进行相应的处理并返回结果。
FTP采用不同的连接来进行数据传输和命令传输。
1. 命令传输连接命令传输连接是客户端和服务器之间进行命令交互的通道。
客户端通过该连接发送各种FTP命令,如登录、目录操作、文件操作等。
服务器接收到命令后执行对应的操作,并返回结果给客户端。
该连接使用TCP协议的默认端口号21。
2. 数据传输连接数据传输连接用于在客户端和服务器之间传输文件内容。
FTP支持两种方式的数据传输:主动模式(Active Mode)和被动模式(Passive Mode)。
- 主动模式:客户端向服务器发起数据传输连接,在该连接上进行文件的传输。
客户端随机选择一个端口并通过PORT命令告知服务器。
服务器返回连接确认请求,然后在该连接上进行数据的传输。
主动模式需要客户端开放一个端口用于接收服务器的连接。
- 被动模式:服务器向客户端发起数据传输连接,在该连接上进行文件的传输。
客户端发送PASV命令给服务器,服务器在随机开放的端口上等待客户端的连接。
客户端接收到服务器的地址和端口信息后,通过该地址和端口和服务器进行数据传输。
被动模式通过服务器来建立数据传输连接,适用于客户端无法开放端口的情况(如在防火墙后)。
通过命令传输连接和数据传输连接的组合,客户端和服务器可以实现文件的上传、下载和删除等功能。
二、FTP的实现FTP的实现涉及到客户端和服务器端的开发。
下面分别介绍两者的实现要点。
1. 客户端实现客户端实现主要包括以下几个方面的工作:- 用户界面设计:客户端需要提供一个用户界面供用户输入FTP服务器地址、用户名和密码等信息,并显示服务器返回的文件列表及操作结果等信息。
VisualC++网络编程案例实战之FTP客户端

4.1.6 FTP常用命令
• 在实际编程中,有些复杂的操作,只是需要客 户端发送相关的指令到服务器执行即可。所以, 对于用户来说掌握常用的FTP命令是非常重要 的。下面列举了一些常用的FTP命令,如表4.3 所示。
表4.3 常用FTP命令及意义
FTP命令 LIST PWD RETR STOR STOU STRU MODE ABORT 意 义 发送当前工作目录下的文件名列表到客户端 显示服务器的当前工作目录名 从服务器下载一个文件 上传文本文件到服务器,如果文件存在会被覆盖 上传文本文件到服务器,但不会覆盖已经存在的文件 设置文件的结构 指定数据的传输模式 通知服务器关闭连接
第4章 FTP客户端
• 本章将带领大家编写一个简单的FTP客户端程 序,实现简单的功能:登录FTP服务器,处理 服务器上的文件,如上传、下载,最后安全退 出服务器。先弄清楚原理,然后我们再考虑怎 样去实现。
4.1 FTP工作原理
• FTP的工作原理跟TCP一样,客户端需要先与 服务器连接,等待服务器的应答,最后再建立 数据通道。所以,FTP浏览器在和服务器建立 连接时也需要经过“三次握手”的过程。这表 示客户端与服务器之间的连接是可靠、安全的, 这也为数据传输提供了可靠的保证。FTP的工 作原理如图4.1所示。
图 4.1 FTP工作原理图
4.1.1 FTP数据结构
• 进行FTP编程之前,用户首先需要知道FTP有哪些 数据结构。由于在某些主机上保存的文件是面向 字节的,某些是面向记录的。所以在FTP中,除 了有不同的数据类型以外,还有几种不同的文件 结构类型。这样做的目的是为了在不同的主机之 间传送文件时能够相互识别。 • 二进制结构:文件中没有内部结构,一般被看作 二进制流。 • 文件式结构:由许多记录组成的文件。 • 页面结构:由不同的索引页组成文件。 • 注意:一般情况下,如果没有使用FTP命令去 设置文件的结构,则默认的结构是文件式结构。
安全FTP系统的设计与实现

靠且有效的数据传输等 , 应用 非常广泛 。但 是传统 的 F ’ T I P有 不少的安全漏洞 , 例如 明文传输 、 缺乏对数据 的机密性和完整性 保护 , 对通信双方也没有可靠 的认证措 施等 。针 对 F P的安全 T
漏洞 , 近年来也 出现 了一 些不需 要对 FP协议 自身 做完 全更改 I
关键 词 F P 安全 T r SL 加 密 S O P B S 6 T A E4
DES GN I AND M PLEM ENTATI I oN F A ECURE o S FTP YSTEM S
M a Ya Li at o Ba n c i n u H ia iYi g a ( co lfI om t nScryE gnei S ag a ioog U i rt,h nh i 0 0 0,hn ) Sho n rai eui n i r g,h nh i a t nv sy S ag 0 3 C ia o f o t e n J n ei a 2
Ab t a t sr c Fr sa p oo o ih c n ta se ls b t e o u e s c n e in l n a e n w d l s d Ho v r t e e a e lt f T P i r tc l wh c a r n f rf e ewe n c mp tr o v n e t a d h sb e i ey u e . we e .h r r o so i y
传输都在 S L通道里进行 。 S ( )用户认证 , 2 通过 ( sma , T , S 三元组 进行 , 中 U e me O P D ) 其
O P( n i as o ) 指 一 次 性 密 码 , S Dsa S ntr) T O e mePsw r 是 T d D ( i t i a e l g u
FTP客户端的设计与实现

FTP客户端的设计与实现1. 简介FTP(File Transfer Protocol)是一种用于文件传输的标准协议。
FTP客户端是指使用FTP协议与FTP服务器进行通信并传输文件的程序。
在本文中,我们将探讨FTP客户端的设计与实现。
2. 设计2.1 功能需求FTP客户端的主要功能需求包括:1.连接到FTP服务器2.在FTP服务器和本地电脑之间传输文件3.列出FTP服务器上的文件和目录4.创建和删除FTP服务器上的目录5.重命名FTP服务器上的文件6.支持多种操作系统(如Windows、Linux等)2.2 架构设计FTP客户端采用MVC(Model-View-Controller)模式来设计,其中:•Model层:管理FTP客户端的业务与数据逻辑。
提供FTP相关的API,封装了FTP协议的底层实现。
•View层:处理和呈现用户界面。
•Controller层:处理用户请求,调用Model层实现相关业务逻辑。
2.3 技术选型FTP客户端的技术选型如下:•编程语言:Java•GUI框架:JavaFX•FTP库:Apache Commons Net•构建工具:Maven•版本控制:Git2.4 待解决问题FTP客户端在设计中会遇到以下问题:1.如何扩展支持更多的FTP协议?2.如何实现可靠的文件传输?3.如何提高用户界面的体验?3. 实现3.1 界面实现使用JavaFX框架实现FTP客户端的用户界面。
主要界面包括:•登录界面:输入FTP服务器地址、用户名和密码登录FTP服务器。
•主界面:显示FTP服务器上的文件和目录,并提供文件传输和操作的操作界面。
3.2 功能实现FTP客户端通过Apache Commons Net库实现FTP底层协议。
实现的功能包括:1.连接到FTP服务器FTPClient ftp = new FTPClient();ftp.connect(server, port);ftp.login(username, password);2.在FTP服务器和本地电脑之间传输文件ftp.retrieveFile(remoteFile, localFile);ftp.storeFile(remoteFile, localFile);3.列出FTP服务器上的文件和目录FTPFile[] files = ftp.listFiles(remoteDir);4.创建和删除FTP服务器上的目录ftp.mkd(remoteDir);ftp.rmd(remoteDir);5.重命名FTP服务器上的文件ftp.rename(from, to);4. 总结通过对FTP客户端的设计与实现,我们了解了FTP协议的底层实现和FTP客户端的主要功能。
FTP客户端(1)

目录1 引言 (1)2 FTP简介 (1)2.1 FTP简介 (1)2.2 FTP工作原理 (1)3 系统分析及配置 (2)3.1 Ftp客户端设计思想 (2)3.2服务端配置-操作系统IIS安装 (3)4 FTP客户端概要设计 (5)4.1系统模块 (5)4.2系统功能 (5)4.3主要数据结构分析 (5)4.4程序界面设计 (6)5 详细设计及主要代码 (7)5.1设置列表控件的风格 (7)5.2对话框初始化 (8)5.3实现客户端连接到FTP服务器 (8)5.4列出FTP服务器目录 (9)5.5退出FTP服务器 (11)6 测试运行 (12)6.1登陆界面 (12)6.2列出服务器目录 (12)6.3退出服务器 (12)7总结 (12)参考文献 (13)1 引言FTP是Internet上用来传送文件的协议,它是为了我们能够在Internet上互相转送文件而制定的文件转送标准,规定了Internet上文件如何传送,通过FTP协议,我们可以跟Internet 上的FTP服务器进行文件上传或下载。
本实验以实现一个简单的FTP客户端为目标,实验目的是:1)熟悉网络应用层的传输协议,增强对FTP协议的了解;2)提高自己的动手能力以及编程能力;3)掌握vc和提高对MFC界面制作能力。
本次试验的要求如下:1)要求实现的程序为图形化界面,可以输入FTP服务的相关信息(包括IP地址、用户名与密码),输出交互过程中的FTP命令与响应信息,以及从FTP服务器的根目录获得的文件(或目录)列表。
2)要求遵循RFC959的相关FTP协议规定。
只要求实现USER、PASS、PASV、LIST 和QUIT命令。
点击Connect按钮,实现USER与PASS命令;点击LIST按钮,实现PASV 与LIST命令;点击Quit按钮,实现QUIT命令。
3)要求有良好的编程规范与注释信息。
4)要求有详细的说明文档,包括程序的设计思想、工作流程、关键问题等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FTP客户端的设计与实现摘要FTP是Internet上用来传送文件的协议。
它是为了我们能够在Internet上互相传送文件而制定的文件传送标准,规定了Internet上文件如何传送。
通过FTP协议,我们就可以跟Internet上的FTP服务器进行文件的上传或下载。
本设计以实现一个简单易用的FTP客户端为目标,通过分析FTP协议的基本工作原理和FTP的数据传输原理,研究如何使用VC++语言对FTP客户端进行设计,用Visual Studio2010设计和实现了FTP客户端的开发。
关键词FTP的工作原理;VC++;FTP客户端1绪论1.1 课题背景FTP是互联网上使用最广泛的文件传输协议[1]。
在互联网早期曾占据整个互联网通信的三分之一,它解决了在不同操作系统下处理文件格式的不兼容性。
传统方式需要在DOS 下输入命令,对于普通用户是件极困难的事。
但有了FTP客户端软件后,只要轻点几下鼠标就可以完成所有操作。
FTP客户端应该包含以下功能:登录,浏览目录,上传和下载[2]。
它已成为人们不可缺少的软件之一。
1.2 研究现状FTP服务是Internet上最早应用于主机之间进行数据传输的基本服务之一。
起初,FTP 并不是应用于IP网络上的协议,而是20世纪60~80年代美国国防部组建的ARPANET网络中,用于计算机间的文件传输的协议。
FTP服务的一个非常重要的特点是其实现可以独立于平台,也就是说在UNIX、DOS、Windows等操作系统中都可以实现FTP的客户端和服务器[3]。
尽管目前已经普遍采用HTTP方式传送文件,但FTP仍然是跨平台直接传送文件的主要方式。
目前市面上可通过正规渠道获得的成熟的FTP软件如Server-U、Cuteftp、Transmit、Flashfxp等都是国外开发的,需要注册、付费使用。
从其他渠道获取的FTP软件,则存在安全方面的问题。
国内也很难找到免费、安全的FTP软件。
虽然操作系统有自带的FTP 软件,但它是基于命令行的,没有友好的用户操作界面,对用户的计算机技能要求较高,一般的用户也不会用,而且不支持断点续传和文件夹的上传、下载等功能[4]。
因此,设计与实现一个开源的、适合大众需求的FTP客户端和服务器软件是有必要的,是符合社会发展需要的。
1.3 研究方法本设计主要用VC++语言开发FTP客户端软件[5]。
根据以前所学的相关知识:包括计算机网络技术,TCP/IP详解等;查阅Windows应用程序开发资料,学习VC++语言,FTP 通信过程,进而实现FTP软件的功能。
2 FTP协议分析2.1 FTP内容简介文件传输协议(File Transfer Protocol,FTP)[RC959]是因特网上使用最为广泛的文件传输协议[6]。
FTP提供交互式的访问,允许文件具有存取权限(如访问文件必须经过授权和有效指令),并允许用户指明文件的类型和格式(如指明是否使用ASCII码)。
FTP屏蔽了各计算机系统的细节,因而适合于在异构网络/主机间传输文件。
当用户(在Windows操作系统中有同名的应用程序,可以使用Windows中的“运行”对话框或在DOS命令行状态下运行)启动FTP与TCP/IP的网络主机进行文件传输[7]。
实际上要用到两个程序:本地机上的FTP客户程序,它提出传输文件的请求;运行在远程主机上的FTP服务器程序,它响应用户请求并把指定的文件传输到相应的主机上。
从根本上说,FTP协议就是在网络中各种不同的计算机之间按照TCP/IP协议来传输文件。
FTP协议采用客户机/服务器(Client/Sever)模式,由FTP客户端程序和FTP服务器端程序组成。
使用时,先启动FTP客户端程序与远程主机建立连接,然后向远程主机发出传输命令,远程主机在收到命令后就给予响应,并执行正确的命令。
FTP是基于TCP的文件传送协议,其传输的可靠性由TCP来保障。
在TCP/IP协议族中还有一个基于UDP的文件传送协议TFTP,它与FTP同属于文件共享协议,即在传输过程中复制整个文件,其特点是:若要传输一个文件,就必须先获得本地的文件副本。
若要修改文件,就只能对文件的副本进行修改,然后再将修改后的文件副本传回到原主机[8]。
一般说来,因特网上有两大类FTP文件服务器。
一类是所谓的“匿名FTP服务器”,这类服务器的目的是向公众提供文件资源服务,不要求用户事先在该服务器上进行注册。
另一类是非匿名FTP服务器,要进入这类服务之前,用户必须先向服务器系统管理员申请用户名和密码,非匿名FTP服务器通常供内部使用或提供咨询服务。
2.2 FTP工作原理FTP(FileTransferProtocol),是文件传输协议的简称。
用于Internet上的控制文件的双向传输。
同时,它也是一个应用程序。
用户可以通过它把自己机器与世界各地所有运行FTP 协议的服务器相连,访问服务器上的资源和信息。
FTP协议在TCP/IP协议栈中的位置如表2-1:表2-1 TCP/IP协议栈当启动FTP从远程计算机拷贝文件时,事实上启动了两个程序:一个本地机器上的FTP客户端程序,它向FTP服务器提出拷贝文件的请求。
另一个是启动在远程计算机的上的FTP服务器程序,它响应请求把你指定的文件传送到你的计算机中[9]。
在典型的FTP会话过程中,用户一般坐在本地主机前进行同远程主机之间的文件传输。
为了能够访问远程账户,用户必须提供用户标识和密码。
在通过了身份验证之后,用户就可以在本地主机和远程主机之间传输文件了。
用户通过FTP的用户代理与FTP进行交互。
用户首先需要远程提供主机名或IP地址,以便本地FTP的客户进程能够同远程主机上的FTP服务器进程建立连接。
然后,用户提供其标识和密码。
一旦验证通过,用户即可在两个系统之间传输文件。
FTP使用两个并行的TCP协议来传输文件,一个称为控制连接,另一个称为数据连接。
控制连接用来在两台主机之间传输控制信息,如用户标识、密码、操作远程主机文件目录的命令、发送和取向文件的命令等。
而数据连接则真正用来发送文件[10]。
FTP的控制和数据连接如图2-1图2-1 FTP工作原理示意图当用户启动一次与远程主机的FTP会话时,FTP首先建立一个TCP连接到FTP服务器的21号端口。
FTP的客户端则通过该连接发送用户标识和密码等,客户端还可以通过该连接发送命令以改变远程系统的当前工作目录。
当用户要求传送文件时,FTP服务器则在其20号端口上建立一个数据连接,FTP在该连接上传送完毕一个文件后会立即断开该连接。
如果再一次FTP会话过程中需要传送另一个文件,FTP服务器则会建立另一个连接。
在整个FTP会话过程中,控制连接是始终保持的,而数据连接则会随着文件的传输不断的打开和关闭。
2.3 FTP工作模式FTP采用C/S(客户端/服务器)模式进行通信,但与其他的C/S模式网络通信协议又有一个很大的区别。
通常在进行HTTP通信或是TELNET通信的时候,只需要一个端口进行通信。
即客户端只需要连接一个端口进行数据通信。
如TELNET的默认端口是23,用户从头到尾都只需使用这个端口。
但是FTP通信除了有一个默认端口21之外,还需要其他的端口。
其中默认端口(21)主要进行控制连接,进行命令协议和服务器端的响应码的传输;另外一个非标准端口主要进行数据传递,如文件的上载、下载等[11]。
至于非标准端口的产生则要根据用户选择的连接模式而定:如果客户选择的是主动模式(PORT),则需要用户端提供给服务器一个IP地址和一个非标准端口;而如果用户采用被动模式(PASV),则服务器端需要提供给客户端一个IP地址和一个非标准端口。
下表2-2是几个著名的TCP端口号:表2-2 TCP端口号控制连接是建立在USER-PIT和SERVER-PI之间用于交换命令与应答的通信链路。
数据连接是传输数据的全双工连接,传输数据可以发生在服务器DTP和用户DTP之间也可以发生在两个服务器DTP之间,FTP可以传输非连续的文件,这些文件的一部分称为页。
服务器DTP代表一种传输过程,它通常处于“主动”状态,它和侦听端口建立数据连接,它还可以为传输和存储设置参数,并根据PI的指令传输数据。
具体工作模式如图2-2所示:图2-2 FTP工作模式在开始阶段,标准FTP命令由用户PI产生并通过控制连接传送到服务器进程。
服务器PI向用户PI返回标准应答。
FTP命令指定数据连接参数和文件系统操作。
用户DTP在特定数据端口侦听,服务器开始数据连接并以指定的参数开始数据传输。
数据端口不必在开始FTP命令的机器上,但用户或用户FTP进程必须确定它在指定的数据端口上侦听.这个数据连接是全双工的。
2.4 简单文件传送协议TCP/IP协议族中还有简单文件传输协议,它是一个很小且易于实现的文件传送协议[RFC 783,RFC 1350].虽然TFTP也使用客户机/服务器方式,但它的传输层使用UDP支持,因此TFTP要自己实现纠错功能。
TFTP只支持文件传输,而不支持交互,且没有一个庞大的命令集。
TFTP没有列目录的功能,也不能对用户进行身份验证[12]。
TFTP的主要优点有两个。
第一,TFTP可用于UDP环境。
例如,当需要将程序或文件同时向许多计算机下载时往往就需要使用TFTP。
第二,TFTP代码所占用的内存空间较小。
这对存储容量较小的计算机或某些特殊用途的设备是很重要的。
这些设备不需要硬盘,只需要固化了TFTP、UDP、和IP的小容量只读存储器即可。
3 FTP客户端的设计3.1 设计目的FTP早已应用在网络的各个方面,比如我们在访问网络上的资源时,经常会遇到需要连接FTP服务器来下载,或者你制作了一个网站,想要将其上传至服务器,让大家能够访问它,这个时候就会用到FTP客户端。
一般来说,系统需求分析从以下几个方面来介绍:①用户需求。
软件要简单上手,能够匿名或者使用帐号登录到用户指定的服务器上,进行访问和数据的上传和下载。
②功能需求。
该系统主要包括以下几个方面:登录和连接服务器模块;浏览服务器/本地目录和文件模块;上传和下载文件模块。
由这三个模块构成该系统。
③性能需求。
整个系统操作应当简便,界面友好,运行稳定,执行速度快。
系统本身运行对计算机硬件平台和操作系统平台要求适中。
因此本文所设计的FTP客户端则适合大多数用户使用,界面设计的很简单,使用户可以一目了然,而且具备FTP客户端的基本功能,可以作为下载、上传文件的工具来使用。
3.2 开发语言程序中所用到的编程语言就是C++。
C++是在C语言的基础上开发的一种通用编程语言,应用广泛[13]。
C++支持多种编程范式--面向对象编程、泛型编程和过程化编程。
最新正式标准C++14于2014年8月18日公布。