0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于嵌入式的FTP服务器的设计、结构与工作模式介绍

电子设计 来源:郭婷 作者:电子设计 2018-12-04 09:11 次阅读

引言

FTP(文件传输协议)是一种用于从网络中一台主机向另外一台主机传输文件的协议,属于Internet上最早提供的应用服务之一,通常将文件传输服务称为FTP服务。FTP服务不受计算机类型及操作系统的限制,只要建立FTP链接的双方都支持FTP协议,就可以方便地通过网络进行远程文件的下载、上传和删除等操作。

根据RFC959描述,FTP的目标是:促进程序/数据文件的共享;鼓励(通过程序)使用远程计算机;使用户不必面对不同主机上不同文件系统的差异;对数据进行高效可靠的传输。本文在国产嵌入式实时操作系统的平台上,在已有TCP协议支持的基础上,设计开发满足RFC959要求的FTP服务器,功能支持对FTP客户端常用命令的正确响应,性能满足嵌入式环境的要求。

1 文件传输过程

1.1 FTP工作模式

FTP服务采用典型的客户端/服务器工作模式,在网络远端提供FTP服务的计算机称为FTP服务器,与用户的客户端通过TCP进行链接。FTP服务器通过2个并行的TCP链接来提供服务,一个是控制链接,一个是数据链接。控制链接始终等待客户与服务器之间的通信,该链接将客户命令从客户端传给服务器,并传回服务器的应答。数据链接则是每当一个文件在客户端和服务器之间传输前,才进行创建,只用于数据传输目的。

客户端与服务器及其连接情况如图1所示。

1.2 FTP工作流程

在典型的FTP客户机和服务器的链接建立及交互过程中,一般需要经历以下几个步骤:

(1)在服务器端运行FTP服务器端程序,等待用户发出链接请求,在客户端运行FTP客户端程序。

(2)当FTP 客户端发起FTP 会话尝试链接服务器时,客户端首先发起建立与FTP服务器21端口之间的控制链接,通过该TCP链接发送用户名和密码给服务器端。

(3)客户端为所在的数据链接选择一个临时的端口号,并通过控制链接将该端口号发送给服务器。

(4)当需要进入文件传输阶段,客户端和服务器通过“数据链接”来传输文件,通过“控制链接”来传输命令。

(5)当数据传输完毕后,关闭用于建立数据链接的端口,直到下次数据链接发起时重新打开,而控制链接在整个FTP会话期间一直处于打开状态。

基于嵌入式的FTP服务器的设计、结构与工作模式介绍

2 FTP 服务器设计

选择不同的服务器模式将会影响到整个设计和实现阶段,并且很大程度影响着服务器的性能。FTP服务器的内部设计可以根据需要和平台软硬件的性能综合考虑,选择设计不同的服务器模式。

2.1 服务器结构

服务器的结构主要有循环服务器和并发服务器2种,其中并发服务器又可以细分为单线程并发服务器和多线程并发服务器。

2.1.1 循环服务器

循环服务器适用于简单的应用协议,与客户端采用停止-等待的通信方式,使用单个线程循环运行,每次只能处理一个客户端的请求,但是它的设计、编码、调试和后续维护相对并发服务器都比较简单。

2.1.2 单线程并发服务器

单线程并发服务器是由单个服务器线程预先为多个客户端打开TCP链接,当有任意的客户端请求到达时,服务器线程由阻塞态转为运行态来处理该客户端请求并发送响应,在此期间阻塞其他客户端请求。完成一个客户端请求后,服务器线程再次阻塞以等待其他的任意客户端的请求。单线程并发服务器适用于操作系统创建新的线程开销很大的情况下。

2.1.3 多线程并发服务器

多线程并发服务器设计使用多个进程及多个线程,服务器首先执行一个主线程,在熟知的端口上打开一个链接,等待客户端消息,当客户端请求到来时,主线程创建子线程来处理该客户请求,此时主线程不与客户端直接通信,而是由每个子线程并发地来与各自对应的客户端进行通信。当子线程完成客户请求的响应并发送给客户端之后,子线程退出,而此时主线程一直在等待其他的客户链接请求。

2.2 方案选择

