http协议(精编5篇)
【前言导读】此篇优秀法律文书“http协议(精编5篇)”由阿拉题库网友为您精心整理分享,供您学习参考之用,希望这篇资料对您有所帮助,喜欢就复制下载吧!
http协议1
关键词:HTTP流直播;HTTPS;流媒体
中图分类号:TP393文献标识码:A文章编号:1009-3044(2011)29-7259-03
HTTP Live Streaming Secure Transmission Method
YAO Bao-yan
(Xi'an Siyuan University,Xi'an 710000, China)
Abstract: Because of the HTTP protocol its widespread adaptation of existing networks are widely used. On network television or live audio and video services, built on the HTTP protocol streaming service can better adapt to current network conditions, to provide users with near real-time playback experience. Research model based on the live stream secure transmission methods, Internet-based broadcast services is vital, can effectively prevent malicious attacks and tampering services, protection transmission security.
Key words: HTTP Live Stream; HTTPS; Media streaming
HTTP是互联网上最重要的协议,其承载了web访问的绝大部分应用,并成为基于B/S架构的基础协议。但长期以来,HTTP没有用来作为大量数据的传输,特别在流媒体时代,很多音视频数据通过专用的RTSP,RTMP等协议进行传输控制。一方面,是由于HTTP基于完整文件的传输特性无法提供流传输服务,另一方面是由于基于HTTP协议的流媒体服务无法保证数据的传输安全。
1 Web服务器和HTTP协议概述
HTTP协议基于TCP构建,其中的主要参与者是客户端和服务器。客户端一般为浏览器,也可以是其它软件,服务器一般为web服务软件,如Apache,IIS等,也可以是简单的socket服务程序。只要符合HTTP协议中的数据交互规范,就能与对端通信。
HTTP协议常用端口为80,也可定义其它的服务端口。其包含的主要方法有:Get,Post,Head等。常用的Get方法用来从服务器上获取数据,Post方法用来将客户端数据提交到服务器。
基于HTTP的简单架构是浏览器和web服务器的交互。在这种通用模型中,Web服务器提供基于HTTP协议的文件获取基础功能,即响应基于HTTP的Get命令。
2 基于HTTP的流媒体架构及协议
基于HTTP的流媒体服务架构,分为三个主要部分:服务器,分发系统,客户端。其一般架构如图2所示。
典型的配置中,硬件编码器抓取音视频媒体输入,将其编码并输出,同时通过一个软件流媒体切片器将媒体文件分成一系列的小媒体文件集合。这些文件集合存放在一般web服务器上。切片器同时创建并维护一个索引文件,其中包含了这些媒体切片文件的列表,索引文件的URL地址会到web服务器上。客户端软件读取索引文件,然后按照列表中顺序的请求对应的媒体文件,并无缝将这些文件连续起来播放显示。
服务器
服务器包含媒体编码器和流分割器两大部分。媒体编码器一般为硬件设备,其连接摄像机或模拟信号,将输入的媒体数字化并编码为视频和AAC音频,并将其封装为MPEG-2 TS文件。
TS文件做为流媒体分割器的输入,分割器将次文件切割为多个小的“ts”后缀的文件,同时生成一个包含所有ts小文件的列表索引文件。如果是直播业务,编码器会源源不断产生数据,流媒体分割器也会不断产生ts小文件,这种情况下,媒体列表索引文件就应该随着ts的增加修改而试试变更。
一般情况下,为保证实时性,切割TS文件的长度按照播放10秒钟长度进行,这样用户可以看到延时接近10秒的准实时直播数据。
分发系统
分发系统一般是由web服务器或者是web缓存系统组成,其用来作为HTTP服务器媒体索引文件和一系列的。ts文件,以供HTTP客户端下载。一般来说,索引文件采用M3U8文件格式规范,TS文件为MPEG-2中的文件封装格式,一般用于直播系统中。
M3U8文件示例如表2所示。其中将M3U8中的每一行列出来,并在右方注释。
在完成直播功能时,.M3U8文件需要及时更新,这个取决于及时调整其的存活时间属性,这样文件会被频繁的覆盖,客户端也会在存活时间到期后重新请求更新的M3U8文件。
客户端
客户端首先获取M3U8索引文件开始,并解析M3U8识别其中的每一个TS文件,以及解密密钥等必要信息。客户端按顺序下载每个可用的媒体文件。
客户端也采用HTTP协议请求数据,HTTP协议并不需要设计如何穿透防火墙,一般防火墙都允许这一类协议的数据的通过。
3 加密认证安全模型
上文已概述了基于HTTP的直播流媒体系统,本节将说明实现流媒体的安全传输的方法。
1)流分割器生成密钥文件:编码器完成媒体数据的数字化和编码后,输出TS文件。媒体流分隔器从本地网络读入TS流,并将其分隔为小的。ts后缀文件,同时创建一个包含各媒体文件引用的索引文件。实现安全传输时,分割器加密每个媒体段并创建一个密钥文件。
2)M3U8文件中包含加密密钥:在索引文件中,EXT-X-KEY 字段标示必要的信息来解密其后包含的媒体文件。其格式为:
#EXT-X-KEY:METHOD= [,URI =""] , METHOD 参数指定的加密方法。 URI 参数,如果存在,指定如何获取 key,此处一般采用HTTPS文件。协议的版本中定义了两种加密方法:NONE 和 AES-128 ,NONE标示不加密。 AES-128 标示媒体文件使用了128位AES加密方式。
3)客户端获取密钥并解密媒体文件播放:如果M3U8索引文件中包含EXT - X的密钥标记,并且指定了一个密钥文件的获取地址,客户端首先获取该密钥文件,并使用它里面的密钥解密其后的所有媒体文件,直到M3U8中出现下一个EXT - X标记的新密钥,则其后的文件采用这个新的密钥来解密。所有的媒体文件可能是使用同一个密钥加密,也可以周期性的更换新密钥。理论上,每个文件都可以使用一个新密钥,但是因为每一个密钥会增加一次文件请求和传输开销,所以周期性的更换密钥对系统性能的影响更小一些。 媒体流分割器一般支持三种模式的加密设置:
a) 第一种模式允许您指定一个已存在的密钥文件的磁盘路径。在这种模式下,分段器将现有密钥文件的URL插入到索引文件中,并使用这个密钥加密所有媒体文件。
b) 第二种模式是让分段器生成一个随机的密钥文件,保存在指定的位置,并在索引文件中引用该文件。所有的媒体文件将使用这个随机生成的密钥加密。
c) 第三种模式也是让分段器生成一个随机的密钥文件,保存在指定的位置,并在索引文件中引用该文件,然后每n个文件就重新生成一个密钥文件并引用该文件。这种模式被称作密钥轮换。n 个文件为一组,每组使用不同的密钥加密。
4)下面是一段加密的M3U8的例子:
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1280000
/
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2560000
/
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=7680000
/
其中定义了三段采用不同密钥的M3U8子索引文件。每个新的M3U8中的媒体文件都需要其前方标记的EXT-X标志的密钥来解密。
4 在实时监控中的应用
在采用IP摄像头完成远程实时监控时,客户端需要借助iphone或Android只能手机,此两种客户端设备都支持HTTP流媒体协议,另外,通过PC来完成监控视频查看的时候,也可以通过Safari浏览器来支持HTTP流播协议。
因此,在摄像头中采用HTTP流协议来进行直播,就可以实现实时远程监控。传统的监控方案一般采用基于TCP或者UDP的RTP协议完成数据传输,远程访问时,常常因为无法穿透防火墙导致连接设备失败。由于防火墙都会允许HTTP协议通过,所以采用HTTP的流媒体协议不需要考虑防火墙担心问题。
IP摄像头芯片中,具备硬件编码功能,可以完成+AAC音视频格式的加密编码和MPEG-TS的文件封装,同时生成加密密钥;其中实现的软件流分割器,将TS文件持续处理,不断更新web服务器缓存中的M3U8文件和ts文件。
在IP摄像头中,运行一个简单的web服务器,实现基本的HTTP协议和HTTPS协议。其中,不仅提供了M3U8和ts文件获取服务,还通过HTTPS服务提供加密密钥的获取服务。其中,HTTP服务还包含一个HTML页面,其中提供了供浏览器访问的页面,其主体部分可以采用支持HTML5 video规范完成,如下。该段代码将产生一个内嵌在网页内部的,640x480尺寸的窗口。
手机客户端通过HTTP可以请求到位于IP摄像头中的M3U8索引文件,并不断请求其中的密钥文件和ts文件,用密钥文件解密请求到的ts文件,解密后解码输出。苹果公司的手机操作系统iOS完全兼容HTTP直播流协议,可以通过Safari浏览器或客户端模式支持。
5 结论
基于HTTP流媒体协议,构建加密的直播流服务,可以满足音视频文件在互联网上安全传输的需求。而且HTTP协议不需要考虑穿透防火墙的问题,比传统的RTSP协议更加适合直播服务。由于HTTP直播流协议没有修改HTTP标准,只是在HTTP基础上进行了应用扩展,因此服务器分发系统的部署也非常简单,普通的web服务器都可以使用,应用成本和难度大幅度降低。
参考文献:
[1] 王志海,童新海,沈寒辉。 OpenSSL与网络信息安全――基础、结构和指令[M].北京:清华大学出版社,2007.
[2] 郑东,李祥学,黄征。密码学――密码算法与协议[M].北京:电子工业出版社,2009.
[3] (美)史蒂文斯。详解(卷3):TCP事务协议。HTTP和UNIX域协议[M].北京:人民邮电出版社,2010.
http协议范文2
WWW使用HTTP协议传输各种超文本页面和数据。HTTP是Hypertext Transfer Protocol的缩写,即超文本传输协议。 顾名思义,HTTP提供了访问超文本信息的功能,是WWW浏览器和WWW服务器之间的应用层通信协议。HTTP协议是用于分布式协作超文本信息系统的、通用的、面向对象的协议。通过扩展命令,它可用于类似的任务,如域名服务或分布式面向对象系统。
(来源:文章屋网
http协议3
>> 基于HTTP协议的无线AP远程配置实现方法 基于HTTP协议的服务器程序分析 浅析HTTP协议下的隧道技术 HTTP Tunnel在基于SIP协议的即时通信系统中的应用 如何实现无线AP的直接通讯 基于HTTP协议下自动更新平台的构建 基于多层协议理解的HTTP数据还原技术研究 基于零配置的瘦AP组网模式在X公司办公楼的应用与实现 基于H.323协议族技术标准远程监控系统的实现 基于Xilinx器件的CPRI协议实现方法 HTTP协议技术浅析 成套仪表远程无线通信协议的研究 基于位置信息的无线传感器网络路由协议的设计与实现 基于OpenWrt和TCP/IP协议的的Android远程无线智能机械弹琴手系统 基于ZigBee协议的无线键盘软件设计与实现 基于ZigBee的微气象无线监测系统通讯协议实现 基于ARM的无线传感器网络MAC协议设计与实现 基于DCS的无线数据传输控制协议设计与实现 基于协议无线网络的嵌入式远程测控系统研究 基于TTCN-3的HTTP测试适配器的设计与实现 常见问题解答 当前所在位置:l语句,可把该页面设为主页,通过访问服务器即可看到该页面。
修改服务器访问权限
启动服务器后,如果要在客户端通过html页面执行服务器命令是不被允许的,因为apache的客户端的权限不是根用户级别,而系统的网络命令(如ifconfig)须在根用户权限下才能执行。解决方法是使用sudo,即在非根用户的情况下执行根用户权限的命令。但使用sudo时需密码,而http服务器在远程控制时不可能每执行一个命令就输入一次密码,因此需要更改sudo配置文件/etc/sudoers,即可实现这一目的。
3 远程修改无线AP配置
CGI程序结构图
本文CGI程序的总体框架:如图3 。
用户登录模块
用户登录模块有效的防止了非法用户对AP进行恶意地修改。其实现方法如下:
http协议范文4
关键词:WEB服务;HTTP/HTTPS;数据传输;通道;安全性
中图分类号: 文献标识码:A 文章编号:1007-9599 (2012) 17-0000-02
网页服务是万维网上至为重要的应用之一。在网页设计中,http协议作为网页服务数据的传递通道,也成为网上最为重要的最常见的应用协议。由于网络的广泛普及和应用,有关的安全问题也越来越突出,在网络上,WEB站点经常成为黑客攻击的主要对象,这是由于网页开放性特征和易用型特征所导致的难以避免的结果。一些攻击者千方百计地进行表单篡改、命令插入等,王冶安全漏洞很多。研究报告指出,网页应用已经成为网络技术最大的安全焦点之一。因此,WEB应用的安全问题,已经成为网络技术安全的核心问题所在。当今社会,网络技术飞速发展,同时,随着网络技术的普及,网络电子商务、网络银行等方兴未艾,这些应用大幅度地拓展了网页应用的领域,因此,WEB服务的安全问题,也就更为突出。与此相关,作为传输通道的http协议,它的安全性要求,也就更为严格。我们设想,通过系统分析网页服务的安全问题,在介绍了HTTP协议的模型的基础上,针对HTTP协议存在的缺陷提出了改进HTTP协议的基本措施,为如何提高基于WEB服务数据传输通道的安全性提供可靠的理论依据。
1 WEB服务器存在的安全问题
服务器遭受入侵。网络黑客或其他攻击者往往直接通过网页漏洞或者一些人为的疏忽,进行攻击,比如远程溢出,SQL INJECTION,以及基于社会工程学等的手段,不择手段地入侵到WEB服务器内部。入侵的结果是WEB服务器不再安全,并孪生出许多问题,这种入侵性的攻击危害性最大,突出在于入侵者取得了大量用户的保密信息。
加密不具安全性。在网络上,很多WEB应用程序爱将敏感的保密性的信息,存储到网络数据库或者文件系统中,然后借助一般的加密技术来予以保护,诸不知这样的保密,安全性并不高。网络上常见的存储操作大体有如:关键数据不加密,证书、密码等存储不安全,秘密信息放在内存中。此外,还有算法选择不好,加密过程有疏漏等。甚至一些信用卡密码等,也放在内存中。
截取传输信息。网络攻击者常常在客户终端的支路、服务器的旁路等,通过一些特殊手段,如DNS SPOOF或者ARP SPOOF等,配合SNIFF过程,在中途截取或者篡秘密改客户端和服务器端之间的通信。这种攻击危险性也很大,如果让他们截取倒管理员登陆情况,就会私自登陆,进入服务器,直接入侵服务器,其后果相当严重。
针对客户端的攻击。一些黑客直接攻击客户端,采取的做法是,借助XSS漏洞来引起。在服务器把用户输入的数据没有做出严格的html标签过滤,就把它们直接保存到数据库,然后直接回显,这最容易熬出长久的XSS攻击。其结果也很严重,有可能直接导致客户端被重定向到恶意的网站去,或者被钓鱼,或者被植入木马等。
不接受服务。在网页应用中,一般比较难于分辨哪些是攻击行为,哪些是普通的访问,这主要是IP地址是共用的,这IP地址无法成为请求来源的判断的依据,也就是说,服务器无法判断出一个http的请求是从哪里来的,是善意的还是恶意的,也就无法过滤恶意访问行为。这样,服务器也就容易受到拒绝服务的攻击。这种服务器拒绝服务型的攻击,让WEB应用无法分辨哪是攻击行为,哪是多个用户的访问。攻击者通过大量的发送文字,或者直接发送严重消耗服务端的CPU资源的请求,如服务请求等,使得服务器力不胜支,最后服务端停止响应,这就让黑客达到了攻击的目的。
2 基于HTTP协议的工作模型及其缺陷
http协议的模型。一般地,WEB的服务是基于客户机/服务器模式的。WEB文档存放在服务器上,用户通过客户终端,借助浏览器对站点网页进行浏览。服务器和客户机的连接是依靠80端口连接的,当服务器和客户端连接之后,客户器和服务器就借助http协议来进行诉求和应答。HTTP协议的工作模式见图1:
图1 WEB应用工作模型显示了WEB应用服务的工作过程
HTTP协议存在的缺陷。应用极为广泛的http协议,还存在着不少的安全漏洞。主要是缺乏安全性检测,无法对数据传送和信息完整性进行检测。在网络技术应用中,数据的明文传送和信息完整性,特别成为网络技术应用所关注,例如电子商务、网络交易、在线支付等,就极需要明文传送数据,信息要完整等等。攻击者泽试图在数据传输过程中,分析和发行敏感的数据,例如管理员的登陆、支付密码的使用等,从而偷取密码,获得网站管理权限等。即使无法得到后台登陆信息数据,黑客也能从网页数据传输过程中,得到一般用户的隐私信息,包括手机号码、信用卡资料、工作证件号码、身份证号等,这就容易导致严重的安全事故。一些攻击行为,只要使用网络的任意的抓包工具,即使是新手,也都可能窃取大型网站的秘密信息。
特别是,http协议往往对内容是否被篡改,不做出确认,它只是在报文前部给出传输数据的长度而已,中央它在传输客户端的信息、请求和服务器响应的时候,就可以让攻击者轻易地得到重要数据。例如管理员的登陆过程、客户使用密码、网页交易支付等等。攻击者可以窃取管理权限,修改客户端的数据,甚至在传输数据中插入恶意代码,或植入木马等等,客户将遭受严重损失。而这些问题,http协议却感觉不出来,这最是让人难受的了。
这些缺陷,都是http协议在设计的时候,安全性被忽略所导致,也是因为设计上的问题,就使得这些漏洞无法从根本上解决。后来,NETSCAPE提出了HTTPS协议,使得数据传输获得进一步的安全保障。
3 借助HTTPS协议改进HTTP
http协议所存在的安全漏洞,必须解决,否则客户所受的攻击,防不胜防。Https之所以具有安全保障性,主要是https在TCP层和HTTP层之间,增加了一个SSL,这就在一定程度上加强了安全性。服务器在传输数据的时候,SSL进行加密和解密的工作,这就保证了数据的安全。https的做法是:
对身份认证从客户端和服务段双向进行。就是说,客户端和服务段都进行身份认证,在数据传输之前,通过X509证书认证双方身份。具体步骤是:
从客户端发起SSL结合的信息,请求服务端给以连接——服务端给客户端发送证书——客户端检查服务段证书并确认,如果不是由自己信任的证书机构签发的,就提醒客户,由客户决定选择是否继续通信,如果检查没有问题,或用户选择继续,则服务端的身份被客户端认可——客户端应要求向服务器发送证书,并检查是否通过。如果不通过,则关闭连接,通过泽获得客户端的公钥。
在身份认证过程中,服务端和客户端都对对方进行验证,这就保证了安全。
对数据传输过程予以加密。使用加密算法,在开始传输数据的时候,客户端和服务段协商,使用哪类算法。当客户端发送协商,请求服务端时,给服务端一自己支持的非对称的密钥交换算法(RSA),还有数据签名摘要算法(SHA或MDS等),加密传输数据的对称加密算法(DES),还包括加密密钥的长度。服务端在接收到这些信息之后,则选择自己认可的安全性最高的算法,然后反送给客户端自己所选中的算法,这样就完成了初期的协商。
接下来,客户端再生成随机的字符,通过协商好的加密算法,使用服务端的公钥,对这串字符进行加密,再发送给服务器。服务器接收到加密的字符串之后,再用自己的私钥来解密这些字符串。这一双边进行加密和解密的过程,就保证了数据的安全。尔后,在传输数据时,就使用这一加密的字符串作为密钥进行对称加密。
检验数据完整性。Https操作过程中,借助SSL,使用一种信息验证码,例如MD5,或者SHA-1算法等,以之来对所传输的数据进行签名,一般地,把验证码放在数据包的后部,并且把验证码和数据一起加密,这样在数据被篡改时,会由于HASH值的改变而被发现,进而有效处理。
防止重放攻击数据包。为了防止数据包被重放攻击,SSL使用序列号来保护通信方,这个序列号也要加密,并作为数据包的负载。在使用SSL来叩应对方时,那个唯一的随机字符作出标记,这就防止了黑客对客户登陆过程的窥探,以及在得到加密数据之后,不解密而直接重传登陆数据包来进行攻击。
经过这些作为,https已经大大提高了网络数据的安全性,其创造性在于,使用了非对称的加密算法,经过协商传递,保持了非对称加密的安全性和对称加密的快速度。
4 进一步加强https的安全性
基于http协议之上的https协议,使用了非对称加密的方式,传输对称加密使用的密钥,但是,如果SSL发起攻击并取得密钥,那么,整个数据传输的加密,也就没有什么意义。因此,必须在SSL之前,通过对称加密,提高所要传输的数据的安全性。同时,不传输这次先行加密的密钥,而只是保存到两端。这样,即使SSL的对称加密密钥被窃取,攻击者也无法截获明文信息。但这又有一个新的问题,即客户端如何部署,才能方便地在客户端实施这一传输前的数据加密工作。方法是,在客户端使用JS持续。JS代码存在于服务端,如果在客户端执行这一代码,就可以保证数据在SSL传输之前,进行自定义的加密。当然,JS代码容易被攻击者直接察看,故只能哦那个在安全需求不高的场合。而对于电子商务、网上交易、网银付款等,还得另找办法。实践证明,较好的选择是使用ACTIVEX或APPLET。可通过客户端控件,在数据输入之后,马上进行加密,然后借助https协议来传输数据信息/这样,即使中间人劫持了数据,解开了SSL加密层。看到的也只是无关紧要的数据,而重要的机密的数据则另置于ACTIVEX的加密保护下,这样就达到了保护机密数据的目的。
参考文献
[1]杨波,朱秋萍。WEB安全技术综述[J].计算机应用研究,:1-4.
[2]高鹏。构建安全的WEB站点[M].清华大学出版社,1999.
http协议范文5
关键词:自动升级;更新平台;网络更新
1 问题的提出
随着桌面应用程序新版本的不断,客户端运行的版本也越来越杂,版本、数据结构的兼容也成为后续开发必须考虑的问题,而且兼容性方面的问题越来越多,开发及维护成本越来越高。
2 问题的分析
随着因特网的普及,通过网络来实现桌面应用程序的更新升级已经成为可能。在程序中加入在线更新的功能将能有效地解决前面讨论的版本维护难题。
关于通信协议,可以编写程序实现Socket通信,也可以采用比较成熟的HTTP协议。考虑到诸多因素,笔者选择了HTTP协议。
3 HTTP协议特点
HTTP协议(超文本传输协议)的主要特点可概括如下:
(1)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。
(2)由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
(3)灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
(4)无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
(5)无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
另外,笔者在实验中发现很多网络都设置了防火墙,考虑到安全问题,网络管理员会屏蔽很多端口。而对于HTTP最常用的80端口通常是开放的,这也是笔者选择HTTP协议的一个重要因素。
4 数据流程及数据结构
实际应用中可以对流程进行扩展,例如自动程序线程定时启动、开始更新前检查上次留下的缓存、断点续传等。
该平台中有多个软件产品,存储在U_Products表中。每个软件产品有多个用于客户端验证的序列号,存储在U_Clients。序列号是客户端的凭证,只有授权了的序列号才能访问平台。而且序列号表还标出了该序列号允许升级的版本范围。同时,每个软件产品对应的多个文件,通过服务端脚本输出一个文件列表。客户端连接上服务器后首先要做的就是下载属于它的文件列表。
文件列表用于比较客户端文件与服务器上的各个文件的新旧。其中的时间戳是主要比较字段,文件名用于记录定位。
5 客户端工作流程
需要指出的是表1列出的是基本的流程。实际中客户端工作流程会比表1复杂的多。
主程序启动之后,创建自动升级程序的线程。该线程在后台运行,首先读出产品的序列号,通过URL参数传值的形式传到Web端。此处传值可以更加灵活,可以在用户允许的前提下,将更多的信息传给服务器。例如当前软件版本,客户端操作系统版本,客户端计算机硬件信息等等。
运行在Web端的脚本响应请求,判断序列号是否合法,即序列号是否正确,是否过期。通过之后输出与该序列号对应的软件的所有文件列表。
自动升级程序开始通过HTTP协议下载这个列表。下载完毕后读出上一次升级之后,保存下来的文件列表,并与下载下来的列表进行对比,通过时间戳对比找出新文件。通常只要时间戳不一样就将文件加入的需要下载的文件列表中,也可以采用时间戳转成浮点数后大小对比的策略。例如平台中放的是稳定的正式版,而有些客户端已经通过其他途径得到新版本更高的测试版。第二种策略就可以避免高版本文件通过升级之后版本降低。这也是为什么采用时间戳,而不是文件MD5唯一哈希值的原因。
得到新文件列表之后,再次通过HTTP协议逐一下载新文件到缓存目录中。下载新文件的URL由文件编号和序列号共同确定。每下载一个文件,更新一次本地的文件列表。这样如果出现网络中断,用户退出等异常,下次启动可以跳过已经下载过的文件。虽然这不是严格意义上的断点续传,但在一定程度上提高了程序的容错能力。
数据全部下载完毕之后询问用户是否立即应用更新。如果是则退出主程序,将缓存文件夹中的文件移动到主程序所在的目录中,并覆盖。否则保持缓存中的文件,供下次升级使用。
6 改进及结束语
网络状况很差的时候更新所需要的时间很长。对于该问题,可以对文件进行逐个ZIP压缩,通过HTTP协议传输压缩流,而不是文件本身的数据流。客户端下载之后进行解压缩。此处是对文件逐个压缩,而不是整体打包。因为整体打包之后会出现客户端只需要更新一个文件而不得不下载整个压缩包的情况。而且整体打包也对断点续传提出了更高的要求。
另外出于某种原因的考虑,有时需要更多考虑数据安全。例如未授权的序列号不能获得新版本的文件,且一个序列号只能对应一个客户端。对此可以采用动态序列号的方式,即下载完文件列表时或更新结束时,都将原有的序列号作废,动态创建一个新的值。
另外对于重大缺陷的修复更新,更希望能强制更新。对此可以在自动更新程序发现更新时,强制停止主程序的响应。通过这一策略甚至可以做到所有的新版本之后,客户端迅速跟进,并全部更新到最新版本。
笔者使用微软的C#语言来实现,经过反复测试,发现ZIP压缩之后,对网络要求低了很多,更新效率提高很多。通过动态序列号及强制更新策略也基本能保证客户端版本可控。
参考文献
[1]数据库系统导论[M].北京:机械工业出版社,2000.