罗有平,周炳然
(1.中国电子科技集团公司第五十四研究所,河北 石家庄 050081;2.河北省教育考试院,河北 石家庄 050091)
文件传输功能是统一通信系统即时消息子系统提供的服务之一[1],该功能为统一通信系统用户提供了交换文件的能力[2]。在文件传输过程中,网络连接不稳定、客户端软件宕机、重启和用户取消传输操作等各种原因都会引起文件传输中断,如果统一通信系统中没有断点续传功能,下次再传输该文件就得从头再来[3],尤其对较大的文件将耗费较长的时间进行重复传输[4]。为了减少重复传输断点前的文件数据、提高传输效率,文件传输功能必须具备在上次断点处继续传输文件的能力。
为了提升文件传输功能的用户体验,文件传输子系统应具有高稳定性,支持多用户并发,支持各种不同类型文件的传输,支持断点续传[5],支持传输过程中主动取消文件传输,支持接收方接收或拒绝接收文件,禁止非法用户传输文件[6]。
文献[6-10]已开展了利用FTP协议和HTTP协议实现文件断点续传,这种方法适用于基于Web网站浏览器方式或文件下载工具方式对文件进行下载,并不适用于统一通信系统中用户之间文件可靠传输,本文则讨论在统一通信系统中基于Session Initiation Protocol(SIP)协议和Message Session Relay Protocol(MSRP)协议来实现文件断点续传的方法。
根据IETF在RFC3261中的建议,SIP协议本身并不提供服务[11]。SIP协议作为一个基础协议,用户可以在其上实现多种统一通信业务,例如:多媒体电话、多媒体会议、点击拨号、即时消息和状态呈现等业务[12]。SIP协议不对传输层协议进行要求,面向连接和无连接的传输层协议都可以用于承载SIP协议,可以用于传输SIP的传输层协议有UDP、TCP和SCTP[13]。
在RFC4975中指出了MSRP协议适用于实时性要求高的业务,如即时消息、文件传输、图片共享、游戏和业务操作控制等[14]。MSRP协议承载在传输层的TCP协议之上,基于TCP可靠传输协议传输消息或文件,具有数据传输快、传输占用带宽少等特点[15]。
SIP协议制定了2种即时消息模式:寻呼模式和会话模式[16]。寻呼模式通过SIP MESSAGE信令来发送即时消息,适用于较短文本消息传送[17]。会话模式是与寻呼模式相对的一种模式,每次对话都有一个明显的起始和终止标识,通过采用INVITE和BYE等信令方法来启动和结束一次会话,并依靠MSRP协议实现文件传输的即时通信[18-19]。MSRP可称为会话模式的即时信息传输协议,MSRP的角色就如同RTP[8],只是传输的内容为文件内容本身,这样可以避免每条消息均需包含一长串的SIP消息头。会话模式的优点是让即时消息的功能更完整,并且让SIP强化自身的优点,以支持图像、语音、视频和文本等文件交换。
协议扩展是针对即时消息多种信息格式进行支撑,使用户间通过统一通信系统即时消息子系统不仅能传递普通文本信息,还能传递大数据文件、图形信息和音视频信息,并且让离线消息、匿名消息、定时消息、消息报告和断点续传等即时消息业务的实现成为可能。为支撑断点续传等丰富的扩展业务,部分协议扩展字段含义如表1所示。
表1文件传输扩展字段
序号字段值含义1MsgExt.msgType消息类型:IM:即时消息;TM:定时消息;SYSTEM:系统广播消息;REPORT:递送报告;FileNotify:表示文件传输。2MsgExt.localMsgID终端的本地消息标识。3MsgExt.File.ID传输文件标识。4MsgExt.File.Name文件名称。5MsgExt.File.Size文件大小(单位为Byte)。6MsgExt.File.Status状态:Request:表示请求传输;Agree:表示同意传输;Reject:表示拒绝传输;Stop:表示终止传输。7MsgExt.File.Seek文件分片索引值。
支持断点续传的文件传输信令流程如图1所示,该流程涉及发送方、SIP AS、MSRP AS和接收方4个角色。全过程共包含5个阶段:发送方进行文件传输请求、接收方同意或拒收文件、建立连接、文件数据传输和拆除连接。下面分别描述各阶段的业务流程及协议示例。
阶段1:当发送方UE A需要传输文件给接收方UE B时,首先向所在域的SIP AS发送关于文件传输请求SIP MESSAGE消息,该文件传输请求消息经过统一通信即时消息服务器处理后,被路由到达接收方,提示接收方有一文件交换的请求。文件传输请求SIP MESSAGE消息示例如图2所示,消息中的扩展字段具体含义如表1所示。
图1 支持断点续传的信令流程
图2 文件传输请求示例
阶段2:接收方收到文件传输请求提醒后,可以决定是否接收该文件,如果接收方同意接收该文件,则通过SIP MESSAGE通知发送方,然后将发起媒体协商流程;如果接收方拒绝接收文件,也通过SIP MESSAGE通知发送方拒绝接收文件,流程到此结束。以同意接收文件传输SIP MESSAGE消息为例,消息示例如图3所示。
喜姑与香娭毑的不同之处在于,香娭毑的山水,是嫁到白家湾以后慢慢显露出来的,而喜姑则是嫁到白家湾就显露出山水了,喜姑的山水当然是山歌。
图3 同意接收文件传输消息示例
阶段3:发送方在收到接收方同意文件传输消息后,发送方与接收方通过INVITE-200 OK-ACK信令流程建立SIP会话,SIP AS为收发双方向MSRP AS进行资源预留请求。在SIP消息交互过程中,利用SDP携带发送方、文件传输服务器、接收方为本次文件传输分配的业务端口号及IP地址。然后再通过MSRP HELLO握手消息分别建立发送方、接收方与文件传输服务器之间的业务连接通道,为下一阶段的文件数据传输做好准备。MSRP握手消息示例如图4所示。
图4 MSRP握手消息示例
阶段4:发送方、接收方分别与文件传输服务器建立TCP连接后,就可利用MSRP SEND来分片发送文件内容本身了,MSRP SEND文件内容示例如图5所示。
图5 MSRP SEND文件数据示例
阶段5:文件传输完成后,通过BYE拆除接发送方与接收方之间的SIP会话,SIP AS通知MSRP AS拆除本次文件传输的业务通道,回收相关资源。拆除文件传输消息示例如图6所示。
图6 拆除文件传输消息示例
在文件传输过程中的阶段4,一旦发生发送方取消文件传输、接收方停止接收文件和网络中断等情形,文件传输将被终止。
下次继续再传输该文件,上述信令流程将再执行一遍,在阶段1中,接收方收到文件传输请求SIP MESSAGE消息后,首先通过检测MsgExt.File.ID值,来判断该文件内容是否被发送方修改过,如果该值不一样,则需要重头开始传输最新文件,这样可以保证文件名称未改变,而文件内容却进行了修改的情况下,正确传输最新文件。如果该值一样,则可以从断点处续传文件,在阶段2中,接收方在同意接收文件传输SIP MESSAGE消息的MsgExt.File.Seek字段,填上已接收文件数据分片数,则表示让发送方从该分片数的下一片开始发送,从而实现从断点处续传文件功能。
文件传输软件用于实现点对点文件可靠传输,根据逻辑功能划分,文件传输软件系统结构如图7所示。
图7 文件传输软件系统结构
① SIP消息服务:接收来自用户的SIP消息处理,实现点对点发送寻呼模式消息和会话模式消息,支持同意和拒绝用户的文件传输请求。
② 内部消息处理:SIP消息服务与MSRP服务间有接口信息的交换,为了降低2个软件之间的耦合性,防止一个程序修改时影响另一个程序,2个软件间采用内部消息的方式来处理接口信息的交换。
④ MSRP协议栈:MSRP协议栈是整个程序的核心所在。MSRP服务与即时消息SIP服务协同工作来完成文件传输功能,即时消息SIP服务进行提前会话协商,然后对MSRP协议栈进行管理,包括两端的path申请、绑定以及各资源的申请与释放。
⑤ 配置管理:整个程序在启动时,将从配置数据库中读取程序的一些基本的配置,包含着IP地址和端口号,以此保证当这些基本信息修改时,不需要重新编译程序即可正常运行。
为了验证文件断点续传效果,构建了由服务器、有线终端及无线终端组成的统一通信系统,其组网示意图如图8所示。统一通信服务器上运行SIP AS、MSRP AS,终端上运行统一通信客户端软件,进行文件传输,在各终端上使用文件传输功能,其人机交互界面示意如图9所示。
图8 统一通信系统拓扑图
图9 文件传输用户界面
设计的基于SIP和MSRP协议实现文件断点续传方法与基于软件架构开发的文件传输软件在统一通信系统中的应用表明,该方法为即时消息子系统提供了高可靠性的文件传输功能,并具备良好的用户体验。
断点续传是文件传输功能的关键技术之一。本文研究实现了基于SIP和MSRP协议实现文件断点续传的方法,从发送方、SIP AS、MSRP AS、接收方之间的信令流程,交互协议的扩展字段及文件传输服务软件架构等方面进行详细描述,实现了文件无缝续传。该方法及软件架构适用于无线信道环境下的统一通信系统。
[1]陈立水,王俊芳,赵进平,等.统一通信技术研究及展望[J].无线电通信技术,2014,40(2):1-3.
[2]刘召富.面向网络应用的大文件传输服务的设计与实现[D].北京:北京邮电大学,2014:35-36.
[3]廖乐林.断点续传的原理探讨和编程应用[J].计算机与信息技术,2007(23):352.
[4]史黎黎,牛宾.基于Linux系统的即时通信软件开发[J].无线电工程,2015,45(8):94-96.
[5]杨紫薇,丁敬海,张士军.一种超短波电台低带宽下文件可靠群发方法[J].无线电通信技,2016,42(6):95-98.
[6]齐幸辉,张庚,刘革,等.基于XMPP协议的文件传输模块设计与实现[J].无线电工程,2014,44(3):1-4.
[7]张功萱,陈瀚.基于FTP和消息机制的跨平台系统自动更新研究[J].计算机安全,2010,31(9):16-18.
[8]王占军,王伟,赵志刚.基于FTP协议的文件传输组件设计与实现[J].沈阳师范大学学报(自然科学版),2012,30(3):375-377.
[9]郑营营.基于HTTP/FTP协议的断点续传多线程下载组件[D].济南:济南大学,2012:50-51.
[10] 周听,熊前兴,赵卫利.基于TCP/IP的断点续传系统研究[J].计算机系统应用,2007,21(1):32-35.
[11] 任海亮,韩慧莲,武威.基于VC++的断点续传设计与实现[J].电脑开发与应用,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模式下统一通信端系统的设计与实现[J].信息通信,2016,167(11):194-195.
[15] RFC4975.The Message Session Relay Protocol (MSRP)[S],2007.
[16] 杨海波,兰国亮.一种改进的MSRP协议媒体中继方法[J].小型微型计算机系统,2013,34(12):2805-2808.
[17] 洪波,胡志军,王津,等.能适应带宽的多格式视频文件统一WEB发布方法[J].无线电通信技术,2015,41(3):69-73.
[18] 李顺新,丁胜,陈建勋.数据备份系统中多线程传输和断点续传的设计[J].微机发展,2004,14(10):110-113.
[19] 陈增强,郭嘉琳,刘忠信,等.具有断点续传功能的文件传输系统的设计与关键技术[J].计算机工程,2002,28(12):14-16.