您的当前位置:首页正文

HTML5 WebSocket技术研究

2023-10-17 来源:步旅网
……………………….探索 婴褰一 J HTML5 WebSocket技术研究 天地(常州)自动化股份有限公司 韩安 【摘要】本文在比较传统的实时web通讯技术与研究HTML5WebSockct技术基础上,通过研究websocket技术在实时wEB通讯中的应用,体现WebSocket在B/S模式中的应 用优势与价值。 【关键词】HTM1.5;WebSocket;握手;长轮询;实时Web;网络应用服务 1.前言 [16-byte hash response] 其中Sec-WebSocket-Keyl,Sec-WebSocket— based rich internet appl ication,RIA),如 经受 ̄UFirefox 4、Chrome 4、Opera 10.70以 Key2和[8-byte security key]这几个头信息是 Adobe Flash、Microsoft Silverlight与Oracle 及Safari 5等浏览器的支持,在给定的时间范 WebSocket ̄务器用来生成应答信息的来源, JavaFX的需求,并且提供更多能有效增强网 围内的任意时刻,相互推送信息。 服务器基于以下的算法来产生正确的应答信 络应用的标准集。而有“Web的TCP”支撑的 HIlIL5 Web Sockets从一个web客户端连接 息: 作为下一代的web标准,HTML5拥有许多引 人注目的新特性,如Canvas、本地存储、多媒 体编程接口、WebSocket等,有两大特点:首 先,强化Web网页的表现性能。其次,追加本 地数据库等Web应用的功能。包括HTML、CSS和 JavaScript在内的一套技术组合,减少浏览器 对于需要插件的丰富性网络应用服务(p1ug_iIr 连接用来处理服务器端到客户端的数据传输, 增加编程实现的复杂度,同时增加了服务器端 的负载,制约了应用系统的扩展性。 3.HTML 5 WebSocket概念及规范 WebSocket API是下一代客户端一服务器的 异步通信方法。取代了单个的TCP套接字,使 用WS或WSS协议,在任意的客户端和服务器程 序通讯。WebSocket目前由W3C进行标准化,已 Handshake Upgrade:WebSocket Connection:Upgrade WebSocket-Origin:http://example.tom WebSocket-Location:ws://example.com/ demo WebSocket在打破了现有的WEB网络通讯编程模 式,WebSocket使得浏览器提供对Socket的支 持成为可能,在浏览器和服务器之间提供了一 个基于TCP连接的双向通道,使得开发人员可 以方便构建实时Web应用。 2.传统实时wEB的通讯技术 传统的Web应用的信息交互过程是客户端 通过浏览器发出一个请求(Request),服务器 端接收和审核完请求后进行处理(Response)并 返回结果给客户端,然后客户端浏览器将信息 呈现出来,这种机制对于信息变化不是特别频 繁的应用尚能相安无事,但对于那些实时要求 比较高的应用来说,当客户端浏览器准备呈现 服务器返回的数据信息时,信息有可能已经过 时了。保持客户端和服务器端的信息同步是 实时Web应用的关键要素。在WebSocket规范出 来之前,开发人员想实现实时Web应用,只能 采用如轮询(Polling)或Comet技术方案,而 Comet ̄是轮询技术的改进,长轮询机制与流 技术。 轮询:客户端以一定的时间间隔向服务端 发出请求,以频繁请求的方式来保持客户端和 服务器端的同步。问题在于:当客户端以固定 频率向服务器发起请求的时候,服务器端的数 据可能并没有更新,造成无谓的网络传输,属 于低效的实时方案。 到一个远程端点,需要创建WebSocket实例并 a)逐个字符读取Sec—websocket—Keyl头 为之提供一个URL来表示想要连接到的远程端 信息中的值,将数值型字符连接到一起放到一 点。该规范定义了WS://以及WSS://模式来分 个临时字符串里,同时统计所有空格的数量; ~k一 别表示WebSocket和安全WebSocket连接。一个 b)将在第1步里生成的数字字符串转换成 WebSocket连接是在客户端与服务器之间HTTP 个整型数字,然后除以第1步里统计出来的 协议的初始握手阶段将其升级到web Socket协 空格数量,将得到的浮点数转换成整数型r 议来建立的,其底层仍是TcP/IP连接。 c)将第2步里生成的整型值转换为符合网 络传输的网络字节数组; d)对Sec-WebSocket—Key2头信息同样进 行第l到第3步的操作,得到另外一个网络字节 一画 数组; 图1 WebSocket URL地址结构图 其中: WS:表示mⅦ,5 WEB Sockets协议; Host:表示服务器的地址; Port:表示待链接的端口; WebSocket Server:表示Server请求资源 地址。 Web Sockets使用HTTP Upgrade机制升级  ̄UWeb Socket协议,同时兼容HTTP的握手机 制,因此HTTPfl ̄务器可以与WebSocket ̄务器 共享默认的HTTP与HTTPS端(80和443)。要建 立一个WebSocket连接,客户端和服务器在初 次握手的时候从HTTP协议提升到web Socket 协议。客户端浏览器首先要向服务器发起一 个HTTP请求,这个请求和通常的HTTP请求不 e)将[8一byte security key]和在第3, 第4步里生成的网络字节数组合并成一个16字 节的数组; f)对第5步生成的字节数组使用MD5算法 生成一个哈希值,这个哈希值就作为安全密钥 返回给客户端,以表明服务器端获取了客户端 的请求,同意创建webSocket连接。 服务端将生成的网络字节数组和客户端 提交的头信息里的[8-byte security key] 合并成一个l6位字节数组并用MD5算法加 密,然后将生成的安全密钥作为应答信息 返回给客户端,由此建立双方的WebSocekt 连接通道,实现WebSocket握手信息的处理 逻辑。WebS0Cket服务器由两个核心类构 成,一个是WebSocketServer,另外一个是 SocketConnection。 长轮询:长轮询是对定时轮询的改进和提 高,目地是降低无效的网络传输。当服务器端 没有数据更新时,连接会保持一段时间周期直 到数据或状态改变或者时间过期,通过这种机 制来减少无效的客户端和服务器间的交互。当 服务端数据变更非常频繁时,就和定时轮询没 有本质上性能提高。 流;通常在客户端的页面使用一个隐藏 的窗口向服务端发出一个长连接的请求。服务 器端接到这个请求后作出回应并不断更新连接 状态以保证客户端和服务器端的连接不过期。 将服务器端的信息不断推向客户端。但需要针 对不同的浏览器设计不同的方案来改进用户体 验,同时在并发比较大的情况下,对服务器端 的资源是一个极大的考验。 以上方案只是利用Ajax方式来模拟实时 的效果,每次交互都是HTTP的请求和应答的过 程,每次都带有一套完整的HTTP头信息,增加 了传输的数据量,在实际的应用中,为了模拟 真实的实时效果,需要构造两个HTTP连接来模 拟客户端和服务器之间的双向通讯,一个连接 用来处理客户端到服务器端的数据传输,一个 同,包含了一些附加头信息,其中附加头信 息”Upgrade:WebSocket”,表明是一个申请 实际的开发过程中,为构建Web应用,首 协议升级的HTTP请求,服务器端解析附加的头 先需要构建WebSocket规范的服务器,服务器 信息,产生应答信息返回给客户端,由此客户 端的实现不受平台和开发语言的限制,只需要 端和服务器端的WebSocket建立成功,然后通 遵 ̄,WebSocket规范即可。 过链接通道自由传递信息,并且持续到客户端 如果使用的是一个未加密的WebSocket 或者服务器端的单方主动关闭连接。连接建立 连接(WS://),在透明的代理服务器情况 后,WebSocket数据帧以全双工的模式在客户 下,浏览器是不知道代理服务器的,所以不 端和服务器之间来回传输。 会发送}rrTP CONNECT方法。如使用的是加密的 典型WebSocket请求与响应例子如下: WebSocket安全连接(wss://),那么在透明 清单1.WebSocket握手协议 代理服务器下,浏览器不知道代理服务器,所 客户端到服务端: 以不会发出HTTPCONNECT方法。然而,因为线 GET/demo肿P,1.1 上信息是加密的,中间透明代理服务器会简单 Host:example.com Connection:Upgrade Sec-WebSocket-Key2:12998 5 Y3 1.PO0 Upgrade:WebSocket 的让加密信息通过,因此就增加了使用加密的 WebSocket连接的成功率。 HTYL5 WebSocket目的是取代轮询和Comet 技术,使客户端浏览器具备像c/s架构下桌面 系统的实时通讯能力。浏览器通过JavaScript Sec-WebSocket-Keyl:4@l 46546xW%01 1 5 rigin:http:O//example.tom 向服务器发出建立WebSocket连接的请求,连 接建立以后,客户端和服务器端就可以通过 服务端到客户端: T ̄2连接直接交换数据。因 ̄WebSocket连接本 HTTP/1.1 1O1 WebSocket Protocol 质上就是一个TCP连接,所以在数据传输的稳 [8-byte security key] _皂子tI ● 一5一 I .握 察………………………. 基于PIG的匿名数字证书系统的研究 辽宁商贸职业学院王兵 【摘要】在网络通信中数字证书用来验证证书持有者的真实身份,但根据)L509标准,数字证书的主体名域中会标有证书持有者的真实名称,这就造成用户的真实身份信息的 泄露。本文提出一个在现行的pⅪ体系中发布匿名数字证书的方案,并依据此方案构建了一个匿名数字证书系统。 【关键词】PKI;匿名数字证书;匿名数字证书系统 目前在Internet上广泛使用基于公共密钥 的身份认证机制,公钥基础设施PKI(Public Key Infrastructure)就是通过使用公开密钥技术和 数字证书来确保系统信息安全并负责验证数字 证书持有者身份的一种体系。在PKI中所有安全 操作都是通过数字证书实现的,但基于X.509标 准,数字证书的主体名域中会标有证书持有者 的真实名称等个人信息,这就造成了用户个人 身份信息的泄露。因此,这种实名数字证书就 不能用在保护个人隐私的匿名服务中,如电子 投票、电子选举、匿名通信,所以,关于匿名 证书的发布成为近几年研究的热点,本文提出 种匿名数字证书发布方案,并在现有的PKI系 统中构建了一个匿名数字证书系统。 一表1方案中使用的主要符号 要符号见表l。 1.匿名证书的发布 (1)cA通过安全信道为用户u发布一个实名 证书Cert,此时CA已经确认用户的真实身份, 并把实名证书存储在cA库中。 (2)用户u设置匿名 ,并产生匿名密钥对 <APUu,APRu>。用户通过选择一个128位的随机 数P来计算匿名证书的序列号S ̄H(APUu, )。 用户构建一个 509匿名证书的头音 为:<s , PN APR ,>,这个匿名证书的内容M为:<b, Cert>。随后,用户计算h=H(M)。最后,用户计 算u=h・r ̄modN,这里r在{0,1)之间随机选择 (k=128),计算后把u的值以及用户用自己的私 钥签名的信息【 给BI。 (3)当BI收到信息后,BI通过用户的公 钥验证签名,确定用户的身份。然后BI计算 w=ud'modN,再把信息<Ee(u):ID>存储在BI库中, 其中ID l,为实名证书中用户的主体唯一标识。BI 并提供相关个人信息。 (2)PCA根据匿名证书的序列号通过匿名证 书追踪功能追踪到用户的I ,。 (3)PCA把用户的撤销申请连同用户的身份 I 发送给cA。 (4)cA根据用户的I DI 在CA库中检索出用户 的实名证书,核准用户信息后,批准撤销,把 实名证书放入CRL中,并给PcA发送应答信息。 (5)PcA对匿名证书进行撤销,把匿名证书 放入c础.中,并把执行结果发送给用户。 3.方案的应用 在实际的应用中,很多网上活动都可以使 用本方案中发布的匿名数字证书,特别是需要 保护用户的隐私又要能够证实用户身份的应用 中。在具体的实现方面,可以采用以下两种情 况: (1)PCA域由AI和BI构成,而AI和BI可以分 别由CA授权的实体来担任。例如,一个站点(或 计算E (W),并把这个值返回给用户U。 者由站点授权的cA)可以成为AI,而BI可以是法  (4)当用户接到信息 (w)后,用户计算sig^甩, 院,银行,行事机关或其它政府代理机构。∞,并把信息<sig .∞,r, (W)>发送给AI。 (5)当AI收到这个信息后,AI先验证sig嘛∞ 是否是合法有效的。然后,AI计算Z--Wd2El0dN。 AI验证Z・r-lmodN能否被<M,e,N>证明。最 后,AI把信息<SNu:Ee(z)>存储在AI库中,然后 把z返回给u。用户计算Z・r- modN的值,则用户 可以得到<M,h ̄odN>作为一个可以追踪的匿名 证书,其中M为匿名证书,h‰dN为PcA给证书的 签名 2.匿名证书的撤销 当发现匿名证书被滥用、私钥泄露或者证 书过期时就需要对匿名证书进行撤销,由于本 方案中的匿名证书是在用户已获得实名证书的 基础上由实名证书构造而成的,所以匿名证书 的撤销就必须分两步:撤销实名证书和撤销匿 名证书,按照以下步骤就可以撤销匿名证书。 (1)用户向PCA提出匿名证书的撤销请求, } 方案的描述 匿名证书发布方案中共有四个实体,分别 是用户、cA、AI和BI,其中AI和BI组成匿名证 书域PCA。CA、AI和B1分别拥有自己的数据库, 用来存储追踪匿名证书时所用的加密信息。 PcA、AI和BI均由cA授权的机构来担任,并且分 别拥有cA发布的数字证书。方案中使用RSA算 法,定义AI和BI共享相同的公钥参数<e,N>。 对于PCA的RSA私钥d,为了产生各自的证书,把 它分成两部份,这样AI和BI各自的私钥分别是 d ,d ,在这里有d=d,d2mod ̄(N)。用户至少应 该知道三个公钥,PCA,AI和BI的公钥,方案的 假设条件是AI和BI不能串通。方案中使用的主 一、(2)这个方案最大的特点是允许在现有PKI 体系中使用,在这种情况下,不需要对现行的 PKI体系作任何修改就可以实现本方案,此时, PCA域就由cA和RA来构成,AI就可以由CA来担 任,BI可以由RA来担任,则获得匿名证书的过 程如下: ①用户向RA申请实名证书,填写证书申请 表。 ②RA对用户的身份进行审核,审核通过后 向cA提交证书申请请求。 ③cA生成用户实名证书,并把证书返回给 RA。 ④RA将实名证书发放给用户。 ⑤用户根据实名证书构造匿名证书,并对 其哈希值盲化后发送给RA。 ⑥RA对盲化后的匿名证书签名,把签名值 给用户。 定性和数据传输量的大小方面,和轮询以及 Comet技术比较,具有很大的性能优势。 function unClose(evt){ console.1og( Disconnected ): 4.WebSooket davaSor ipt接口定义 针) ̄WebSocket JavaScript客户端接口定 ) 义相对比较简单: function onMessage(evt){ 清单2.建立WebSocket连接的实例 console.1og(’Retrieved data from server:’+evtdata): JavaScript代码: var wsServer=’WS://example. ) com:8080/Demo’: function onError(evt){ var websocket:new WebSocket console.1og(’Error occured:’+ (wsServer): evt.data); websocket.onopen=function(evt){ ) onOpen(evt)): 其中URL属性代表WebSocketJ] ̄务器的网 websocket.onclose=function(evt){ 络地址,协议通常是“ws”,send方法就是 发送数据到服务器端,close方法就是关闭连 onClose(evt)}: websocket.onmessage=function(evt)( 接。除了这些方法,还有一些很重要的事件: onOpen,onMessage,onError以及onClose。 onMessage(evt)}: websocket.onerror=function(evt){ 5.WebSocket应用场景 onError(evt)}: 5.1初始数据前台展示 function onOpen(evt){ 初始数据通过后台的数据推送方法到客户 端,客户端可以在回调函数中收到信息,通过 cc ̄sole.1og("Comected to WebSocket s ̄Tver. ): HTML5组件来展示这些信息。 .一5.2后台推送信息,前台实时更新 增加后台推送信息代码,在后台起一个定 时器,定时推送产生消息或者清除信息,并将 信息推送给所有的客户端。 5.3客户端拖拽节点,同步到其他客户端 增加拖拽同步,监听网内所有信息点,将 节点位置信息发送给后台,后台接收到节点位 置信息后,更新后台数据,然后将消息转发给 其他客户端,实现信息同步操作。 6.WebSooket应用展望 WebSocket作为一个正在演变中的Web规 范,目前用WebSocket构建应用程序可能存在 些风险。WebSocket规范和API存在变动的可 能,尽管目前存在一些局限性,但WebSocket 将会成为未来开发实时Web应用的生力军。 一基金项目:2012年度江苏省工业和信息产业转型审计 专项引导资金项目(zO65)。 作者简介:韩安(19B2一),男,陕西泾阳人,助理 研宛员,从事煤炭行业管理信患化系统的研究。 6一 电子曲}一 

因篇幅问题不能全部显示,请点此查看更多更全内容