一种基于Linux平台下的文件传输服务器的设计与实现

2015-12-08 11:44谭玲丽
电脑知识与技术 2015年25期
关键词:服务器

谭玲丽

摘要:目前的文件传输服务器大多是基于Windows操作系统的,很少有针对Linux系统。基于Linux平台,设计并实现了一种自定义FTP文件传输协议的系统,用C/C++作为开发语言编写实现的,并详细分析了该服务器的优势与不足。

关键词:FTP;服务器;Linux

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)25-0025-02

1 引言

FTP(File Transfer Protocol文件传输协议)服务器是一种传统的文件传输系统,也是当前互联网上比较实用的文件传输系统,以其管理简单和能够实现双向传输的优势,受到了国际互联网用户的普遍欢迎。

随着 Internet/Intranet 技术的迅速发展,许多公司、企业和网站开发了不少基于FTP(File Transfer Protocol文件传输协议)的应用系统。尤其在Windows系统下,但是在涉及一些需要保密性极其高的行业时,Windows平台下的FTP服务器在安全性上的劣势就显而易见了。Linux操作系统是一个开源平台,其安全性好、价格低,越来越多对稳定性要求高的用户和对成本控制要求严格的电脑生产厂商都选择了Linux操作系统。因此,相对应的Linux下文件传输服务器的开发也是业界现在最重要的课题之一。

2 FTP服务器的设计

2.1 基本原理

文件传输协议是Internet上的一个主要功能,其主要功能就是将文件从一台计算机传递到另一台计算机。本服务器使用的是自定义的FTP(File Transfer Protocol)协议。本服务器采用的是一种客户端/服务器(client/server)模式,在客户端和服务器端之间使用TCP协议建立连接。本服务器使用的FTP的组成及结构如图1所示。

2.2 FTP服务器工作过程

一般的FTP文件传输服务器所使用的数据端口取决于FTP的连接模式,一般分为主动模式(Active Mode)和被动模式(Passive Mode)。本服务器采用的是自定义的FTP协议,所以端口(大于1024)由自己决定,并采用了类似一般FTP服务器数据连接中的主动模式。工作过程:

1)客户端打开一个动态选择的端口(1024以上)向服务器端自定义的控制端口(1024以上)发起连接,经过TCP的3次握手之后,建立控制连接。

2)客户端在控制连接上通知服务器自己所用的临时数据端口。

3)服务器接到通知之后与客户端的数据端口建立起数据连接,并开始传输数据。

2.3 业务流程

详细研究用户需求后,确定服务器的业务流程如图2所示:

3 实现开发平台及编译运行

硬件环境是Linux,编辑环境我们选择的是VI(Visual Interface),绝大多数情况下都是使用C语言为Linux开发应用程序,目前 Linux 下使用最频繁的 C 语言编译器是gcc(GNU Compiler Collection),它能够编译用C、C++和Object C等语言编写的程序,语言我们使用的是C语言,选用的是MySQL开发后台数据库。预期实现功能要求,在用户登录、文件创建、上传、下载、查询及删除等方面都测试运行通过。其中多用户登录测试运行界面截图如图3所示:

系统程序的安装和加载运行:

1)将文件传输服务器的服务器端代码和客户端代码复制一份到Linux平台的Ubantu系统下;

2)用gcc编译器分别编译服务器端和客户端代码,然后运行服务器;

3)在确保服务器运行之后,运行客户端,并在运行客户端时输入服务器的IP地址和自定义的端口号;

4)完成客户端登陆到服务器上之后,用户就可以通过命令在客户端上远程操作服务器上的文件。

4 结论

经测试,该FTP服务器实现了局域网内用户登录、上传、下载、查询、删除文件资料等功能,并能在确保安全稳定的前提下,方便内部工作人员在工作中共享资源,使资源利用达到最大化。测试阶段发现的部分漏洞虽已修补,但仍存在一些不足,在后续工作中会继续予以改进:

1)由于设计时间较为仓促,没有交互界面的美化方面有所欠缺,因此用户界面的设计还有一定的完善空间。

2)在上传和下载文件时可能出现粘包问题,在上传文件时,客户端连续发送几次数据很可能被服务器端一次性接收,可以采用应答模式解决此问题。

3)缓冲区不满的问题,在传输文件的时候,接受数据的缓冲区定义的有点大,接受到最后的时候,发送端发送的数据不足以填满缓冲区,就会出现接受文件数据已经完成,但是操作不能正常结束的问题。这里的解决方案是,在文件传送之前将要被传送的文件的大小信息先提取出来发送给接收端,然后再发送,一直到该文件剩余大小比缓冲区小的时候,就动态创建一个大小跟文件剩余大小一样的缓冲区,一次将剩余文件接收,这样就可以解决接收缓冲区不满的问题了。

参考文献:

[1] (美)W.Richard Stevens.TCP/IP详解卷1:协议[M].北京:机械工业出版社,2002.

[2] 徐斌.当前嵌入式Linux分析与应用[J].电子制作,2015(2).

[3] 赵伟光.Linux的网络流量监测[J].网络安全,2015(4).

猜你喜欢
服务器
通信控制服务器(CCS)维护终端的设计与实现
中国服务器市场份额出炉
得形忘意的服务器标准
计算机网络安全服务器入侵与防御
服务器操作系统可信加固技术研究
关于Linux的视频服务器开发与实现分析