服务器结构的方案选择主要取决于服务器的应用场景、期望达到的性能以及方案实现的难易程度。

循环服务器的结构容易实现但是需要客户端等待来获取服务,难以满足多个客户的需求,服务器效率性能低下;单线程服务器结构需要服务器线程反复地在它打开的链接上等待客户端请求,需要每次循环地检查网络链接状况和文件系统处理文件的状态,查询完成后才能够刷新数据显示,因此造成不必要的延迟;多线程并发服务器同时和多个客户端进行通信,由操作系统分配各个线程的处理器时间,比较适合FTP服务器的对每个客户端一直存在控制链接和需要时建立数据链接的特点。综合上述分析,本课题中FTP服务器采用多线程并发服务器结构的方案是比较合理的。

3 FTP 服务器实现

根据上述设计方案的描述,本课题中FTP服务器的程序架构进行如下设计:

系统上电操作系统运行之后,ftpdInit函数在默认的端口上创建一个FTP服务器控制链接,并且调用ftpd-Task创建一个FTP服务进程来响应多个用户的请求。其中ftpdTask使用ftpdWorkTask为每个不同的用户在各自需要时分别创建一个服务进程进行响应,如图2所示。

基于嵌入式的FTP服务器的设计、结构与工作模式介绍

ftpdWorkTask 完成FTP 服务器的主要协议处理功能,该进程分析每个客户端请求命令,做出响应并且回复给客户端。函数的主体是一个循环结构,分析客户端请求命令的功能由简单的strncmp函数来实现,如果经过分析之后命令符合有效命令的格式,ftpdWorkTask将调用响应的处理函数并且将处理结果返回给客户端。

根据RFC959,FTP服务器需要响应的命令分为访问控制命令、传输参数命令和服务命令。本课题设计的FTP服务器实现了对以下命令的响应。

(1)访问控制命令。访问控制命令如表1所示。

基于嵌入式的FTP服务器的设计、结构与工作模式介绍

(2)传输参数命令。所有的数据传输参数都有默认值,只有在默认值需要改变的时候才需要命令去指定传送数据传输参数。默认值是最后一次指定的值,如果未被指定,则是标准默认值。这意味着服务器必须“记住”

当前可用的默认值,如表2所示。

基于嵌入式的FTP服务器的设计、结构与工作模式介绍

(3)FTP服务命令。FTP服务命令定义了用户请求传送文件或者文件系统的功能,如表3所示。

基于嵌入式的FTP服务器的设计、结构与工作模式介绍

4 功能及性能测试

在完成设计、编码及交叉编译之后,对嵌入式FTP服务器在目标机上的运行的情况进行功能和简单的性能测试。

4.1 功能测试

功能测试的目的是验证FTP服务器是否能够正常处理协议所要求的功能,测试工具为FTP客户端软件包括WindowsXP 命令行中的FTP 命令,FlashFXP 以及在WindowsCE操作系统下开发的专用FTP客户端软件。

4.2 性能测试

嵌入式FTP服务器运行在MPC755处理器子卡上,处理器为PowerPC755,处理器工作频率为266 MHz,局部总线频率为66 MHz,1路10M/100M以太网接口。存储设备为大容量存储器子卡,存储容量为128 GB,读/写访问速度5 MB/s以上(裸盘)。测试结果表明使用Win-dows XP 平台的客户端软件进行下载速度可以达到800 KB/s以上,使用WindowsCE平台的客户端软件进行下载速度可以达到300 KB/s以上。

5 结语

本文介绍了FTP协议的工作模式和工作流程,介绍了FTP服务器的典型结构,即循环服务器、单线程并发服务器和多线程并发服务器,并且分析了这三种FTP服务器结构的优缺点,根据课题项目需要,选择多线程并发服务器的结构为设计方案进行详细设计。实现的功能包括对RFC959标准定义的访问控制命令、传输参数命令和FTP服务命令在内的常用命令的处理和响应。

最后对该嵌入式FTP服务器的功能和性能进行简单的测试,测试结果表明功能和性能符合期望标准。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 协议
    +关注

    关注

    2

    文章

    570

    浏览量

    38911
  • 服务器
    +关注

    关注

    12

    文章

    8120

    浏览量

    82524
  • 操作系统
    +关注

    关注

    37

    文章

    6288

    浏览量

    121887
