Linux平台下FTP客户端的设计思路
2017-06-05冯媛媛刘建科
冯媛媛 刘建科
摘要;近年来,互联网在全球范围内的发展和普及,人们得以更方便地共享网络资源。FTP(File Transfer Protocol,文件传输协议)是支持网络中文件传输的标准协议。本文首先分析FTP,介绍了FTP工作原理。在此基础上,利用C语言进行一个简单的设计思路。
关键词:客户端;服务器;文件传输协议;数据传输
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2017)07-0043-02
互联网在全球范围内的发展和普及,方便更快捷的共享网络资源,由此可见,开发Linux平台下的Mini FTP客户端具有重要的现实意义
1FTP总体分析
文件传输协议(File Transfer Protocol,英文简写FTP)是支持网络中文件传输的标准协议。它属于网络协议组的应用层。FTP服务使用的是C/S模式,即FTP服务器和客户端的通信实际是点对点的通信。
FTP服务模型如图1。
注意:在整个FTP过程中数据连接是双向的,而且数据连接无需在整个时间存在。
在FTP过程中,各模块之间互相交互,共同实现FTP服务。它们在此期间充当的角色如下:
PI:协议解释器。用户、服务器分别关联着任务user-PI、server-PI。
服务器-PI:服务器协议解释器从端口L处“监听”,确认有无user-PI连接,形成控制通信连接。基于user-PI获得FTP指令,随后给予回应,对server-DTP进行控制。
用户-PI:用户协议解释器对其U端口至server-FTP过程进行管理,若此过程属于文件传输的一个组成,可以初始化FTP指令,接着控制user-DTP。
DTP:数据传输过程,与管理数据相连,存在主动、被动两种形式。
服务器-DTP;数据传输过程,通常表现为“主动”状态,形成具备“监听”端口的数据连接。考虑到传输与存储设置参数问题,应当由PI经指令传输数据。DTP处于“被动”状态时,接收信息,相比直接相连数据端口,作用更加理想。
用户-DTP:主要负责server-FTP过程的数据连接,传输时监控数据端口。若服务器间进行数据传输,那么user-DTP随之结束。
服务器-FTP过程:可以与user-FTP过程,或相关服务器协作,实现文件传输功能的过程,包含大量处理构建的集合,其核心部分是协议解释器(PI)与数据传输过程(DTP)。
用户-FTP过程;可以和1个及以上server-FTP过程协作,实现文件传输功能的集合。主要由但部分构成,分别是协议解释器、数据传输过程、用户界面。而对于用户界面,能够依靠本地语言呈现回应的对话。
FTP指令;FTP指令分为三类,访问控制指令,传输参数指令,FTP服务指令。访问控制指令指定访问控制标识符。各个数据传输参数均存在缺省值,只有通过缺省值的控制,才可以通过相关指令明确传输参数。FTP服务指令表示用户要求的文件传输与系统。
FTP回应:可以使数据传输请求、过程始终一致,也可以是用户进程直观确认服务器运行情况。
每个FTP回应均由3个数字以及相关文本组成。前者可以对下一步即将出现的状态进行确认,而后者能够主要呈现给真实用户。
回应码首个数字包含以下5个值。
1yz确认预备应答。及请求的操作处于初始化状态,后续指令处理前接受其他应答。
2yz确认完成回应。该操作执行完毕,能够重新进行请求。
3yz确认中间回应。获得质量,而操作遭到中止,此时可以获取其他信息。
4yz暂拒完成回应。指令尚未接受,操作也未执行,然而错误条件呈现出暂时状态,能够接着请求。
5yz拒绝完成应答。指令尚未接受,操作也未执行。
以下代表第二个数字相关的功能编码。
x0z语法——主要确认语法中的错误并给予标记。指令输入正常,但不具備相应功能;无用、没有执行的指令。
x1z信息——主要确认请求信息,包含状态、帮助等信息。
x2z连接——主要确认控制、数据连接状态。
x3z认证与帐户——主要确认登录操作与账户程序。
x4z保存。
x5z文件系统——主要确认服务器文件系统状态,和请求的传输、部分文件系统操作存在联系。
第三个数字在前者的基础上对功能类别进行了更全面的描述。
在整个FTP过程模型中,用户-PI首先按照Telnet协议控制连接。用户初始化期间,能够借助用户-PI生成有效的FTP指令,同时依靠控制连接发送至服务器过程。标准回应同样可以借此由服务器-PI传输至用户-PI。FTP指令能够给数据连接、文件系统操作(存储,下载等等)设置参数(数据端口、结构等)。用户-DTP必须通过特定数据端口进行“监听”,服务器原始数据连接,依靠合适的参数确保传输过程始终同步。在此强调一点,数据端口、初始化FTP指令需要的主机可以存在区别,然而,用户-FTP过程应当通过特定数据端口进行“监听”。同时,数据连接不仅包括传输,而且包含接收。
2FTP总体设计思路
基于上面对FTP协议模型的分析,设计程序流程、用户交互接口以及控制连接和数据连接的管理。
2.1用户FTP流程
整个程序流程图如图2。
2.2用户接口设计
用户接口主要是用来实现用户和程序的通信。本系统向用户提供的命令接口有:
2.3用户-Pl设计
在系统中,用户-PI的作用是将用户输入的指令进行解析,然后将指令翻译成标准的FTP指令通过控制连接发送给FTP服务器。在本系统中通过定义一个cmd结构体数组cmd_tab[],列出了用户PI所能解析的命令。它将用户的命令cmd_name转化为cmd_handler处理函数。控制连接访问在本系统中是通过访问创建的socket套接字ftp_sock_fd来实现。
2.4用户-DTP设计
在系统中,用户-DTP负责在客户端和服务器进行数据传输,系统中通过函数initconn()和dataconn()创建数据连接,数据连接的套接字用变量data表示。而数据传输则通过函数ftp_send_and_resv()对套接字data读写来实现。
3结束语
本论文分析了当前网络的发展状况,对FTP协议进行分析,在FTP工作原理上,简单的概括了开发Linux平台下的FTP客户端的设计思路。