版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘 要随着现代信息技术的高速发展,网络通信技术在现代科技领域的应用日益深入,网络通信服务需求也越来越多,这样就需要有一个良好的服务器平台来满足用户日益增长的网络服务需求。因此研究设计服务器相关通信软件成为网络发展的一个热门课题。本文就是在此背景下研究并设计一个网络文件传输服务器软件平台。 论文首先简述计算机网络的发展过程。然后介绍TCP/IP协议五层体系结构和每一层的功能,并且重点研究五层体系中的传输层协议TCP和应用层协议 FTP。根据本服务器的设计要求和实现的功能,确定整个系统的总体框架模型。并展开对此文件传输服务器设计的详细说明。 本课题的FTP文件传输服务器系统是在VC开发环境下、基于
2、C/S模式、使用当前模块化软件设计思想编程实现的。在服务器设计时先总体设计服务器系统的整 体模型,之后再分别设计前台的控制界面和后台服务器的框架,并详细研究搭建后台服务器所用到的六大模块的实现方法,和服务器运行时六大模块之间相互通信过 程。最后使用Windows平台上通用的客户端软件和设计编写的测试软件对此信息传输服务进行测试,并对测试结果进行分析。 本课题系统地研究文件传输服务器整体设计流程,加深了对服务器通信软件设计的理解。对于今后研发和设计出功能更加强大的服务器具有一定的理论和实践意义。 关键字:TCP/IP协议;FTP协议;VC开发环境;C/S模式IAbstractAlong with
3、 the rapid development of modern information technology, network communication technology in the modern science and technology domain is applied more and more thorough, the network communication service needs more and more, this has to be a good server platform to meet users growing network service
4、needs. So study design server related communications software become one of the hottest network development issue. This paper is on the background research and design a network file transfer server software platform. This paper first computer network development process. And then introduced the TCP/
5、IP protocol five layer system structure and the function of each layer, and focuses on the research of the system of the five transport layer protocol TCP and application layer protocol FTP. According to the server design requirements and implementation of function, make sure the whole system of the
6、 overall framework model. And this file transfer server on the details of the design. This topic FTP file transfer server system is developed in VC environment, based on C/S mode, with the current modular software design thought of the programming. In the server design first overall design of server
7、 system the whole body model, then the design of the front desk respectively control interface and backend server framework, and a detailed study of the backend server use to build the realization method of the six module, and server running six major module communications between a process. Finally
8、 using the Windows platform general of the client software design and the test software written about this information transmission service to test, and the test results are analyzed. This subject system file transfer server overall design process, deepened to the server communication software desig
9、n of understanding. In the future development and design the function more powerful server has certain theoretical and practical significance.Key word: TCP/IP protocol; FTP protocol; VC development environment; C/S 目录1 绪论11.1课题的背景11.2 FTP在Internet上的发展现状22 计算机网络与TCP/IP 协议32.1计算机网络32.1.1计算机网络的概念32.1.2
10、 计算机网络的体系结构42.2 TCP/IP协议52.2.1 TCP/IP 各层功能52.3 FTP协议及其工作原理62.3.1 FTP 协议62.3.2 FTP 工作原理72.3.3数据流程82.3.4 FTP命令92.3.5 典型的 FTP 服务器工作流程163. Winsock 网络编程技术173.1 Windows 网络编程173.1.1 Winsock基本概念173.1.2 Winsock I/O模型194. C+语言介绍214.1 C+简介214.2 C+语言特点215 开发环境介绍225.1 Visual C+6.0介绍226 文件传输服务器的设计与实现236.1 系统设计要求和
11、设计思路236.1.1 服务器端的设计要求236.1.2 服务器端的设计思路236.2 服务器系统总体模型246.2.1 前台控制界面设计246.2.2 后台服务器框架设计276.3 后台服务器系统详细设计276.3.1 后台FTP 服务器基本工作流程276.3.2 后台服务器各大模块通信细节和工作过程286.4 前后台模块嵌入在MFC程序框架中的协调运行417 文件传输服务器的软件测试427.1 服务器软件基本功能测试427.1.1 用户成功登陆和文件目录传输测试427.1.2 文件上传、下载功能测试438 结论44致谢45参考文献46辽宁工程技术大学(论文) _1 绪论1.1 课题的背景2
12、1世纪人类社会已经进入了一个以网络为核心的信息化时代。我们所说的网络包括三个网,即电信网络、有线电视网络和计算机网络。其中发展最快并起到核心作用的是计算机网络。计算机网络涉及到通信和计算机两个领域。计算机和通信日益紧密的结合,以对人类社会的进步做出了极大的贡献。计算机与通信的相互结合主要有两个方面。一方面,通信网络为计算机之间的数据传递和交换提供了必要的手段;另一方面,通信网络自身性能的不断提高促使网络服务的需求也不断增加。目前网络通信技术在现代科技各行各业的应用日益深入,尤其是基于Internet网络的各种服务,比如网络文件系统、路由表管理、日志。打印、电子邮件、远程登录、文件传输、电子商务
13、服务、付款管理、顾客信息管理、服务台系统、流式媒体传输、及时信息处理、社区聊天室等。中国的发展日新月异,对于网上的服务类型和服务需求也越来越多,这就需要有一个良好的网络服务器来满足大众的要求。目前网络服务已经向稳定性,易维护,易管理,安全可靠,多用户,高速化的方向发展。所以能够构建一个稳定可靠,安全易用,性能优越的网络服务器平台是加速网络发展的热门课题。一次研究次类型的服务器设计对于今后开发网络服务器通信软件起到非常重要的作用。不论是哪一种类型的服务器所要执行的任务基本上都是要能与客户端建立端到端的数据通信、能成功解析出客户端发送过来的命令并分局客户端的命令提供相应的服务。现在的网络软件使用的
14、协议实际上是商业标准的TCP/IP五层协议,其中下三层协议已经固定于现有的Internet网络中,所以关于网络服务器设计方面问题就由运输层和应用层来解决。运输层主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,运输层协议有:TCP(传输控制协议)和UDP(用户数据报协议)。TCP为两台主机提供可靠性的数据通信。TCP是面向连接的服务,在传输数据之前必须先建立连接,在数据传送结束后要释放连接。同时TCP还提供了数据确认、流量控制、计时器以及连接管理等功能。由于TCP提供了可靠性的端到端通信,因此应用层可以忽略这些细节。而另一方面,UDP则为应用层提供一种非常简单的服务。它是费面
15、向连接的协议。UDP在传送数据之前不需要建立连接。远地主机的运输层在收到UDP报文后,不需要给出确认。所以任何必要的可靠性必须由应用层来提供。这两种运输层协议会根据应用的不同选择相应的协议。应用层负责处理特定的网络服务细节。每一个应用层协议都是为了解决某一类应用问题,而问题的解决又往往是通过位于不同主机中的多个应用进程之间的通信和协调工作来完成了。应用程具体内容就是规定应用进程在通信时所遵循的协议。常见的应用程协议有:Telnet远程登录、FTP 文件传输协议、HTTP 超文本传输协议、SMTP简单邮件传输协议、SNMP 简单网络管理协议等。1.2 FTP在Internet上的发展现状随着In
16、ternet 在全世界的普及和发展,越来越多的用户将自己的计算机连入网络中。其中 FTP(File Transfer Protocol) 是Internet 中最早提供的服务之一,目前仍在被人们广泛使用着。如果说 Internet 是如今的信息高速公路的话,FTP就是其上面的洲际车。由于 FTP 运载数据量很大,在整个 Internet 的流量统计中,FTP 占36% 迄今为止,只有近几年发展起来的环球信息服务能与之媲美。FTP 文件传送服务,主要用于存放大量的网络公用软件,常用工具和技术文档,以及一些著名 FTP 服务的镜像。建立匿名 FTP 服务器,可以将本单位的产品信息、用户手册提供给用
17、户公开访问;还可以将 Internet 上大量的常用软件、免费软件、免费资源和文档资料等存储于本地、供本地用户访问。这样既方便了用户、又减少了对出口信道的占用。由于FTP服务器功能强大,在网络中发挥着重要的作用,所以FTP服务器的应用很广泛,但是由于商业原因对商业服务器产品的关键技术知之甚少。同时,我们国内对服务器的研究也是相对较少的,所以本课题很有意义。472 计算机网络与TCP/IP 协议2.1 计算机网络2.1.1 计算机网络的概念 关于计算机网络的最简单定义是:一些相互连接的、以共享资源为目的的、自治的计算机的集合。 另外,从广义上看,计算机网络是以传输信息为基础目的,用通信线路将多个
18、计算机连接起来的计算机系统的集合。一个计算机网络组成包括传输介质和通信设备。从用户角度看,计算机网络是这样定义的:存在着一个能为用户自动管理的网络操作系统。有它调用完成用户所调用的资源,而整个网络像一个大的计算机系统一样,对用户是透明的。 一个比较通用的定义是:利用通信线路将地理上分散的、具有独立功能的计算机系统和通信设备按不同的形式连接起来,以功能完善的网络软件及协议实现资源共享和信息传递的系统。从整体上来说计算机网络就是把分布在不同地理区域的计算机与专门的外部设备用通信线路互联成一个规模大、功能强的系统,从而使众多的计算机可以方便地互相传递信息,共享硬件、软件、数据信息等资源。简单来说,计
19、算机网络就是由通信线路互相连接的许多自主工作的计算机构成的集合体。计算机网络特点:(1)开放式的网络体系结构,使不同软硬件环境、不同网络协议的网可以互连,真正达到资源共享,数据通信和分布处理的目标。 (2)向高性能发展。追求高速、高可靠和高安全性,采用多媒体技术,提供文本、声音图像等综合性服务。 (3)计算机网络的智能化,多方面提高网络的性能和综合的多功能服务,并更加合理地进行网络各种业务的管理,真正以分布和开放的形式向用户提供服务。 根据规模和距离的大小,可以将网络类型划分为局域网、城域网、广域网和互联网四种。2.1.2 计算机网络的体系结构网络的体系结构是讲述我们如何总体规划计算机网络软硬
20、件的设计,以实现整个数据通信系统。我们可以从两个方面来理解:(1)可以把它看作是协议和层次的结合。(2)网络的体系结构的目的在于描述网络通信功能的分层方式、协议标准和信息格式。以使遵从统一结构的产品实现兼容,即连接后实现已有的数据、资源和程序的共享。网络按层来组织优点是为了降低设计的复杂性,使每层建立在下面一层的基础之上。分层的数目、各层的名称、内容与实现的功能可能“因网而异”,但是每一层均为上一层提供一定的服务,且屏蔽掉具体的实现细节,国际标准化组织ISO在1983年就提出了著名的开放系统胡利剑基本参考模型。也就是OSI的七层协议体系结构。但是OSI的七层协议体系结构既复杂又不实用,没有占领
21、市场。相反得到最广泛应用的是TCP/IP参考模型。这样,TCP/IP就是常被称为事实上的国际标准。从这种意义上说,能够占领市场的就是标准。图1-1是TCP/IP参考模型和OSI参考模型的对比示意图。TCP/IP参考模型和OSI参考模型的对比示意图1-1 网络层次的划分似的网络便于管理和维护,各层只需要完成本层的功能即可,各层提供接口来同别的层联系,结构上可分割开,灵活性好。从概念上讲,当两台主机进行通信的时候,它们的相应层也进行对话。不同网络主机的各层曾为对等实体,对等实体之间的通信叫做虚通信。实际上,网络中计算机之间的通信在网络的最底层(物理层),只有那里才存在真正的物理连接。两台主机之间要
22、通信需要对方有一定通信规则,这个规则就成为协议。2.2 TCP/IP协议协议时空之两个对等实体进行通信规则的集合。协议在语法方面规定了所交换的信息格式,而协议在语义方面规定了发送者和接收者所要完成的操作。在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下一层所提供的服务。在协议方面由于TCP/IP协议已经占领了市场。整个因特网就使用的TCP/IP的体系结构。所以下面我们重点说明TCP/IP各层的功能。2.2.1 TCP/IP 各层功能每一层实现不同的分工:应用层:应用层负责支持网络应用程序.该应用层包括许多协议,包括支持Web的HTTP、支持电子邮件
23、的SMTP和支持文件传送的FTP等。我们将在第2章中看到,创建我们自己的新应用层协议是非常容易的。 运输层:运输层提供了在应用程序的客户机和服务器之间传输应用层报文的服务。在因特网中有两个运输协议,即TCP和UDP,利用其中的任一个都能运输应用层报文。 TCP向它的应用程序提供了面向连接的服务。这种服务包括了应用层报文向目的地的确保传递和流量控制(即发送方/接收方速率匹配)。TCP也将长报文划分 为短报文,并提供拥塞控制机制,因此当网络拥塞时,源抑制其传输速率。UDP协议向它的应用程序提供无连接服务,这是一种非常基本的服务。 网络层:网络层负责为数据报从一台主机传输到另一台主机选路。因特网的网
24、络层具有两个重要的部分。它具有定义IP数据报各个域以及端系统和路由器如何作用于这些域 的协议。该协议是著名的IP协议。IP协议仅有一个,所有具有网络层的因特网部件必须运行IP协议。因特网的网络层也包括决定路由的选路协议,它使得数据 报根据该路由从源传输到目的地。因特网具有许多选路协议。如我们在1.3节所见,因特网是一个网络的网络,在一个网络中,其网络管理者能够运行所希望的任 何选路协议。尽管网络层包括了IP协议和一些选路协议,它经常只被称为IP协议,这反映了IP是将因特网连接在一起的粘合剂这样一个事实。 链路层:网络层通过一系列分组交换机(在因特网中称为路由器)在源和目的地之间发送分组。想将分
25、组从一个节点(主机或分组交换机)移动到路由上的下一个节点,该网 络层必须依靠该链路层的服务。特别是在每个节点,网络层将数据报下传给链路层,该链路层沿着路由将数据报传递给下一个节点。在该下个节点,链路层将数据报 上传给网络层。由链路层提供的服务依赖于该链路的特定链路层协议。例如,某些协议在链路的基础上提供了可靠的传递,在链路的基础上是指,从传输节点跨越一条链路再到接收 节点。注意这种可靠传递服务不同于TCP的可靠传递服务,TCP是为从一个端系统到另一个端系统提供可靠传递的。链路层的例子包括以太网和PPP:在某些 情况下,ATM和帧中也能够被认为是链路层。因为数据报从源到目的地传送通常需要经过几条
26、链路,数据报可能被沿途不同的链路层协议处理。例如,数据报可能 被以太网和后继链路上的PPP处理。该网络层将接受来自每个不同的链路层协议的不同服务。 物理层:链路层的任务是从一个网络单元向临近的网络单元移动整个帧,而物理层的任务是将该帧中的单个比特从一个节点移动到下一个节点。这层中的协议仍然是链路相关 的,并且进一步与该链路(例如,双绞铜线、单模光纤)的实际传输媒体相关。例如,以太网具有许多物理层协议:一个是关于双绞铜线的,另一个是关于同轴电缆 的,还有一个是关于光纤的等。在这些链路移动一个比特一个比特时,采用的协议不同,其方式也不同。 如果我们分析本书的目录,将会发现我们大致地使用了
27、因特网协议栈的层次组织了这本书。我们采用的是自顶至下方法,首先讨论应用层,然后向下进行学习。2.3 FTP协议及其工作原理2.3.1 FTP 协议什么是FTP呢?FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写。该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使 存储介质对用户透明和可靠高效地传送数据。简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载 (download)”文件。若将文件从自己计算机中拷贝至远程计算机上,则称
28、之为“上载(upload)”文件。在TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。 2.3.2 FTP工作原理 FTP 使用 TCP可靠地运输层。FTP 的主要功能就是减少或消除在不同操作系统下处理文件的不兼容性。FTP支持两种模式,一种方式叫做Standard (也就是 PORT方式,主动方式),一种是 Passive(也就是PASV,被动方式)。 Standard模式 FTP的客户端发送 PORT 命令到FTP服务器。Passive模式FTP的客户端发送 PASV命令到 FTP Server。 下面介绍一个这两种方式的工作原理: Port模式FTP 客户
29、端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。 Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是 Port命令,而是Pasv命令。FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请 求,客户端连接FTP服务器此端口,然后FTP
30、服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。 很多防火墙在 设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的 高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。 FTP的工作情况如图2.0所示。具体情况是:当客户进程向服务器进程发出建立连接请求时,要寻找连接服务器进程的熟知端口(21),同时还要告诉服务器进程自己的另一个端口号码,用于建立数据传送连
31、接。接着,服务器进程用自己传送数据的熟知端口(20)与客户进程所提供的端口号码建立数据传送连接。由于FTP 使用了两个不同的端口号,所以数据连接与控制连接不会发生混乱。 FTP 的工作模式和其他网络通信协议有很大的区别。通常在进行HTTP通信,只要一个通信端口进行通信。即客户端只要连接一个端口进行数据传输。而FTP使用两个独立的连接,其主要优点是使网络数据传输分工更加明确,同时在文件传输时还可以利用控制连接。图2-0FTP 工作示意图2.3.3 数据流程FTP 数据传输中数据流程包括 3 部分内容: 指定的数据传输、特定的数据结构和有效地数据连接。数据传输数据连接只传输数据,控制连接传送命令和
32、响应。几个命令是关于在主机间传输数据的,数据传输基本上独立于物理结构的,但是如果在压缩传输模式下流式传输与文件结构有关,文件的属性与表示类型有关。 FTP 常见的传输模式: (1)ASCII传输方式:假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。 在拷贝任何非文本文件之前
33、,用binary 命令告诉ftp逐字拷贝,不要对这些文件进行处理,这也是下面要讲的二进制传输。 (2)二进制传输模式:在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。 如果你在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢,也会损坏数据,使文件变得不能用。(在大多数计算机上,ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果你传 输二进制文件,所有的位都是重要的。)如果你
34、知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的。 2.3.4 FTP命令 (1)ABOT(Abort,中止)命令说明:告诉服务器中止上一次FTP服务命令及所有相关的数据传输。用法:ABORCRLF参数:无。注释:中止命命令可以请求“特殊操作”以强行引起服务器的重视(详情请参看RFC959)。如果上一次命令已经完成(包括数据传输),就不会导致任何操作。服务器不会关闭控制连接,但必须关闭数据连接。服务器在接收到此命令时可能处于两种状态下:(1)FTP服务命令已经完成,(2)FTP服务命令尚在处理中。在第一种状态下,服务器关闭数据连接(如果它是打开的)并响应以226应答,表示已成
35、功执行了中止命令。在第二种状态下,服务器中止正处理中的FTP服务并关闭数据连接,返回426应答,表示该服务请求被异常终止。然后服务器发送226应答,表示成功执行了中止命令。225 数据连接打开,没有正在进行的传输226 关闭数据连接,请求的文件操作成功。421 服务不可用,关闭控制连接。如果某项服务获知自己即将关闭,会向所有命令做出这个应答。226 连接关闭,传输终止。500 语法错误,无法识别命令。这其中包括命令行过长之类的错误。501 参数或变元中有语法错误。502 命令还没有被实现。(2)ACCT(Acc
36、ount,帐号)命令说明:指定用户的帐号信息。这条命令只能在发送PASS命令并接收到332代码之后发送。用法:ACCT<Account><CRLF>参数:Account是用户的帐号,访问某些服务时可能另外需要它。注释:当登录需要帐号信息时,一条成功的PASS命令的响应是应答代码332。反之,如果登录不需要帐号信息,成功的PASS命令的应答是230;如果在对话中后来发出的命令需要帐号信息,服务器会返回332或532应答,这分别取决于它是保存(在接收ACCT命令期间)还是丢弃此命令。返回值(粗体表示成功):202 命令还没有被实现,在此站点上是多余的。230
37、160; 用户已登录,请继续。421 服务不可用,关闭控制连接。如果某项服务获知自己即将关闭,会向所有命令做出这个应答。500 语法错误,无法识别命令。这其中包括命令行过长之类的错误。501 参数或变元中有语法错误。502 命令还没有被实现。503 命令的顺序不对。530 无法登录。(3) ALLO(Allocate,分配)命令说明:发送文件前在服务器上分配X个字节用法:ALLO<NumberBytes<MaxSize><CRLF>参数:NumberBytes是一个整数,代表为该文件保留的内存字节数(使用逻辑字节大小
38、计算)。MaxSize是在使用记录或页数据结构时可选的最大记录或页大小。注释:一些要保留足够内存以容纳将要传输的新文件的服务,会请求这条命令。对于用记录或页结构发送的文件来说,最大记录或页大小(以逻辑字节计)也可能是必需的;它以这条命令的第二个参数字段中的十进制整数表示。这第二个参数是可选的,但在出现时应该与第一个参数三个ASCII字符<SP>P<SP>分隔开。这条命令后跟一条STORe或APPEnd命令。那些不要求事先声明最大文件大小的服务器应该把ALLO命令视为NOOP(不操作),而那些只关心最大记录或页大小的服务器应该受第一个参数的值,然后忽略它。返回值(粗体表示
39、成功):200 命令成功。202 命令还没有被实现,在此站点上是多余的。421 服务不可用,关闭控制连接。如果某项服务获知自己即将被关闭,会向所有命令做出这个应答。500 语法错误,无法识别命令。这其中包括命令行过长之类的错误501 参数或变元中有语法错误504 命令中还没有实现该参数530 无法登录。(4)APPE(Append with create,附加和创建)命令说明:让服务器准备接收一个文件并指示它把这些数据附加到指定的文件名,如果指定的文件尚未存在,就创建它。用法:APPE<FileName&
40、gt;<CRLE>参数:FileName是服务器站点上一个完全合格的路径和文件名。返回值如下(粗体表示成功)。110 重新启动标记应答。在此情况下,文本是精确的,而且不会留给特殊的实现处理;它必须读取:MARK yyyy=mmmm其中yyyy是用户进程的数据流标记,mmmm是服务器上的相应标记(请注意标记和“=”之间的空格)。125 数据连接已打开,传输启动。150 文件状态没问题,准备打开数据进行连接。226 关闭数据连接,请求的文件操作已成功。250 请求的文件操作没问题,已完成。421 服务不可用,关闭控
41、制连接。如果某项服务获知自己即将关闭,会向所有命令做出这个应答。425 无法打开数据连接。426 连接关闭;传输中止。450 请求的文件操作无法执行,文件不可用(例如文件正忙)。451 请求的操作被中止,处理中发生本地错误。452 请求的操作无法执行,系统的存储空间不足。500 语法错误,无法识别命令。这其中包括命令行过长之类的错误。501 参数或变元中有语法错误。502 命令还没有被实现。530 无法登录。532 文件的存储需要帐号。550 请求的操作无法执行,
42、文件不可用(例如找不到文件,无访问权)。551 请求的操作被中止,未知的页类型。552 请求的文件操作被中止,超过了分配的存储单元(对当前目录或数据集而言)。553 请求的操作无法执行,不允许的文件名。(5) CDUP(Change to Parent Directory,变为父目录)命令说明:把当前目录改为远程文件系统的根目录,无需改变登录、帐号信息或传输参数。用法:CDUP<CRLF>参数:无。注释:CDUP目录可改为父目录。MS-DOS中的等效命令是cd。创建这条命令是为了适应FTP的不同操作系统。返回值如下(粗体表示成功):250
43、0; 请求的文件操作正常进行,已完成。421 服务不可用,关闭控制连接。如果某项服务获知自己即将关闭,会向所有命令做出这个应答。500 语法错误,无法识别命令。这其中包括命令行过长之类的错误。501 参数或变元中有语法错误。502 命令还没有被实现。530 无法登录。550 请求的操作无法执行,文件不可用(例如找不到文件,无访问权)。(6) CWD(Change Working Directory,改变工作目录)命令说明:把当前目录改为远程文件系统的指定路径,而无需改变登录、帐号信息或传输参数。用法:CWD<Path
44、><CRLF>参数:Path是远程系统上的一个工作目录。返回值如下(粗体表示成功):250 请求的文件操作正常进行,已完成。421 服务不可用,关闭控制连接。如果某项服务获知自己即将关闭,会向所有命做出这个应答。500 语法错误,无法识别命令。这其中包括命令行过长之类的错误。501 参数或变元中有语法错误。502 命令还没有被实现。530 无法登录。550 请求的操作无法执行,文件不可用(例如找不到文件,无访问权)。(7) DELE(Delete,删除)命令说明:删除服务器站点上在路径名中指定
45、的文件。用法DELE<FileName><CRLF>参数:FileName是服务器站点上一个完全合格的路径和文件名。注释:如果期望有额外的保护级别(例如选项"确实要删除此文件吗?"),这应该由客户软件提供。返回值如下(粗体表示成功):250 请求的文件操作正常进行,已完成。421 服务不可用,关闭控制连接。如果某项服务获知自己即将关闭,会向所有命令做出这个应答。450 请求的文件操作无法执行,文件不可用(例如文件正忙)。500 语法错误,无法识别命令。这其中包括命令行过长之类的错误。501
46、参数或变元中有语法错误。502 命令还没有被实现。530 无法登录。550 请求的操作无法执行,文件不可用(例如找不到文件,无访问权)。(8) HELP(Help,帮助)命令说明:让服务器通过到客户的控制连接发送有关其实现状态的帮助信息。用法:HELP<Topic><CRLF>参数:Topic是一个可选的命令,或是请求哪条命令有关文本的其他参数。注释:HELP可以带一个参数(例如任何命令的名称),以在响应中返回更具体的信息。应答为类型211或214。建议在输入USER命令前允许使用HELP命令。服务器可以使用这个应答来指定站点相关的参
47、数,例如在对HELP SITE的响应中。返回值如下(粗体表示成功):211 系统状态,或系统的帮助应答。214 帮助消息。描述如何使用服务器或某条不常用的具体命令的方法。这个应答只对用户有用,因为帮助消息没有标准的格式。421 服务不可用,关闭控制连接。如果某项服务获知自己即将关闭,会向有命令做出这个应答。500 语法错误,无法识别命令。这其中包括命令行过长之类的错误。501 参数或变元中有语法错误。502 命令还没有被实现。(9) LIST(List,列表)命令说明:让服务器给客户发送一份列表。用法:LIST<Pa
48、thName><CRLF>参数:PathName是服务器系统上的一个有效路径和文件规范。注释:如果路径名指定的是一个目录或其他文件组,服务器传送一份位于指定目录中的文件的列表。如果路径名指定的是一个文件,那么服务应该发送此文件的当前信息。空变元则暗指用户的当前工作目录或默认目标。数据将在类型ASCII或类型EBCDIC中通过数据连接传送(用户必须确保ASII或EBCDIC的类型适当)。因为系统与系统之间的文件信息可能有很大差别,所以这项信息要在程序中自动使用可能很困难,但对用户来说会很有用。返回值如下(粗体表示成功):125 数据连接已打开,传输启动。150
49、60; 文件状态没问题,准备打开数据连接。226 关闭数据连接,请求的文件操作已成功。250 请求的文件操作正常进行,已完成。421 服务不可用,关闭控制连接。如果某项服务获知自己即将关闭,会向所有命令做出这个应答。425 无法打开数据连接。426 连接关闭,传输中止。450 请求的文件操作无法执行,文件不可用(例如文件正忙)。451 请求的操作被中止,处理中发生本地错误。500 语法错误,无法识别命令。这其中包括命令行过长之类的错误。501 参数或变元中有语法错误。502
50、命令还没有被实现。530 无法登录。2.3.5 典型的 FTP 服务器工作流程FTP 使用客户服务器方式。一个FTP 服务器进程可同时为多个客户进程提供服务。FTP 的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。主进程的工作步骤如下:(1)打开熟知端口 (端口号为21),使客户进程能够连接上。(2)等待客户进程发出连接请求。(3)启动从属进程来处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。(4)回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的
51、处理是并发地进行。至于各个从属进程是如何工作、FTP 命令协议的解析与执行以及服务器运行细节的问题。3. Winsock 网络编程技术3.1 Windows网络编程Windows 下网络编程的规范:Windows Sockets 是得到广泛应用的、开放的、支持多种协议的网络编程接口。 Windows Sockets 也定义一个二进制接口,以此来保证应用Windows SocketsAPI的应用程序能够在任何网络软件供应商的符合Windows Sockets协议的应用上的工作。Windows Sockets规范定义并记录了如何使用API与Internet协议(通常指的是TCP/IP)连接。Win
52、dows Sockets简称Winsock。因此要在Windows 平台上开发这样的软件,必须对Winsock网络编程进行深入的研究和理解。.1.1 Winsock基本概念1.套接字套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。可以将套接字看做不同主机间的进程进行双向通信的端点。一个套接字是通信的一端,在这一端上可以找到与其对应的一个名字。一个正在被使用的套接字都有它的类型和与其相关的进程。根据网络通信的特性,套接字可以分为两类:流套接字和数据报套接字。(1)流套接字流套接字提供双向的、有序的、无重复并且无记录便捷的数据流服务,它使用于处理大量数据。网络传
53、输层可以将数据分散或是集中到合适尺寸的数据包中。流套接字是面向连接的,在通信双方进行数据交换前,必须建立一条路径。因此在运输层上它适用于协议。(2)数据报套接字数据报套接字支持双向的数据流,但并不保证数据传输的可靠性、有序性和无重复性。数据报套接字是无连接的。因此在运输层上它适用于UDP协议。2.客户机服务器模型一个在建立分布式应用时最常见的范例便是客户机服务器。在这种方案中客户应用程序向服务器程序请求服务。这种方式隐含了在建立客户机服务器间通信时的非对称性。客户机服务器模型工作时要求有一套为客户机和服务器所共识的惯例,来保证服务能够被提供或被接受,这一套惯例包含了一套协议,它必须在通信的两头
54、都被实现。3.Winsock编程基础不论是流套接字还是数据报套接字编程,一般都采用客户机服务器方式,他们的运作过程也基本类似。下面我们列举流套接字编程几个主要函数:(1)创建套接字:SOCKET socket(int af ,int type,int protocol);(2)关闭套接字:int closesocket(SOCKET s);(3)绑定套接:int bind(SOCKET s, const struct sockaddr *name, int namelen);(4)监听套接字:int listen(SOCKET s ,int backlog);(5)接受套接字请求:SOCKET
55、 accept(SOCKET s,struct sockaddr *addr,int *addrlen);(6)连接套接字:int connect(SOCKET s,const stru sockaddr FAR *name,int namelen);(7)使用套接字发送数据接收数据:Int send(SOCKET s,const char FAR *buf,int len,int flags);Int recv(SOCKET s,const char FAR *buf,int len,int flags);4.利用以上的函数一个最典型的使用流套接字进行网络通信的时序图如下:图3-1流套接字编
56、程时序图3.1.2 Winsock I/O模型Windows 套接字在两种模式下执行I/O操作:阻塞和非阻塞。在阻塞模式下,执行I/O的Winsock 调用一直到操作完成才返回。在非阻塞模式下,Winsock 函数会立即返回并交出程序的控制权。尽管非阻塞套接字在使用上不如阻塞套接字简单,但是它功能强大,所以在实际开发中使用最多的还是非阻塞模式。非阻塞模式包括以下几种I/O模型:1).选择模型:Select(选择)模型是Winsock中最常见的I/O模型。通过调用select函数可确定一个或多个套接字的状态,判断接收套接字上是否存在数据,或者能否向一个套接字写入数据。它既能防止应用程序在套接字处
57、于阻塞模式时,在一次I/O操作后被阻塞,同时也防止在套接字处于非锁定模式中时,产生WSAEWOULDBLOCK 错误。2).WSAAsyncSelect 模型:利用这个模型,应用程序可以在一个套接字上接收 Windows 消息网络事件通知。该模型的实现方法是通过调用WSAAsyncSelect 函数自动将套接字设置为非阻塞模式,然后向Winsock DLL 注册一个或是多个兴趣的网络事件,并提供一个接收通知时使用的窗口句柄。当注册的网络事件发生时,对应的窗口将受到一个基于消息的通知。接下来就可以处理相应窗口消息事件。3).WSAEventSelect模型它与WSAASyncSelect模型是类
58、似的,它的网络事件和WSAAsyncSelect是一样的,只不过它不在创建一个窗口,而是它的网络事件被送到一个事件对象句柄中。通过事件对象来处理相应消息响应。4).重叠I/O模型重叠I/O模型提供了更好的系统性能。这个模型的基本设计思想是允许应用程序使用重叠数据结构一次投递一个或是多个异步I/O请求(即所谓的重叠I/O)。提交的I/O请求完成之后,与之关联的重叠数据结构中的事件对象受信,应用程序便可使用WSAGetOVerlappedResult函数获取重叠操作结果。5).完成端口模型I/O完成端口是伸缩性很好的一种I/O模型。I/O完成端口是应用程序使用线程池处理异步I/O请求的一种机制。应用程序发出一些异步I/O请求,当这些请求完成时,设备驱动将这些工作项目排序到完成端口,这样,在完成端口上等待的线程池便可以处理这些完成I/O.4 C+语言介绍4.1 C+简介C+这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,“CPP”。 它是一种使用非常广泛 的计算
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024工程建设监督管理合同协议书
- 技术转让合同书样本示例
- 2024敬老院承包经营合同
- 2024版单位间借款合同样本
- 标准离婚协议书格式参考样本
- 2024三方股份合同协议书
- 2024试用期员工解除劳动合同格式
- 2024劳务派遣承包合同
- 2024来料加工合同样板来料加工合作合同范本2
- 客户资源合作合同模板
- 睡眠医学智慧树知到期末考试答案章节答案2024年广州医科大学
- GB/T 17259-2024机动车用液化石油气钢瓶
- 国开(河北)2024年《中外政治思想史》形成性考核1-4答案
- 床边护理带教体会
- 2024年社区工作者考试必背1000题题库及必背答案
- MOOC 微型计算机原理与接口技术-南京邮电大学 中国大学慕课答案
- 1kw太阳能独立供电系统解决方案
- 七年级期中考试考后分析主题班会课件
- 环境教育与公众参与-第1篇
- 北师大版六年级数学上册第五单元数据处理单元测试卷及答案
- (2024年)Photoshop基础入门到精通教程全套
评论
0/150
提交评论