java websocket sha1_WebSocket协议探究(一)

一 复习和目标

1 复习

上一节使用wireshark抓包分析了WebSocket流量

包含连接的建立:HTTP协议升级WebSocket协议

使用建立完成的WebSocket协议发送数据

2 目标

协议对比

初始握手和计算响应键值

消息格式

关闭握手

注:WebSocket服务器使用《HTML5 WebSocket权威指南》3.4节中使用nodejs实现,WebSocket客户端使用Chrome浏览器实现。

二 协议对比

特性

TCP

HTTP

WebSocket

寻址

IP地址和端口

URL

URL

并发传输

全双工

半双工

全双工

内容

字节流

MIME消息

文本和二进制消息

消息定界

连接定向

注:

TCP传送字节流,消息定界由高层协议来表现。

WebSocket中,多字节的消息作为整体、按照顺序到达。.

三 初始握手

1 HTTP请求升级协议和协议升级成功响应

HTTP请求

GET ws://localhost:9999/echo HTTP/1.1

Host: localhost:9999

Connection: Upgrade

Upgrade: websocket

Sec-WebSocket-Version: 13

Sec-WebSocket-Key: UjxPJpGjxC4JH5+0znrYBg==

Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits

HTTP响应

HTTP/1.1 101 Web Socket Protocol Handshake

Upgrade: WebSocket

Connection: Upgrade

sec-websocket-accept: NTeDlW+9/P48+pMOtotMmM1m/J0=

注:响应不带Sec-WebSocket-Extensions代表该服务器不支持请求中的拓展

2 计算响应键值

(1)概述

响应中的sec-websocket-accept等于base64(sha1(请求中的Sec-WebSocket-Key + 258EAFA5-E914-47DA-95CA-C5AB0DC85B11))

(2)nodejs版本实现

var KEY_SUFFIX = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";

function(key){ <

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值