WebSocket握手协议

WebSocket握手协议
webstocket是html5的一种新的协议,它实现了浏览器与服务器的双向通道,
使得数据可以快速的双向传播

通过一次简单的握手,建立了客户端和服务器的联系后,服务器可以主动推送信息给客户端,
而不需要客户端的反复请求

一个websocket连接是客户端与服务器端在http协议的初始握手阶段将其升级到websocket协议来建立的。
其底层还是tcp/ip连接

优点:
1.客户端和服务器端之间数据交流的表头比较小。大概2个字节
2.服务器和客户端可以主动的发送数据给对方
3.不需要有频率的创建TCP请求和销毁,节约宽带和服务器的资源

websocket    7.5、7.6、10版本的响应原理
7.5、7.6

GET /demo HTTP/1.1 Host: example.com Connection: Upgrade Sec-WebSocket-Key2: 12998 5 Y3 1 .P00 Sec-WebSocket-Protocol: sample Upgrade: WebSocket Sec-WebSocket-Key1: 4 @1 46546xW%0l 1 5 Origin: http://example.com ^n:ds[4U

HTTP/1.1 101 WebSocket Protocol Handshake Upgrade: WebSocket Connection: Upgrade Sec-WebSocket-Origin: http://example.com Sec-WebSocket-Location: ws://example.com/demo Sec-WebSocket-Protocol: sample 8jKSy:G*Co,Wxa-


服务器响应的方法:
   Sec-WebSocket-Key2的数字除以key中的空格数 结果为一个整数 12998531/6
将结果转成符合网络传输的网络字节数组;(每2字节作为ascii码转换成字符逆序组成p1)
Sec-WebSocket-Key1的数字除以key中的空格数 结果为一个整数 4146540115/6
将结果转成符合网络传输的网络字节数组;(每2字节作为ascii码转换成字符逆序组成p1)
然后把结果与请求最后的8个随机字符连在一起str
服务器的回答就是MD5(str)生成一个哈希值作为一个安全密钥


10

GET /ls HTTP/1.1 Upgrade: websocket Connection: Upgrade Host: www.xx.com Sec-WebSocket-Origin: http://www.xx.com Sec-WebSocket-Key: 2SCVXUeP9cTjV+0mWB8J6A== Sec-WebSocket-Version: 8

HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: mLDKNeBNWz6T9SxU+o0Fy/HgeSw=

服务器的响应方法
获取Sec-WebSocket-Key,把一段GUID“258EAFA5-E914-47DA-95CA-C5AB0DC85B11”加到Sec-WebSocket-Key的后面
然后拿出这个字符串做sha1 hash()计算 然后在通过base64()加密反给客户端


Web Socket 可以穿越防火墙
websocket使用标准的80和443端口,这两个端口都是防火墙的友好端口所以不需要防火墙的允许。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值