沈阳理工大学课程设计专用纸Noi沈阳理工大学摘要本设计题目是:FTP客户机程序首先介绍了FTP协议工作原理,FTP工作模式,FTP工作过程,FTP传输模式;其次,说明了该程序需要在DOS命题提示符窗口下输入FTP_Client来调用程序运行,然后可以输入USER,PASS,PASV,LIST,QUIT等命令来继续执行程序;最后,说明了程序运行的结果和程序的结果分析。关键词:文件传输协议;C++;建立数据连接沈阳理工大学课程设计专用纸Noii沈阳理工大学目录1课程设计目的....................................................................12课程设计要求....................................................................13FTP相关知识....................................................................14课程设计分析....................................................................65程序代码..........................................................................106运行结果与分析..............................................................207参考文献...........................................................................21沈阳理工大学课程设计专用纸No1沈阳理工大学1课程设计目的FTP早已应用在网络的各个方面,比如我们在访问网络上的资源时,经常会遇到需要连接FTP服务器来下载,或者你制作了一个网站,想要将其上传至服务器,让大家能够访问它,这个时候就会用到FTP客户端。虽然平时使用windows自带的IE浏览器即可实现对FTP服务器的访问,但是IE只是个很粗糙的FTP客户端。IE浏览器在6.0以下的版本不支持PASV方式访问服务器,而且IE浏览器在登录FTP服务器的时候,无法查看返回的信息,在出错的时候,无法找到错误的原因,因此在使用上很不方便。现在大多数的FTP客户端软件都是收费版的,而且以英文版居多,使用上操作很复杂,目前流行的有CoreFtp、AceFtp、FtpVoyager等,但是大多数用户并不习惯使用这些软件。本文所设计的FTP客户端则适合大多数用户使用,界面设计的很简单,使用户可以一目了然,而且具备FTP客户端的基本功能,可以作为下载、上传文件的工具来使用。1)熟悉网络应用层的传输协议,增强对FTP协议的了解2)提高自己的动手能力以及编程能力2课程设计要求1)可以输入FTP服务的相关信息(包括IP地址、用户名与密码),输出交互过程中的FTP命令与响应信息,以及从FTP服务器的根目录获得的文件(或目录)列表。2)要求遵循FTP协议规定。只要求实现USER、PASS、PASV、LIST和QUIT命令。3)要求有良好的编程规范与注释信息。4)要求有详细的说明文档,包括程序的设计思想、工作流程、关键问题等。5)要求在Windows操作系统环境中,建议使用VisualC++编程工具实现。3FTP相关知识3.1FTP工作原理FTP(FileTransferProtocol),是文件传输协议的简称。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序。用户可以通过它把自己机器与世界各地所有运FTP协议的服务器相连,沈阳理工大学课程设计专用纸No2沈阳理工大学访问服务器上的资源和信息。FTP协议在TCP/IP协议栈中的位置如表1:表3-1TCP/IP协议栈HTTPFTPTELNSMTPDNSTFTPNMP应用层TCPUDP传输层IP互联网络层X25ISDNLANWLANFDDIATM网络接口层当启动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登陆。3.2FTP工作模式FTP采用C/S(客户端/服务器)模式进行通信,但与其他的C/S模式网络通信协议又有一个很大的区别。通常在进行HTTP通信或是TELNET通信的时候,只需要一个端口进行通信。即客户端只需要连接一个端口进行数据通信。如TELNET的默认端口是23,用户从头到尾都只需使用这个端口。但是FTP通信除了有一个默认端口21之外,还需要其他的端口。其中默认端口(21)主要进行控制连接,进行命令协议和服务器端的响应码的传输;另外一个非标准端口主要进行数据传递,如文件的上载、下载等。至于非标准端口的产生则要根据用户选择的连接模式而定:如果客户选择的是主动模式(PORT),则需要用户端提供给服务器一个IP地址和一个非标准端口;而如果用户采用被动沈阳理工大学课程设计专用纸No3沈阳理工大学模式(PASV),则服务器端需要提供给客户端一个IP地址和一个非标准端口。下表是几个著名的TCP端口号:表3-2TCP端口号TCP端口号关键字描述20FTP-DATA文件传输协议数据21FTP文件传输协议控制23TELENET远程登录协议25SMTP简单邮件传输协议53DOMAIN域名服务器80HTTP超文本传输协议110POP3邮局协议119NNTP新闻传送协议图3-1FTP服务的工作过程沈阳理工大学课程设计专用纸No4沈阳理工大学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.3FTP传输模式FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。假设两台计算机通过ftp协议对话,并且能访问Internet,你可以用ftp命令来传输文件。每种操作系统使用上有某一些细微差别,但是每种协议基本的命令结构是相同的。FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。3.3.1ASCII传输方式假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件之前,用binary命令告诉ftp逐字拷贝,不要对这些文件进行处理。3.3.2二进制传输方式在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。如果你在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会使传输稍微变慢,也会损坏数据,使文件变得不能用。3.4部分响应码及其意义110:重新启动标记应答。在这种情况下文本是确定的,它必须是:MARKyyyy=mmmm其中yyyy沈阳理工大学课程设计专用纸No5沈阳理工大学是用户进程标记,mmmm是服务器标记。120:服务在nnn分钟内准备好。125:数据连接已打开,准备传送。150:文件状态良好,打开数据连接。200:命令成功。202:命令未实现。211:系统状态或系统帮助响应。212:目录状态。213:文件状态。214:帮助信息,信息仅对人类用户有用。215:名字系统类型。220:对新用户服务准备好。221:服务关闭控制连接,可以退出登录。225:数据连接打开,无传输正在进行。226:关闭数据连接,请求的文件操作成功。227:进入被动模式。230:用户登录。250:请求的文件操作完成。257:创建“PATHNAME”。331:用户名正确,需要口令。332:登录时需要账户信息。350:请求的文件操作需要进一步命令。421:不能提供服务,关闭控制连接。425:不能打开数据连接。426:关闭连接,中止传输。450:请求的文件操作未执行。451:中止请求的操作:有本地错误。452:未执行请求的操作:系统存储空间不足。500:格式错误,命令不可识别。501:参数语法错误。502:命令未实现。503:命令顺序错误。504:此参数下的命令功能未实现。530:未登录。532:存储文件需要账户信息。550:未执行请求的操作。551:请求操作中止:页类型未知。552:请求的文件操作中止,存储分配溢出。553:未执行请求的操作:文件名不合沈阳理工大学课程设计专用纸No6沈阳理工大学4课程设计分析1.设计中的重点及难点1)使用send();recv()实现发送和接收数据;2)软件实现人机交互的设计,套接字的使用;3)FTP工作模式的理解。2.核心代码从FTP服务器接收响应:boolRecvReply(){intnRecv;memset(ReplyMsg,0,