收藏 人收藏

    评论

    相关推荐

    基于H264的嵌入式视频服务器的设计

    基于H264的嵌入式视频服务器的设计摘要! 本文介绍了基于的嵌入式视频服务器的设计重点阐述了嵌入式
    发表于 06-25 10:50

    嵌入式FTP服务器能实现什么功能?

    FTP服务是目前广泛应用的因特网应用服务之一,为了在国产嵌入式实时操作系统平台上开发FTP服务
    发表于 03-11 08:27

    怎样去设计嵌入式WEB服务器

    怎样去设计嵌入式WEB服务器?怎样去设计嵌入式WEB服务器的软件?
    发表于 04-27 07:10

    如何配置嵌入式服务器

    嵌入式Web服务器每个Spring Boot Web应用程序都包含一个嵌入式Web服务器。此功能会导致许多操作方法问题,包括如何更改嵌入式
    发表于 10-27 08:35

    嵌入式搭建ftp服务器的方法

    嵌入式ftp下载源码git clone git@github.com:gamman/stupid-FTPd.git编译make CC=arm-linux-gnueabihf-gcc编辑
    发表于 10-28 07:59

    嵌入式Web服务器为什么不使用jetty

    嵌入式Web服务器不使用jetty,太麻烦了。配置也不熟悉。代码嵌入式Tomcat示例参考资料嵌入式Tomcat示例嵌入式
    发表于 10-28 09:05

    嵌入式linux下ftp服务是怎样移植的

    嵌入式linux下ftp服务移植前言使用ftp可以将文件快速的上传到ftp服务器或者下载文件,很
    发表于 10-28 07:41

    基于ARM和Linux的嵌入式Web服务器的构建及应用

    摘要:本文主要研究了基于ARM和Linux的嵌入式Web服务器的构建及应用.随着互联网的飞速发展,越来越多的信息化产品需要接入互联网并通过Web页面进行远程访问和控制,嵌入式Web服务器
    发表于 11-05 06:07

    如何实现对嵌入式WEB服务器系统的控制设计

    ......摘要工程实践教学环节是为了学生能够更好地巩固和实践所学专业知识而设置的,在本次工程实践中,我们以ARM体系结构与编程课程中所学知识为基础,对基于ARM的简单嵌入式WEB服务器系统进行了
    发表于 11-09 08:47

    嵌入式Web服务器的设计与实现

    概况,工作原理,软硬件设计及其在远程温度监控系统中的应用作了一个较为系统的研究.首先介绍嵌入式Web服务器的原理与应用,然后针对嵌入式We
    发表于 11-09 08:41

    介绍嵌入式Web服务器工作原理

    嵌入式Web 服务器工作原理1、服务器软件(BOA)始终在HTTP 端口守候客户端的连接请求,当客户端向服务器发起一个连接请求后,客户端和
    发表于 12-16 07:12

    如何使用Apache FtpServer实现嵌入式FTP服务器

    1.Apache FtpServer是一个纯Java实现的FTP服务器2.既可以作为一个完整的FTP服务器单独使用,也可以在Java程序中调用3.使用Apache FtpServer实
    发表于 12-27 06:49

    嵌入式FTP服务器的设计与实现

    随着嵌入式设备的不断发展,其对通信也提出了越来越高的要求。FTP(File Transfer Protocol)作为internet上最早提供的服务之一,至今仍然被人们广泛使用,FTP
    发表于 06-14 06:50 1340次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>FTP</b><b class='flag-5'>服务器</b>的设计与实现

    基于DSP的嵌入式FTP服务器实现方法介绍

    随着嵌入式设备的不断发展,其对通信也提出了越来越高的要求。FTP(File Transfer Protocol)作为internet上最早提供的服务之一,至今仍然被人们广泛使用,FTP
    发表于 11-15 08:35 1303次阅读
    基于DSP的<b class='flag-5'>嵌入式</b><b class='flag-5'>FTP</b><b class='flag-5'>服务器</b>实现方法<b class='flag-5'>介绍</b>

    FTP服务构成及FTP服务器介绍

    FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为
    的头像 发表于 08-22 14:22 4885次阅读