




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本科毕业设计(论文) FTP服务器技术研究与实现学 院 信息工程学院 专 业 通信工程 年级班别 XXXXX 学 号 XXXXX 学生姓名 XXXXX 指导教师 XXXXX 2014年 5 月摘 要随着现代信息技术的高速发展,网络通信技术在现代科技领域的应用日益深入,网络通信服务需求也越来越多,这样就需要有一个良好的服务器平台来满足用户日益增长的网络服务需求。因此研究相关网络通信技术并实现软件平台设计成为网络发展的一个热门课题。本文就是在此背景下研究并实现FTP服务技术。论文首先简述计算机网络的发展过程。然后介绍TCP/IP协议五层体系结构和每一层的功能,在此基础上对TCP/IP协议和FTP协
2、议的基本工作原理进行研究分析。根据FTP服务器的设计要求和要实现的功能,确定整个系统的总体框架模型。本文的FTP服务器器系统是在VC开发环境下、基于C/S模式、使用当前模块化软件设计思想编程实现的,并对主要的客户端连接模块、上传模块、下载模块设计进行详细分析并附上相关代码。最后对FTP服务器系统进行测试,可以满足实现文件传输服务的要求。实践表明,研究并实现FTP服务器技术对于满足网络服务需求、促进网络技术发展有实用意义。关键词:VC+,文件传输协议,客户端注:本设计(论文)题目来源于教师的校级科研项目。AbstractThe network communication technology a
3、pplied in the field of modem science and technology gets deepening and the demand for its service gets rising due to the high-speed development of modem information technology, so that a good server platform is a necessary to meet the growing demand of users for the network service. And study the re
4、levant network communication technology and realize the software platform design become a hot topic of network development. Under this background, the article is to study and implement the FTP service technology.Firstly, The article briefly describes the development of the computer network, then int
5、roduce five layers of the TCP/IP protocol architecture and the function of each layer. On this basis, the article studys and analyzes the basic working principle of the TCP/IP protocol and the FTP protocol. layerAccording to the design requirements and function to be realized on the server, the over
6、all framework model is confirmed. The FTP file transmission server system is compiled in VC software environment to implement the system by making use of the modular software thought to design, based on the C/S mode. The article analyzes the main modules including client connection module, uplo
7、ad module and download module and provide the relevant code. Finally, through testing the FTP server system, it can meet the requirements of providing file transfer service. Practice shows that research and implement the FTP server technology has practical significance to meet the demand of network
8、services and promote the development of network technology.Key words:VC+, FTP, Client目 录1 绪 论11.1 课题背景11.2 国内外研究现状11.3 本课题研究的意义和方法21.4 论文内容结构安排22 计算机网络与TCPI P协议32.1 计算机网络32.1.1 计算机网络的概念32.1.2 计算机网络发展过程32.1.3 计算机网络性能指标42.1.4 计算机网络的体系结构52.2 TCPIP协议62.2.1 TCPI P各层功能62.2.2 TCP协议分析83 FTP协议分析113.1 FTP 工作原
9、理113.2 FTP工作模式123.3 FTP 传输模式143.3.1 ASCII传输方式143.3.2 二进制传输方式144 FTP客户端的设计154.1设计目的及工具选择154.1.1设计目的154.1.2设计工具154.2客户端主要模块设计154.2.1客户端连接模块154.2.2上传模块184.2.3下载模块205 系统测试235.1运行方法235.2运行结果23结 论27参 考 文 献28致 谢29附 录 核心代码301 绪 论1.1 课题背景目前,FTP 服务在网络上已经是一种广泛使用的服务了,它是建立在FTP 协议上的用于网络环境下进行文件传输的一种文件传输系统,几乎可以传输各种
10、类型的文件,如文本文件、声音文件、图像文件等,这个文件传输系统由服务器端程序和客户端程序共同组成,客户端程序提供用户操作的界面并完成文件的上传和下载。在众多的网络应用中, FTP 有着非常重要的地位,在Internet 中一个十分重要的就是资源,而各种各样的资源大多数都是放在FTP 服务器中的,为了获得这些资源,我们必须使用FTP 客户端软件。如今网络上有许多FTP 客户端类的软件,但是由于其界面复杂,操作繁琐,不被大多数用户接受,为了更好的利用网络资源,方便用户使用FTP,我设计了一种简便易用的FTP 客户端。本文首先介绍了计算机网络和TCP/IP协议的相关知识,然后分析FTP 协议,FTP
11、 的工作原理等,最后介绍了如何使用VC+6.0工具来设计和实现一个简单的FTP 客户端。使用本FTP 客户端,可以使用户轻松的下载、上传网络资源。1.2 国内外研究现状1971年,第一个FTP的RFC(RFC 114)由A.K.Bhushan在1971年提出,同时由MIT与Harvard实验实现;1972年,RFC 172 提供了主机间文件传输的一个用户级协议;1973年2月,在长期讨论(RFC 265,RFC 294,RFC 354,RFC 385,RFC 430)后,出现了一个官方文档RFC 454;1973年8月,出现了一个修订后的新官方文档 RFC 542,确立了FTP的功能、目标和基
12、本模型。当时数据传输协议采用NCP;1980年,由于底层协议从NCP改变为TCP,RFC 765 定义了采用TCP的FTP;1985年,一个作用持续至今的官方文档RFC 959(STD 9)出台。用FTP传输文件,本来用户事先应在远方系统注册,但后来为了便于大家获取资源,FTP在互联网上有一种特殊的也是非常广泛的应用是匿名FTP (anonymous FTP)。通过Internet,任何用户可以使用FTP和一个公用账号(通常账号名是anonymous)去获得一些公用资源。在Internet上目前有许许多多的这种公用计算机,我们把这种用来做匿名FTP服务的计算机称作FTP服务器(FTPSite)
13、,对每一个联入Internet的用户,只要知道这些FTP服务器的地址,就可以与它们连接并获取上面各种资源。由于FTP操作简单实用,开放性强,且能充分利用Internet来进行信息传递与交流,所以目前越来越多的FTP服务器连入Internet,这样越来越多的资源就可以通过匿名FTP来获得。1.3 本课题研究的意义和方法进一步熟悉VC+开发环境,掌握一定开发Windows应用程序技术。对提高自己的VC+语言编程能力,熟悉ftp工作过程。制作一个界面友好,快速,稳定的下载软件。对信息的快速共享起着一定的作用。让用户能第一时间和别人共同分享信息资源。并希望能给FTP客户端编写初学者一些帮助。用VC+6
14、.0开发FTP客户端软件。根据现有的FTP软件进行设计与实现。综合以前所学的相关知识:包括计算机网络技术、TCP/IP详解、信息安全相关知识等;查阅Windows应用程序开发资料,学习VC+语言,FTP通信过程。1.4 论文内容结构安排本文围绕文件传输服务器的搭建以及FTP协议功能的实现进行研究,共分以下几个部分:第二章研究计算机网络的发展历程,以及在此基础上形成的TCP/IP协议的基本原理。并具体分析了标准FTP协议。第三章具体分析了标准FTP协议的基本内容和原理。第四章重点研究FTP整个服务器的具体设计,采用由需求到设计的思路来设计系统。其中详细研究FTP的工作模式,并采用模块化设计方法来
15、组建服务器。分析各个网络通信模块如FTP服务对象模块等等的工作流程和实现方法,并附上实现各模块功能的主要代码,最终实现了这个FTP服务器。第五章对此服务器进行功能和性能测试。并根据测试结果对本服务器予以分析。最后总结本次毕业设计的基本工作。2 计算机网络与TCPI P协议本章主要对计算机网络发展历程,TCPI P协议的内容进行基本介绍。2.1 计算机网络2.1.1 计算机网络的概念2l世纪的一些重要特征就是数字化、网络化和信息化,它是一个以网络为核心的信息时代。我们所说的网络包括三个网,即电信网络、有线电视网络和计算机网络。其中发展最快并起到核心作用的是计算机网络。计算机网络涉及到通信和计算机
16、两个领域。计算机和通信日益紧密的结合,已对人类社会的进步做出了极大的贡献。计算机网络的最基本的形式是两台计算机相互连接进行通信。当然,大多数网络中计算机的数量大大超过两台,但是网络通信的原理都是一样的。在技术上都是计算机和通信的结合。可以说:计算机网络是独立自主的计算机互连的集合体。计算机网络具有如下特点:(1)计算机独立自主。一台计算机不能强制性地启动、停止和控制另一台计算机,排除了计算机间的主从关系。(2)借助于通信链路,互连手段多样,可以通过电缆、光纤、微波和通信卫星。(3)遵循一定的网络体系结构,在协议的支持下工作。根据规模和距离的大小,可以将网络分为局域网(LAN)、城域网(MAN)
17、、广域网(WAN)、互联网(Internet)以及无线网(Wireless Network)。2.1.2 计算机网络发展过程现代计算机网络实际上是20世纪60年代美苏冷战时期的产物。根据当时提出的要求,这种网络必须满足以下的一些基本要求:(1)和传统的电信网不同,这种新型的网络不是为了打电话,而是用于计算机之间的数据传送。(2)新型的网络能够连接不同类型的计算机,即不局限于单一类型的计算机。(3)所有的网络节点同等重要,这样就可以提高网络的生存性。(4)计算机在进行通信时,必须有冗余的路由。(5)网络的结构应当尽可能地简单,但能够非常可靠的传送数据。根据以上的这些要求,一批专家终于设计出了使用
18、分组交换的新型计算机网络。分组交换的优点:(1)不同终端之问的通信。,(2)网络负载低,可实现交互通信。(3)可实现信道复用,提高信道利用率。(4)可靠性高,经济性好。但是分组交换还存在一些缺点:(1)传输时延大,对于长信息传输,网络增加的附加信息太多。(2)技术实现复杂。进入20世纪80年代末期以来,在计算机网络领域最引入注目的就是起源于美国的Internet的飞速发展。现在Internet已发展成为世界上最大的国际性计算机互连网。Internet对世界的冲击非常之大,影响到人们生活的各个方面,这就使得20世纪90年代成为Internet时代,或者网络时代。因特网的发展大体上经历了三个阶段的
19、演进:第一阶段是从单个网络APPANET向互联网发展的过程。第二阶段的特点是建成了三级结构的因特网。三级分为主干网、地区网和校园网。第三阶段的特点是由三级结构逐步演变成多级结构的因特网。2.1.3 计算机网络性能指标计算机网络中的两个最主要性能指标就是带宽和时延。“带宽”本来是指某个信号具有的频带宽度,当通信线路用来传送数字信号时,人们愿意将“带宽”作为数字信道所能传送的“最高数据率”的同义语,正是因为带宽代表数字信号的发送速率,因此带宽有时也称为为吞吐量。时延是指一个报文或分组从一个网络或者说一条链路的一端传送到另一端所需的时间。时延包括发送时延、传播时延和处理时延。所以数据经历的总时延为这
20、三种时延之和:总时延=传播时延+发送时延+处理时延。随着因特网的不断发展壮大,人们对互联网的需求和使用量越来越大,如何更有效地使用计算机网络,变成一个越来越复杂的问题。为了有效解决这个问题,科学家们提出了分层的概念。2.1.4 计算机网络的体系结构网络的体系结构是讲述我们如何总体规划计算机网络软硬件的设计,以实现整个数据通信系统。我们可以从两个方面来理解:(1)可以把它看作是协议和层次的结合。(2)网络的体系结构的目的在于描述网络通信功能的分层方式、协议标准和信息格式。以使遵从同一结构的产品实现兼容,即链接后可实现已有的数据、资源和程序的共享。网络按层来组织优点是为了降低设计的复杂性,使每层建
21、立在下面一层的基础之上。分层的数目,各层的名称、内容与实现的功能可能“因网而异”,但是每一层均为上一层提供一定的服务,且屏蔽掉具体的实现细节。国际标准化组织ISO在1983年就提出了著名的开放系统互连基本参考模型。也就是OSI的七层协议体系结构。但是OSI的七层协议体系结构既复杂又不实用,没有占领市场。相反得到最广泛应用的是TCPIP参考模型。这样,TCPIP就是常被称为是事实上的国际标准。从这种意义上说,能够占领市场的就是标准。图2.1是TCPIP参考模型和OSI参考模型的对比示意图。OSI的体系结构 TCP/IP的体系结构应用层(各种应用层协议如TELNET,FTP,STMP等)运输层(T
22、CP或是UDP)网络层IP数据链路层物理层7 应用层6 表示层5 会话层4 传输层3 网络层2 数据链路层1 物理层图2.1 TCP参考模型和OSI参考模型的对比网络层次的划分使得网络便于管理和维护,各层只需要完成本层的功能即可,各层提供接口来同别的层联系,结构上可分割开,灵活性好。从概念上讲,当两台主机进行通信的时候,它们的相应层也进行对话。不同网络主机的各层称为对等实体,对等实体之间的通信叫做虚通信。实际上,网络中计算机之间的通信在网络的最低层(物理层),只有那里才存在真正的物理连接。两台主机之间要通信需要双方有一定的通信规则,这个规则就称为协议。2.2 TCPIP协议协议是控制两个对等实
23、体进行通信规则的集合。协议在语法方面规定了所交换的信息格式,而协议在语义方面规定了发送者和接收者所要完成的操作。在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下一层所提供的服务。在协议方面由于TCPIP协议已经占领了市场。整个因特网就使用的TCPIP的体系结构。所以下面我们重点说明TCPIP各层的功能。2.2.1 TCPI P各层功能每一层实现不同的分工:1物理层,物理层的任务就是透明地传送比特流。在物理层上所传数据的单位是比特。传递信息所利用的一些物理媒体,如双绞线、同轴电缆、光缆等。2数据链路层,通常包括操作系统中的设备驱动程序和计算机中对应的
24、网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理细节。在发送数据时,数据链路层的任务是将在网络层交下来的IP数据报组装成帧,在两个相邻结点间的链路上传送以帧为单位的数据。3网络层,有时也称作IP层,处理分组在网络中的活动,网络层将运输层产生的报文段或用户数据报封装成IP数据报进行传送。网络层的另一个任务就是要选择合适的路由。在TCPIP协议组件中,网络层协议包括IP协议(网际协议),ARP(地址解析协议),RARP(逆地址解析协议),ICMP协议(Internet控制报文协议)以及IGMP协议(Internet组管理协议)。IP是网络层上的主要协议,同时被TCP和UDP使用。TCP和
25、UDP的每组数据都通过端系统和每个中间路由器中的IP层在互联网中找出最佳路由进行传输。ICMP是IP协议的附属协议。IP层用它来与其他主机或路由器交换错误报文和其他控制信息。如两个流行的诊断工具,Ping和Traceroute,它们都使用了ICMP。IGMP是Internet组管理协议。它用来把一个IP数据报多播到多个主机。ARP(地址解析协议)和RARP(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来做IP地址和物理硬件MAC地址之间相互映射转换的协议。4运输层,主要为两台主机上的应用进程提供端到端的通信。在TCPIP协议组件中,有两个互不相同的传输协议:面向连接的
26、传输控制协议TCP和无连接的用户数据报协议UDP。TCP为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供可靠的端到端的通信,因此应用层可以忽略所有这些细节。而另一方面,UDP则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供。运输层协议根据具体应用的不同要求来选择这两种不同的运输协议。运输层向应用层用户屏蔽了下面通信子网的细节信息,它使应用进程看见的就好像在两个运输层实体之
27、间有一条端到端的逻辑通信信道一样。5应用层,应用层是体系结构中最高层。应用层确定进程之间通信的性质以满足用户的需求(这反映在用户所产生的服务请求)。应用层不仅要求提供应用进程所需要的信息交换和远地操作,而且还要作为互相作用的应用进程的用户代理,来完成一些为进行语义上有意义的信息交换所必须的功能。应用层直接为用户的应用进程提供服务。图2.2说明的是应用进程的数据在各层之间的传递过程中所经历的变化。假设两个主机是直接相连的。图2.2 数据在各层之间的传递过程假定计算机1的应用进程AP1向计算机2的应用进程AP2传送数据。AP1先将其数据交给5层(应用层)。第5层加上必要的控制信息H5就变成了下一层
28、的数据单元。第4层(运输层)收到这个数据单元,加上本层的控制信息H4。再交给第3层(网络层),成为第3层的数据单元。依次类推。不过到了第2层(数据链路层)后,控制信息分成两部分,分别加到本层数据单元的首部(H2)和尾部(T2),而第1层(物理层)由于是比特流的传送,所以不再加上控制信息。2.2.2 TCP协议分析TCP提供一种面向连接的、可靠的字节流服务。面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。这一过程与打电话很相似,先拨号振铃,等待对方摘机说“喂”,然后才说明是谁。在一个TCP连接中,仅有两方进行彼此通信。运输连接可分为三个
29、阶段:连接建立、数据传送和连接释放。TCP的连接和建立都是采用客户服务器方式。主动发起连接建立的应用进程叫做客户,而被动等待连接建立的应用进程叫做服务器。设主机B中运行一个服务器进程(图2.3),它先发出一个被动打开命令,告诉它的TCP要准备接受客户进程的连接请求。然后服务器进程就处于“听"的状态,不断检测是否有客户进程要发起连接请求。如有,即作出响应。设客户进程运行在主机A中。它先向其TCP发出主动打开命令,表明要向某个IP地址的某个端口建立运输连接。图2.3 用三次握手建立TCP连接主机A的TCP向主机B的TCP发出连接请求报文段,其首部中的同步比特SYN应置1,同时选择一个序号
30、x,表明在后面传送数据时的第一个数据字节的序号是x+1。主机B的TCP收到连接请求报文段后,如同意,则发回确认。在确认报文段中应将sYN和ACK都置1,确认号应为x+l,同时也为自己选择一个序号y。主机A的TCP收到B的确认后,要向B给出确认,其ACK置1,确认号为y+1,而自己的序号为x+l。运行客户进程的主机A的TCP通知上层应用进程,连接已经建立。当运行服务器进程的主机B的TCP收到A的确认后,也通知其上层应用进程,连接已经建立。此时主机A可以向B进行数据传输。TCP这样的连接建立叫做三次握手。在数据传输结束,通信的双方都可以发出释放连接的请求。设图2.3中的主机A的应用进程先向其TcP
31、发出连接释放请求,并且不再发送数据。TCP通知对方要释放从A到B这个方向的连接,将发往主机B的TCP报文段首部的终止比特FIN置1,其序号x等于前面已传送过的数据的最后一个字节的序号加上1。图2.4 TCP连接释放的过程主机B的TCP收到释放连接通知后即发出确认,其序号为y,确认号为x+1,同时通知高层应用进程,见上图箭头。这样,从A到B的连接就释放了,连接处于半关闭状态。若主机B不再向主机A发送数据,其应用进程就通知TCP释放连接,见上图箭头。主机B发出的连接释放报文段必须将终止比特FIN和确认比特ACK置l,并使其序号仍为y,但还必须重复上次已经发送过的ACK=x+1。主机A必须对此进行确
32、认,将ACK置1,ACK=y+1,而自己的序号是x+l。这样整个连接已经全部释放。3 FTP协议分析本章旨在介绍FTP 的主要相关内容,包括FTP 的工作原理,在了解其工作原理的基础上分析了FTP 的工作模式,包括主动模式和被动模式,最后说明了FTP 的两种数据传输模式,对FTP 协议进行了详细的介绍。3.1 FTP 工作原理FTP(File Transfer Protocol),是文件传输协议的简称。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序。用户可以通过它把自己机器与世界各地所有运FTP协议的服务器相连,访问服务器上的资源和信息。FTP协议在TCP/IP协议栈中的
33、位置如表3.1:表3.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协议来传输文件。FT
34、P协议采用客户端/服务器(Client/Sever)模式,由FTP客户端程序和FTP服务器端程序组成。使用时,先启动FTP客户端程序与远程主机建立连接,然后向远程主机发出传输命令,远程主机在收到命令后就给予响应,并执行正确的命令。但是FTP有一个根本的限制,那就是,如果用户在某个主机上没有注册获得授权,即没有用户名和口令,就不能与该主机进行文件传输。但匿名FTP服务器除外,它能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。用户使用特殊的用户名“Anonymous”或“guest”就可有限制地访问远程主机上公开的文件。现在许多系统要求用户将Emai1地
35、址作为口令,以便更好地对访问者进行跟综。出于安全的目的,大部分匿名FTP主机一般只允许远程用户下载文件,而不允许上载文件。也就是说,用户只能从匿名FTP主机拷贝其需要的文件而不能把文件拷贝到匿名FTP主机。另外,匿名FTP主机还采用了其他一些保护措施以保护自己的文件不至于被用户修改和删除,并防止计算机病毒的侵入。匿名FTP一直是Internet上获取信息资源的最主要方式,在Internet成千上万的匿名FTP主机中存储着无以计数的文件,这些文件包含了各种各样的信息、数据和软件。人们只要知道特定信息资源的主机地址,就可以用匿名FTP登陆。3.2 FTP工作模式FTP 采用C/S(客户端/服务器)
36、模式进行通信,但与其他的C/S 模式网络通信协议又有一个很大的区别。通常在进行HTTP 通信或是TELNET 通信的时候,只需要一个端口进行通信。即客户端只需要连接一个端口进行数据通信。如TELNET 的默认端口是23,用户从头到尾都只需使用这个端口。但是FTP 通信除了有一个默认端口21 之外,还需要其他的端口。其中默认端口(21)主要进行控制连接,进行命令协议和服务器端的响应码的传输;另外一个非标准端口主要进行数据传递,如文件的上载、下载等。至于非标准端口的产生则要根据用户选择的连接模式而定:如果客户选择的是主动模式(PORT),则需要用户端提供给服务器一个IP 地址和一个非标准端口;而如
37、果用户采用被动模式(PASV),则服务器端需要提供给客户端一个IP 地址和一个非标准端口。下表是几个著名的TCP 端口号:表3.2 TCP 端口号TCP 端口号关键字描述20 FTP-DATA文件传输协议数据21FTP文件传输协议控制23TELENET远程登录协议25SMTP简单邮件传输协议53DOMAIN域名服务器80HTTP超文本传输协议110POP3邮局协议119NNTP新闻传送协议FTP 中字节大小有两个:逻辑字节大小和用于传输的字节大小。后者通常是8 位,而前者可不一定是多少了。传输字节不必等于逻辑字节大小,也不必对数据结构进行解释。控制连接是建立在USER-PIT 和SERVER-
38、PI 之间用于交换命令与应答的通信链路。数据连接是传输数据的全双工连接,传输数据可以发生在服务器DTP 和用户DTP之间也可以发生在两个服务器DTP 之间,FTP 可以传输非连续的文件,这些文件的一部分称为页。服务器DTP 代表一种传输过程,它通常处于“主动”状态,它和侦听端口建立数据连接,它还可以为传输和存储设置参数,并根据PI 的指令传输数据。当然,DTP 也可以转入“被动”状态。服务器FTP 进程,它是和用户FTP 进程一起工作的,它由PI 和DTP 组成。至于用户FTP 进程则是由PI,DTP 和用户接口组成的。具体工作模式如图3.1所示:图3.1 FTP工作模式图上图中用户PI 开始
39、控制连接,控制连接与Telnet 协议很象。在开始阶段,标准FTP 命令由用户PI 产生并通过控制连接传送到服务器进程。服务器PI 向用户PI返回标准应答。FTP 命令指定数据连接参数和文件系统操作。用户DTP 在特定数据端口侦听,服务器开始数据连接并以指定的参数开始数据传输。数据端口不必在开始FTP 命令的机器上,但用户或用户FTP 进程必须确定它在指定的数据端口上侦听。这个数据连接是全双工的。3.3 FTP 传输模式FTP 协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。假设两台计算机通过ftp 协议对话,并且能访
40、问Internet, 你可以用ftp 命令来传输文件。每种操作系统使用上有某一些细微差别,但是每种协议基本的命令结构是相同的。FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。3.3.1 ASCII传输方式假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝
41、任何非文本文件之前,用binary 命令告诉ftp逐字拷贝,不要对这些文件进行处理。3.3.2 二进制传输方式在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。如果你在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢,也会损坏数据,使文件变得不能用。如果你知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的。4 FTP客户端的设计4.1设计目的及工具选择4.1.1设计目的 FTP 早已应用在网络的
42、各个方面,比如我们在访问网络上的资源时,经常会遇到需要连接FTP 服务器来下载,或者你制作了一个网站,想要将其上传至服务器,让大家能够访问它,这个时候就会用到FTP 客户端。虽然平时使用windows 自带的IE 浏览器即可实现对FTP 服务器的访问,但是IE 只是个很粗糙的FTP 客户端。IE 浏览器在6.0 以下的版本不支持PASV 方式访问服务器, 而且IE 浏览器在登录FTP 服务器的时候,无法查看返回的信息,在出错的时候,无法找到错误的原因,因此在使用上很不方便。本文所设计的FTP 客户端适合大多数用户使用,界面设计的很简单,使用户可以一目了然,而且具备FTP 客户端的基本功能,可以
43、作为下载、上传文件的工具来使用。4.1.2设计工具 程序设计中用到的主要工具就是C+,C+是一种面向对象的新一代网络编程语言,它可以在各种不同的机器、操作系统的网络环境中进行开发,具有解释型语言(如Basic语言)和编译型语言(如C语言)的特性。 C+中各种利大于弊的功能和许多很少用到的功能,用C+开发的程序可以在网络上传输,并运行于任何客户机上。使用C+语言可以方便的设计出网络应用类的程序,而且C+的移植性很好,在、其应用程序在各种机器上都能无差别的执行。为了使FTP客户端能适应大多数平台下的使用,我选择使用C+语言来实现。 4.2客户端主要模块设计4.2.1客户端连接模块运行客户端后,首先
44、是连接服务器,需要输入服务器IP 地址,用户名和密码,然后点击连接,观察是否连接成功,若成功则显示远程文件的列表。 若连接失败,则抛出异常,弹出对话框显示出错误,可知如何修改,然后重新输入服务器IP 地址或用户名或密码,直到连接上服务器。下图为客户端连接流程图: 连接服务器是否连接成功在信息显示模块显示连接成功获取服务器文件列表刷新服务器文件显示模块信息在信息显示模块显示连接失败用户输入服务器地址及用户名和密码是否图4.1 客户端连接流程图服务器模块的主要代码为:void CMyFtpDlg:OnConnect() UpdateData(TRUE);/新建对话m_pInetSession=ne
45、w CInternetSession(AfxGetAppName(),1,PRE_CONFIG_INTERNET_ACCESS);try /新建连接对象m_pFtpConnection=m_pInetSession->GetFtpConnection(m_strServer,m_strUserName,m_strPassword); catch(CInternetException *pEx) /获取错误TCHAR szError1024;if(pEx->GetErrorMessage(szError,1024)AfxMessageBox(szError);else AfxMess
46、ageBox("There was an exception");pEx->Delete();m_pFtpConnection=NULL;return;m_pRemoteFinder = new CFtpFileFind(m_pFtpConnection);/获得服务器根目录的所有文件并在列表框中显示BrowseDir("",&m_ctrlRemoteFiles,m_pRemoteFinder,&m_arrRemoteFiles);4.2.2上传模块用户在连接上服务器后,可以在本地列表中选择需要上传的文件,并指定上传位置,将本机上的
47、文件上传至FTP 服务器。 不能选择文件夹,只能选择文件。若上传失败,则抛出异常;如果成功上传,则提示上传成功。并通过断开与远程服务器的连接。下图为上传子模块流程图: 点击上传按钮弹出文件选择对话框获得用户选择的文件名新建一个上传任务登录到F T P 服务器目标目录下清除线程在信息显示模块中显示上传成功在信息显示模块中显示上传成功在信息显示模块中显示上传失败上传是否成功选择需要上传的文件将信息传送至任务重新获取服务器文件列表是否图4.2 上传模块流程图上传模块的主要代码为:void CMyFtpDlg:UpFile(FILEITEM fileItem)if(fileItem.bDir = TR
48、UE)AfxMessageBox("本程序暂时不支持上载整个文件夹,请选择文件上载");elseAfxMessageBox("test");/格式化文件名CString strLocalFile,strRemoteFile;strRemoteFile.Format("%s%s",m_pRemoteFinder->GetRoot(),fileItem.strFileName);strLocalFile.Format("%s%s",m_LocalFinder.GetRoot(),fileItem.strFileN
49、ame);/上传if(m_pFtpConnection->GetFile(strLocalFile,strRemoteFile)CString strMsg;strMsg.Format("上载文件%s成功!",fileItem.strFileName);AfxMessageBox(strMsg);4.2.3下载模块当用户在服务器文件列表中选择想要下载的文件后,选择需要下载文件在本机上的存储位置,设置上传模式为被动模式 ;将服务器上的文件下载至本机,如果成功下载,则提示下载成功,若失败则抛出异常,此过程可连续进行直到想退出。下图为下载子模块流程图: 选择要下载的文件点击
50、下载按钮获取文件信息新建下载任务登录到F T P 服务器目标目录下清除线程在信息显示模块中显示下载成功更新服务器文件列表在信息显示模块中显示下载失败下载文件是否成功选择文件在本机存储位置将信息传送至任务重新获取服务器文件列表是否 图4.3 下载模块流程图下载模块的主要代码:void CMyFtpDlg:DownFile(FILEITEM fileItem)if(fileItem.bDir = TRUE)AfxMessageBox("本程序暂时不支持下载整个文件夹,请选择文件下载");else/格式化文件名CString strLocalFile,strRemoteFile;
51、strRemoteFile.Format("%s%s",m_pRemoteFinder->GetRoot(),fileItem.strFileName);strLocalFile.Format("%s%s",m_LocalFinder.GetRoot(),fileItem.strFileName);/下载if(m_pFtpConnection->GetFile(strRemoteFile,strLocalFile)CString strMsg;strMsg.Format("下载文件%s成功!",fileItem.strFi
52、leName);AfxMessageBox(strMsg);5 系统测试5.1运行方法在程序中输入服务器的IP、用户名、和密码,点击“连接”按钮即可等待连接服务器。然后可选择本地文件上传到服务器或选择远程文件下载到本地。Upload和Download分别为上传、下载按钮。5.2运行结果FTP服务器连接前和连接后,此过程要正确的输入服务器IP 地址,用户名和密码,本地文件栏的文件为本机C盘的内容,连接成功后在远程文件栏会出现服务器上的文件,则也标志着连接成功:图5.1 ftp服务器连接前图5.2 ftp服务器连接后如果未选择文件就会弹出对话框,“请选择要上传的文件”,如果想选择文件可先选中文件夹
53、,后点击“下一层”来选择:图5.3 选择文件夹图5.4选择下一层文件选择文件后,点击Upload或Download即可实现上传和下载,上传或下载的文件都可在远程文件或本地文件里查找到,如果上传或下载成功会有提示:图5.5 上传和下载结 论本文对FTP服务器技术的基本原理进行了分析,在此基础上通过VC编程实现了FTP服务器的基本功能,包括客户端连接功能、上传下载功能等,可以满足基本的网络服务需要。本论文主要完成了以下主要工作:研究了计算机网络和广泛应用的TCP/IP协议,并详细分析了FTP协议;对FTP服务器客户端基本功能模块的设计并附上相关代码;测试FTP服务器客户端并分析相关结果。通过这些工
54、作,研究并实现了FTP服务器技术的基本功能,可以提供基本的网络通信服务。由于时间仓促和编程功底不扎实,本文只完成了FTP服务器最基本的功能的设计,在实现的功能上还有待完善。在今后的工作中,还要加强对FTP服务器技术的理解,在实现在要注重以下几方面功能的提高:多用户连接处理能力,断点续传,防火墙自适用穿透能力等。参 考 文 献1 谢希仁计算机网络(第6版)M北京:电子工业出版社,20132 金惠文,陈建亚,纪红现代交换原理M北京:电子工业出版社,20123 蔡勇FTP服务器技术研究及实现D成都:电子科技大学,20054 陈君基于负载均衡的FTP服务研究与设计D广州:广东工业大学,20115 钟小
55、平, 张金石网络服务器配置与应用(第4版)M北京:人民邮电出版社,20106 代勇Visual C+网络通信编程技术详解M 北京:机械工业出版社,20117 戴晟晖, 杨国祥, 陈国建Visual C+典型模块与项目实战大全M北京:清华大学出版社,20128 侯俊杰深入浅出MFC第2版M湖北:华中科技大学出版社,20049 Douglas EComerInternetworking with TCPIP,Volume 1 Principles,Protocols,and Architecture(Fifth Edition)M北京:人民邮电出版社,200610 WRichard Stevens,Bill Fenner,Andrew MRudoff Unix Network Programming The Sockets Networking API,V01ume l(T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 代理买社保合同范本
- 亚克力盒制作合同范本
- 劳务合同范本无固定
- 公寓购买讲价合同范本
- 医院物业采购合同范本
- 加梯安装合同范本
- 公司做假雇佣合同范本
- 公司与政府合同范本
- 企业合同范本牛厂
- 交定金认购合同范本
- 2010哈弗H5维修手册
- (完整版)NRS数字分级法评分表
- LY∕T 2780-2016 松疱锈病菌检疫技术规程
- 航空服务形体训练课程标准
- 项目部安全管理组织机构网络图GDAQ20102
- 一文看懂全部变电站电气主接线方式
- 苏科版四年级劳动技术下册教学计划
- 应答器报文定义《运基信号[2005]224号》
- 电网公司客户资产接收管理细则
- SH3503-2007石油化工建设工程项目交工技术文
- DLT-5293-2013 电气装置安装工程 电气设备交接试验报告统一格式
评论
0/150
提交评论