羅有平,周炳然
(1.中國電子科技集團公司第五十四研究所,河北 石家莊 050081;2.河北省教育考試院,河北 石家莊 050091)
文件傳輸功能是統(tǒng)一通信系統(tǒng)即時消息子系統(tǒng)提供的服務之一[1],該功能為統(tǒng)一通信系統(tǒng)用戶提供了交換文件的能力[2]。在文件傳輸過程中,網絡連接不穩(wěn)定、客戶端軟件宕機、重啟和用戶取消傳輸操作等各種原因都會引起文件傳輸中斷,如果統(tǒng)一通信系統(tǒng)中沒有斷點續(xù)傳功能,下次再傳輸該文件就得從頭再來[3],尤其對較大的文件將耗費較長的時間進行重復傳輸[4]。為了減少重復傳輸斷點前的文件數據、提高傳輸效率,文件傳輸功能必須具備在上次斷點處繼續(xù)傳輸文件的能力。
為了提升文件傳輸功能的用戶體驗,文件傳輸子系統(tǒng)應具有高穩(wěn)定性,支持多用戶并發(fā),支持各種不同類型文件的傳輸,支持斷點續(xù)傳[5],支持傳輸過程中主動取消文件傳輸,支持接收方接收或拒絕接收文件,禁止非法用戶傳輸文件[6]。
文獻[6-10]已開展了利用FTP協(xié)議和HTTP協(xié)議實現文件斷點續(xù)傳,這種方法適用于基于Web網站瀏覽器方式或文件下載工具方式對文件進行下載,并不適用于統(tǒng)一通信系統(tǒng)中用戶之間文件可靠傳輸,本文則討論在統(tǒng)一通信系統(tǒng)中基于Session Initiation Protocol(SIP)協(xié)議和Message Session Relay Protocol(MSRP)協(xié)議來實現文件斷點續(xù)傳的方法。
根據IETF在RFC3261中的建議,SIP協(xié)議本身并不提供服務[11]。SIP協(xié)議作為一個基礎協(xié)議,用戶可以在其上實現多種統(tǒng)一通信業(yè)務,例如:多媒體電話、多媒體會議、點擊撥號、即時消息和狀態(tài)呈現等業(yè)務[12]。SIP協(xié)議不對傳輸層協(xié)議進行要求,面向連接和無連接的傳輸層協(xié)議都可以用于承載SIP協(xié)議,可以用于傳輸SIP的傳輸層協(xié)議有UDP、TCP和SCTP[13]。
在RFC4975中指出了MSRP協(xié)議適用于實時性要求高的業(yè)務,如即時消息、文件傳輸、圖片共享、游戲和業(yè)務操作控制等[14]。MSRP協(xié)議承載在傳輸層的TCP協(xié)議之上,基于TCP可靠傳輸協(xié)議傳輸消息或文件,具有數據傳輸快、傳輸占用帶寬少等特點[15]。
SIP協(xié)議制定了2種即時消息模式:尋呼模式和會話模式[16]。尋呼模式通過SIP MESSAGE信令來發(fā)送即時消息,適用于較短文本消息傳送[17]。會話模式是與尋呼模式相對的一種模式,每次對話都有一個明顯的起始和終止標識,通過采用INVITE和BYE等信令方法來啟動和結束一次會話,并依靠MSRP協(xié)議實現文件傳輸的即時通信[18-19]。MSRP可稱為會話模式的即時信息傳輸協(xié)議,MSRP的角色就如同RTP[8],只是傳輸的內容為文件內容本身,這樣可以避免每條消息均需包含一長串的SIP消息頭。會話模式的優(yōu)點是讓即時消息的功能更完整,并且讓SIP強化自身的優(yōu)點,以支持圖像、語音、視頻和文本等文件交換。
協(xié)議擴展是針對即時消息多種信息格式進行支撐,使用戶間通過統(tǒng)一通信系統(tǒng)即時消息子系統(tǒng)不僅能傳遞普通文本信息,還能傳遞大數據文件、圖形信息和音視頻信息,并且讓離線消息、匿名消息、定時消息、消息報告和斷點續(xù)傳等即時消息業(yè)務的實現成為可能。為支撐斷點續(xù)傳等豐富的擴展業(yè)務,部分協(xié)議擴展字段含義如表1所示。
表1文件傳輸擴展字段
序號字段值含義1MsgExt.msgType消息類型:IM:即時消息;TM:定時消息;SYSTEM:系統(tǒng)廣播消息;REPORT:遞送報告;FileNotify:表示文件傳輸。2MsgExt.localMsgID終端的本地消息標識。3MsgExt.File.ID傳輸文件標識。4MsgExt.File.Name文件名稱。5MsgExt.File.Size文件大小(單位為Byte)。6MsgExt.File.Status狀態(tài):Request:表示請求傳輸;Agree:表示同意傳輸;Reject:表示拒絕傳輸;Stop:表示終止傳輸。7MsgExt.File.Seek文件分片索引值。
支持斷點續(xù)傳的文件傳輸信令流程如圖1所示,該流程涉及發(fā)送方、SIP AS、MSRP AS和接收方4個角色。全過程共包含5個階段:發(fā)送方進行文件傳輸請求、接收方同意或拒收文件、建立連接、文件數據傳輸和拆除連接。下面分別描述各階段的業(yè)務流程及協(xié)議示例。
階段1:當發(fā)送方UE A需要傳輸文件給接收方UE B時,首先向所在域的SIP AS發(fā)送關于文件傳輸請求SIP MESSAGE消息,該文件傳輸請求消息經過統(tǒng)一通信即時消息服務器處理后,被路由到達接收方,提示接收方有一文件交換的請求。文件傳輸請求SIP MESSAGE消息示例如圖2所示,消息中的擴展字段具體含義如表1所示。
圖1 支持斷點續(xù)傳的信令流程
圖2 文件傳輸請求示例
階段2:接收方收到文件傳輸請求提醒后,可以決定是否接收該文件,如果接收方同意接收該文件,則通過SIP MESSAGE通知發(fā)送方,然后將發(fā)起媒體協(xié)商流程;如果接收方拒絕接收文件,也通過SIP MESSAGE通知發(fā)送方拒絕接收文件,流程到此結束。以同意接收文件傳輸SIP MESSAGE消息為例,消息示例如圖3所示。
喜姑與香娭毑的不同之處在于,香娭毑的山水,是嫁到白家灣以后慢慢顯露出來的,而喜姑則是嫁到白家灣就顯露出山水了,喜姑的山水當然是山歌。
圖3 同意接收文件傳輸消息示例
階段3:發(fā)送方在收到接收方同意文件傳輸消息后,發(fā)送方與接收方通過INVITE-200 OK-ACK信令流程建立SIP會話,SIP AS為收發(fā)雙方向MSRP AS進行資源預留請求。在SIP消息交互過程中,利用SDP攜帶發(fā)送方、文件傳輸服務器、接收方為本次文件傳輸分配的業(yè)務端口號及IP地址。然后再通過MSRP HELLO握手消息分別建立發(fā)送方、接收方與文件傳輸服務器之間的業(yè)務連接通道,為下一階段的文件數據傳輸做好準備。MSRP握手消息示例如圖4所示。
圖4 MSRP握手消息示例
階段4:發(fā)送方、接收方分別與文件傳輸服務器建立TCP連接后,就可利用MSRP SEND來分片發(fā)送文件內容本身了,MSRP SEND文件內容示例如圖5所示。
圖5 MSRP SEND文件數據示例
階段5:文件傳輸完成后,通過BYE拆除接發(fā)送方與接收方之間的SIP會話,SIP AS通知MSRP AS拆除本次文件傳輸的業(yè)務通道,回收相關資源。拆除文件傳輸消息示例如圖6所示。
圖6 拆除文件傳輸消息示例
在文件傳輸過程中的階段4,一旦發(fā)生發(fā)送方取消文件傳輸、接收方停止接收文件和網絡中斷等情形,文件傳輸將被終止。
下次繼續(xù)再傳輸該文件,上述信令流程將再執(zhí)行一遍,在階段1中,接收方收到文件傳輸請求SIP MESSAGE消息后,首先通過檢測MsgExt.File.ID值,來判斷該文件內容是否被發(fā)送方修改過,如果該值不一樣,則需要重頭開始傳輸最新文件,這樣可以保證文件名稱未改變,而文件內容卻進行了修改的情況下,正確傳輸最新文件。如果該值一樣,則可以從斷點處續(xù)傳文件,在階段2中,接收方在同意接收文件傳輸SIP MESSAGE消息的MsgExt.File.Seek字段,填上已接收文件數據分片數,則表示讓發(fā)送方從該分片數的下一片開始發(fā)送,從而實現從斷點處續(xù)傳文件功能。
文件傳輸軟件用于實現點對點文件可靠傳輸,根據邏輯功能劃分,文件傳輸軟件系統(tǒng)結構如圖7所示。
圖7 文件傳輸軟件系統(tǒng)結構
① SIP消息服務:接收來自用戶的SIP消息處理,實現點對點發(fā)送尋呼模式消息和會話模式消息,支持同意和拒絕用戶的文件傳輸請求。
② 內部消息處理:SIP消息服務與MSRP服務間有接口信息的交換,為了降低2個軟件之間的耦合性,防止一個程序修改時影響另一個程序,2個軟件間采用內部消息的方式來處理接口信息的交換。
④ MSRP協(xié)議棧:MSRP協(xié)議棧是整個程序的核心所在。MSRP服務與即時消息SIP服務協(xié)同工作來完成文件傳輸功能,即時消息SIP服務進行提前會話協(xié)商,然后對MSRP協(xié)議棧進行管理,包括兩端的path申請、綁定以及各資源的申請與釋放。
⑤ 配置管理:整個程序在啟動時,將從配置數據庫中讀取程序的一些基本的配置,包含著IP地址和端口號,以此保證當這些基本信息修改時,不需要重新編譯程序即可正常運行。
為了驗證文件斷點續(xù)傳效果,構建了由服務器、有線終端及無線終端組成的統(tǒng)一通信系統(tǒng),其組網示意圖如圖8所示。統(tǒng)一通信服務器上運行SIP AS、MSRP AS,終端上運行統(tǒng)一通信客戶端軟件,進行文件傳輸,在各終端上使用文件傳輸功能,其人機交互界面示意如圖9所示。
圖8 統(tǒng)一通信系統(tǒng)拓撲圖
圖9 文件傳輸用戶界面
設計的基于SIP和MSRP協(xié)議實現文件斷點續(xù)傳方法與基于軟件架構開發(fā)的文件傳輸軟件在統(tǒng)一通信系統(tǒng)中的應用表明,該方法為即時消息子系統(tǒng)提供了高可靠性的文件傳輸功能,并具備良好的用戶體驗。
斷點續(xù)傳是文件傳輸功能的關鍵技術之一。本文研究實現了基于SIP和MSRP協(xié)議實現文件斷點續(xù)傳的方法,從發(fā)送方、SIP AS、MSRP AS、接收方之間的信令流程,交互協(xié)議的擴展字段及文件傳輸服務軟件架構等方面進行詳細描述,實現了文件無縫續(xù)傳。該方法及軟件架構適用于無線信道環(huán)境下的統(tǒng)一通信系統(tǒng)。
[1]陳立水,王俊芳,趙進平,等.統(tǒng)一通信技術研究及展望[J].無線電通信技術,2014,40(2):1-3.
[2]劉召富.面向網絡應用的大文件傳輸服務的設計與實現[D].北京:北京郵電大學,2014:35-36.
[3]廖樂林.斷點續(xù)傳的原理探討和編程應用[J].計算機與信息技術,2007(23):352.
[4]史黎黎,牛賓.基于Linux系統(tǒng)的即時通信軟件開發(fā)[J].無線電工程,2015,45(8):94-96.
[5]楊紫薇,丁敬海,張士軍.一種超短波電臺低帶寬下文件可靠群發(fā)方法[J].無線電通信技,2016,42(6):95-98.
[6]齊幸輝,張庚,劉革,等.基于XMPP協(xié)議的文件傳輸模塊設計與實現[J].無線電工程,2014,44(3):1-4.
[7]張功萱,陳瀚.基于FTP和消息機制的跨平臺系統(tǒng)自動更新研究[J].計算機安全,2010,31(9):16-18.
[8]王占軍,王偉,趙志剛.基于FTP協(xié)議的文件傳輸組件設計與實現[J].沈陽師范大學學報(自然科學版),2012,30(3):375-377.
[9]鄭營營.基于HTTP/FTP協(xié)議的斷點續(xù)傳多線程下載組件[D].濟南:濟南大學,2012:50-51.
[10] 周聽,熊前興,趙衛(wèi)利.基于TCP/IP的斷點續(xù)傳系統(tǒng)研究[J].計算機系統(tǒng)應用,2007,21(1):32-35.
[11] 任海亮,韓慧蓮,武威.基于VC++的斷點續(xù)傳設計與實現[J].電腦開發(fā)與應用,2009,22(11):862-863.
[12] RFC3261.SIP:Session Initiation Protocol[S],2002.
[13] 3GPP TS 23.228.IP Multimedia Subsystem (IMS)[S],2004.
[14] 張海.SIP模式下統(tǒng)一通信端系統(tǒng)的設計與實現[J].信息通信,2016,167(11):194-195.
[15] RFC4975.The Message Session Relay Protocol (MSRP)[S],2007.
[16] 楊海波,蘭國亮.一種改進的MSRP協(xié)議媒體中繼方法[J].小型微型計算機系統(tǒng),2013,34(12):2805-2808.
[17] 洪波,胡志軍,王津,等.能適應帶寬的多格式視頻文件統(tǒng)一WEB發(fā)布方法[J].無線電通信技術,2015,41(3):69-73.
[18] 李順新,丁勝,陳建勛.數據備份系統(tǒng)中多線程傳輸和斷點續(xù)傳的設計[J].微機發(fā)展,2004,14(10):110-113.
[19] 陳增強,郭嘉琳,劉忠信,等.具有斷點續(xù)傳功能的文件傳輸系統(tǒng)的設計與關鍵技術[J].計算機工程,2002,28(12):14-16.