0 导言
跟着嵌入式设备的不断发展,其对通讯也提出了越来越高的要求。FTP(File Transfer Protocol)作为internet上最早供给的服务之一,至今依然被人们广泛运用,FTP是完结文件传输服务的最主要的标准。当需求考虑到文件传输安全、传输质量、拜访操控等许多要素时,FTP服务器就成了处理文件传输问题的关键所在。
但是,有时嵌入式体系的开发环境并不支撑FTP协议(如ADSP的集成开发环境Visual DSP++),在这种情况下,运用已有的LWIP仓库中的一些根底函数来构建一个FTP服务器,正是本文要具体讨论的论题。
1 文件传输进程
FTP协议与一般的Intemet协议不同。Intemet协议一般选用一个TCP衔接来传送信息(如HTTP协议);而FTP协议则选用两个TCP衔接来完结文件的传输,其间一个用来为文件传输下指令,另一个则完结真实的传输进程。图1所示是FTP文件传输的原理图。
客户端想要获取存放在服务器上的文件时,应先经过一个预界说的端口号21自动与服务器树立衔接,服务器收到恳求后,经过3次握手,就可在进行FTP指令处理的用户协议解说器(PI)和服务器协议解说器之间树立一条TCP衔接。该衔接一向等候用户和服务器之间的通讯,并传输用户输入的一切FTP指令和服务器的应对,即FTP传输中的指令衔接。
当客户经过交互式用户界面向FTP服务器宣布要下载服务器上某一文件的指令时,该指令即被送到用户协议解说器,并由用户协议解说器进行处理。FTP将在服务器端口号20上翻开一个数据TCP衔接。在数据衔接上传送完本次恳求需传送的文件之后,它将封闭数据衔接,直到再有文件传送恳求时再从头翻开。因而,在FTP中,操控衔接在整个用户会话期间一向翻开着,而数据衔接则是一条暂时衔接,当且仅当履行文件传输进程时才被创立。
FTP服务器的内部结构可根据不同的需求,挑选不同的服务器方式。因为服务器方式决议着规划结构,而不同的规划结构又很大程度地影响着FTP服务器的功用。服务器的方式主要有循环服务器和并发服务器。
1.1 循环服务器
循环服务器只适应于最简略的运用协议,它选用客户轮番等候的工作办法。但它的规划、编程、调试和修正都比较简略,在其呼应时刻能够满意需求的条件下(这个时刻能够在本地或大局网络中进行测验),能够选用循环服务器方式。
1.2 并发服务器
假如构建一个呼应需求许多的I/O操作,且各个恳求所需求的处理时刻不同非常大,或服务器在一台多处理器的计算机上运转,则可引进并发性办法来缩短呼应时刻。大多数并发服务器运用多个进程以及多个线程。其线程可分为两类:主服务器线程和从服务器线程。但是,在有些情况下,一些操作体系创立一个线程的开支很大,服务器无法承当为每个恳求或每个衔接都创立一个线程的重负时,可选用单线程的并发方式。
2 嵌入式FTP服务器的完结
图2所示是以ADSP-BF537为中心的嵌入式体系的硬件组成框图。图中,根据Blackfin处理器的ADSP–BF537具有接口丰厚,功用优秀,价格低廉等特色,并具有强壮的多媒体数据处理才能。ADSP的集成开发环境Visual DSP++中嵌入了实时操作体系内核VDK,适合于多任务多线程的嵌入式操作。此外,ADI还供给了一个用于Blackfin系列嵌入式处理器的LwIP协议栈端口,运用它能够快速将一个独立的嵌入式运用联网。图2中的BF537可经过网络芯片LAN8187完结与上位机之间的网络通讯,一起运用自身的PPI口完结与存储阵列的通讯和办理。
因为体系中的服务器和客户端在同一个局域网内,考虑到硬件芯片自身的特色,在文件下载时,与存储阵列的通讯只能经过同一套PPI总线,因而,较好的办法是一次只承受一个用户的下载恳求,所以可构建一个循环服务器来满意需求。
出于安全性考虑,服务器一般只承受用户名/暗码的登录办法。登录时所需的用户名和暗码存放在存储板中。每次收到用户恳求信息后,先从存储板处取得已有的用户信息并比较,若与其间任何一个相符合,则发送承受恳求信息,不然,回送回绝信息。用户登陆成功后,服务器会呼应它的各种操作。图3所示是FTP服务器的操作流程图。
当用户需求下载文件时,需先获取文件列表。文件列表存放于存储板中,可先由服务器向存储板发送回送文件列表的恳求,在得到呼应后。再经过网络回送给用户,由用户从中挑选所需下载文件的文件名,并发送给服务器。服务器收到文件名后,先判别其所属的文件夹,再由此向对应存储板发送下载该文件的指令。存储板经过PPI向办理板回送信息(在此每包数据的巨细为64KB),办理板每缓存完十包数据后,将经过网络回送给用户。需求指出的是,一开始,在实践的下载进程中,有时文件会呈现丢帧现象,并且跟网络情况有关。经过剖析其原因是网络速度与PPI传输比较过慢而导致接纳缓存溢出,然后引起下载进程中的数据丢掉。所以,可采纳流控的下载办法。事实上,存储板并不会一下将一切数据都接连地发送过来,而是每发送完十包今后,再等候操控板的承认包。操控板只要在将一切数据都经过网路发送结束后,才给存储板发送承认包,以等候接纳下一次的十包数据。以此循环,直至下载完结。其指令处理流程图如图4所示。
3 结束语
在嵌入式体系中,依托通讯技能能够创造出许多非常有用的产品,本文要点介绍了一个以DSP为中心所构建的嵌入式FTP服务器的完结办法。且经实践查验,运转情况良好。本办法对其它方式的嵌入式体系的FTP下载功用,也有很强的学习含义。