嵌入式FTP服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)

  作者:郝玉鍇

  FTP服務(wù)是目前廣泛應(yīng)用的因特網(wǎng)應(yīng)用服務(wù)之一,為了在國(guó)產(chǎn)嵌入式實(shí)時(shí)操作系統(tǒng)平臺(tái)上開(kāi)發(fā)FTP服務(wù),采用多線程并發(fā)服務(wù)器的體系結(jié)構(gòu)設(shè)計(jì)了一種嵌入式FTP服務(wù)器,實(shí)現(xiàn)了包括對(duì)RFC959標(biāo)準(zhǔn)定義的訪問(wèn)控制命令、傳輸參數(shù)命令和FTP服務(wù)命令在內(nèi)的常用命令的處理和響應(yīng)功能,并且對(duì)該嵌入式FTP服務(wù)器的功能和性能進(jìn)行了測(cè)試。

  0 引言

  FTP(文件傳輸協(xié)議)是一種用于從網(wǎng)絡(luò)中一臺(tái)主機(jī)向另外一臺(tái)主機(jī)傳輸文件的協(xié)議,屬于Internet上最早提供的應(yīng)用服務(wù)之一,通常將文件傳輸服務(wù)稱(chēng)為FTP服務(wù)。FTP服務(wù)不受計(jì)算機(jī)類(lèi)型及操作系統(tǒng)的限制,只要建立FTP鏈接的雙方都支持FTP協(xié)議,就可以方便地通過(guò)網(wǎng)絡(luò)進(jìn)行遠(yuǎn)程文件的下載、上傳和刪除等操作。

  根據(jù)RFC959描述,F(xiàn)TP的目標(biāo)是:促進(jìn)程序/數(shù)據(jù)文件的共享;鼓勵(lì)(通過(guò)程序)使用遠(yuǎn)程計(jì)算機(jī);使用戶不必面對(duì)不同主機(jī)上不同文件系統(tǒng)的差異;對(duì)數(shù)據(jù)進(jìn)行高效可靠的傳輸。本文在國(guó)產(chǎn)嵌入式實(shí)時(shí)操作系統(tǒng)的平臺(tái)上,在已有TCP協(xié)議支持的基礎(chǔ)上,設(shè)計(jì)開(kāi)發(fā)滿足RFC959要求的FTP服務(wù)器,功能支持對(duì)FTP客戶端常用命令的正確響應(yīng),性能滿足嵌入式環(huán)境的要求。

  1 文件傳輸過(guò)程

  1.1 FTP工作模式

  FTP服務(wù)采用典型的客戶端/服務(wù)器工作模式,在網(wǎng)絡(luò)遠(yuǎn)端提供FTP服務(wù)的計(jì)算機(jī)稱(chēng)為FTP服務(wù)器,與用戶的客戶端通過(guò)TCP進(jìn)行鏈接。FTP服務(wù)器通過(guò)2個(gè)并行的TCP鏈接來(lái)提供服務(wù),一個(gè)是控制鏈接,一個(gè)是數(shù)據(jù)鏈接?刂奇溄邮冀K等待客戶與服務(wù)器之間的通信,該鏈接將客戶命令從客戶端傳給服務(wù)器,并傳回服務(wù)器的應(yīng)答。數(shù)據(jù)鏈接則是每當(dāng)一個(gè)文件在客戶端和服務(wù)器之間傳輸前,才進(jìn)行創(chuàng)建,只用于數(shù)據(jù)傳輸目的。

  客戶端與服務(wù)器及其連接情況如圖1所示。

  1.2 FTP工作流程

  在典型的FTP客戶機(jī)和服務(wù)器的鏈接建立及交互過(guò)程中,一般需要經(jīng)歷以下幾個(gè)步驟:

  (1)在服務(wù)器端運(yùn)行FTP服務(wù)器端程序,等待用戶發(fā)出鏈接請(qǐng)求,在客戶端運(yùn)行FTP客戶端程序。

 。2)當(dāng)FTP 客戶端發(fā)起FTP 會(huì)話嘗試鏈接服務(wù)器時(shí),客戶端首先發(fā)起建立與FTP服務(wù)器21端口之間的控制鏈接,通過(guò)該TCP鏈接發(fā)送用戶名和密碼給服務(wù)器端。

 。3)客戶端為所在的數(shù)據(jù)鏈接選擇一個(gè)臨時(shí)的端口號(hào),并通過(guò)控制鏈接將該端口號(hào)發(fā)送給服務(wù)器。

  (4)當(dāng)需要進(jìn)入文件傳輸階段,客戶端和服務(wù)器通過(guò)“數(shù)據(jù)鏈接”來(lái)傳輸文件,通過(guò)“控制鏈接”來(lái)傳輸命令。

 。5)當(dāng)數(shù)據(jù)傳輸完畢后,關(guān)閉用于建立數(shù)據(jù)鏈接的端口,直到下次數(shù)據(jù)鏈接發(fā)起時(shí)重新打開(kāi),而控制鏈接在整個(gè)FTP會(huì)話期間一直處于打開(kāi)狀態(tài)。

