websocket详解

Websocket详解

websocket草案版本

websocket主要有两种协议草案,一种是早期的draft-hixie-thewebsocketprotocol,另外一种是延用至现在的draft-ietf-hybi-thewebsocketprotocol。两种草案中又有各自对应的细化版本。详细可见
https://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-00
https://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-00
下图展示的主要使用的版本
这里写图片描述
- [ ] 注:草案7显示的版本号(Sec-WebSocket-Version)为7,草案8到草案12版本号都是8,草案13至文档编写时的草案版本(RFC 6455)显示为13

websocket草案版本演进及实例讲解

  1. 基于Flash的WebSocket通讯,使用场景是IE的多数版本,因为IE的多数版本不都不支持WebSocket协议,以及FF、CHROME等浏览器的低版本,还没有原生的支持WebSocket,可以使用FLASH的WebSocket实现进行通讯。参见hixie75草案(draft)

浏览器请求:
这里写图片描述

服务器响应:
这里写图片描述

原理:
如果客户端没有发送Origin请求头,则客户端不需要返回,如果客户端没有发送WebSocket-Protocol请求头,服务端也不需要返回;服务端唯一需要组装返回给客户端做为校验的就是WebSocket-Location请求头,拼装一个websocket请求的地址就可以了。
这种方式,是最老的一种方式,连一个安全Key都没有,服务端也没有对客户的请求做加密性校验。
2. 第二种握手方式是带两个安全key请求头的,结果以md5加密,并放在body中返回的方式。参见hixie76草案(draft)
请求响应:
这里写图片描述
原理:
以下面的key为例:
Sec-WebSocket-Key1: 2907uU7Df`nw”3] c 360\ 2 c
Sec-WebSocket-Key2: B3v2{ 40535 J,n0X/0:4u e

首先,我们把Sec-WebSocket-Key1和Sec-WebSocket-Key2中的所有数字从左到右提出来组成一个整数,那么上面的示例可以组成2907733602和 3240535004两个数。
接下来我们去数两个串各自的空格数,数出来分别为6和4
然后

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值