嵌入式FTP服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)

  2 FTP 服務(wù)器設(shè)計(jì)

  選擇不同的服務(wù)器模式將會(huì)影響到整個(gè)設(shè)計(jì)和實(shí)現(xiàn)階段,并且很大程度影響著服務(wù)器的性能。FTP服務(wù)器的內(nèi)部設(shè)計(jì)可以根據(jù)需要和平臺(tái)軟硬件的性能綜合考慮,選擇設(shè)計(jì)不同的服務(wù)器模式。

  2.1 服務(wù)器結(jié)構(gòu)

  服務(wù)器的結(jié)構(gòu)主要有循環(huán)服務(wù)器和并發(fā)服務(wù)器2種,其中并發(fā)服務(wù)器又可以細(xì)分為單線程并發(fā)服務(wù)器和多線程并發(fā)服務(wù)器。

  2.1.1 循環(huán)服務(wù)器

  循環(huán)服務(wù)器適用于簡(jiǎn)單的應(yīng)用協(xié)議,與客戶端采用停止-等待的通信方式,使用單個(gè)線程循環(huán)運(yùn)行,每次只能處理一個(gè)客戶端的請(qǐng)求,但是它的設(shè)計(jì)、編碼、調(diào)試和后續(xù)維護(hù)相對(duì)并發(fā)服務(wù)器都比較簡(jiǎn)單。

  2.1.2 單線程并發(fā)服務(wù)器

  單線程并發(fā)服務(wù)器是由單個(gè)服務(wù)器線程預(yù)先為多個(gè)客戶端打開(kāi)TCP鏈接,當(dāng)有任意的客戶端請(qǐng)求到達(dá)時(shí),服務(wù)器線程由阻塞態(tài)轉(zhuǎn)為運(yùn)行態(tài)來(lái)處理該客戶端請(qǐng)求并發(fā)送響應(yīng),在此期間阻塞其他客戶端請(qǐng)求。完成一個(gè)客戶端請(qǐng)求后,服務(wù)器線程再次阻塞以等待其他的任意客戶端的請(qǐng)求。單線程并發(fā)服務(wù)器適用于操作系統(tǒng)創(chuàng)建新的線程開(kāi)銷(xiāo)很大的情況下。

  2.1.3 多線程并發(fā)服務(wù)器

  多線程并發(fā)服務(wù)器設(shè)計(jì)使用多個(gè)進(jìn)程及多個(gè)線程,服務(wù)器首先執(zhí)行一個(gè)主線程,在熟知的端口上打開(kāi)一個(gè)鏈接,等待客戶端消息,當(dāng)客戶端請(qǐng)求到來(lái)時(shí),主線程創(chuàng)建子線程來(lái)處理該客戶請(qǐng)求,此時(shí)主線程不與客戶端直接通信,而是由每個(gè)子線程并發(fā)地來(lái)與各自對(duì)應(yīng)的客戶端進(jìn)行通信。當(dāng)子線程完成客戶請(qǐng)求的響應(yīng)并發(fā)送給客戶端之后,子線程退出,而此時(shí)主線程一直在等待其他的客戶鏈接請(qǐng)求。

  2.2 方案選擇

  服務(wù)器結(jié)構(gòu)的方案選擇主要取決于服務(wù)器的應(yīng)用場(chǎng)景、期望達(dá)到的性能以及方案實(shí)現(xiàn)的難易程度。

  循環(huán)服務(wù)器的結(jié)構(gòu)容易實(shí)現(xiàn)但是需要客戶端等待來(lái)獲取服務(wù),難以滿足多個(gè)客戶的需求,服務(wù)器效率性能低下;單線程服務(wù)器結(jié)構(gòu)需要服務(wù)器線程反復(fù)地在它打開(kāi)的鏈接上等待客戶端請(qǐng)求,需要每次循環(huán)地檢查網(wǎng)絡(luò)鏈接狀況和文件系統(tǒng)處理文件的狀態(tài),查詢完成后才能夠刷新數(shù)據(jù)顯示,因此造成不必要的延遲;多線程并發(fā)服務(wù)器同時(shí)和多個(gè)客戶端進(jìn)行通信,由操作系統(tǒng)分配各個(gè)線程的處理器時(shí)間,比較適合FTP服務(wù)器的對(duì)每個(gè)客戶端一直存在控制鏈接和需要時(shí)建立數(shù)據(jù)鏈接的特點(diǎn)。綜合上述分析,本課題中FTP服務(wù)器采用多線程并發(fā)服務(wù)器結(jié)構(gòu)的方案是比較合理的。


微信掃描分享本文到朋友圈
掃碼關(guān)注5G通信官方公眾號(hào),免費(fèi)領(lǐng)取以下5G精品資料
  • 1、回復(fù)“YD5GAI”免費(fèi)領(lǐng)取《中國(guó)移動(dòng):5G網(wǎng)絡(luò)AI應(yīng)用典型場(chǎng)景技術(shù)解決方案白皮書(shū)
  • 2、回復(fù)“5G6G”免費(fèi)領(lǐng)取《5G_6G毫米波測(cè)試技術(shù)白皮書(shū)-2022_03-21
  • 3、回復(fù)“YD6G”免費(fèi)領(lǐng)取《中國(guó)移動(dòng):6G至簡(jiǎn)無(wú)線接入網(wǎng)白皮書(shū)
  • 4、回復(fù)“LTBPS”免費(fèi)領(lǐng)取《《中國(guó)聯(lián)通5G終端白皮書(shū)》
  • 5、回復(fù)“ZGDX”免費(fèi)領(lǐng)取《中國(guó)電信5GNTN技術(shù)白皮書(shū)
  • 6、回復(fù)“TXSB”免費(fèi)領(lǐng)取《通信設(shè)備安裝工程施工工藝圖解
  • 7、回復(fù)“YDSL”免費(fèi)領(lǐng)取《中國(guó)移動(dòng)算力并網(wǎng)白皮書(shū)
  • 8、回復(fù)“5GX3”免費(fèi)領(lǐng)取《R1623501-g605G的系統(tǒng)架構(gòu)1
  • 本周熱點(diǎn)本月熱點(diǎn)

     

      最熱通信招聘

    業(yè)界最新資訊


      最新招聘信息

    最新論壇貼子