websocket
websocket是什么?
webscoket实际上就是一套类似于http的协议。
- http协议:\r\n分割、请求头和请求体用两个\r\n分割、是无状态,短连接的。
- websocket协议:\r\n分割、创建连接后不断开,创建连接时验证+数据加密
websocket本质:
- 就是一个创建后不断开的socket
- 建立连接:
客户端 ----(发送消息)-----> 服务端 带有“Sec-WebSocket-Key:iyRe1KMHi4S4QXzcoboM==”
服务端: 接受之后,会对该数据进行加密 base(sha1(swk+ magic_string))
构造相应头:
HTTP/1.1 101 Switching Protocols\r\n
Upgrade:websocket\r\n
Connection: Upgrade\r\n
Sec-WebSocket-Accept: 加密后的值\r\n
WebSocket-Location: ws://127.0.0.1:8002\r\n\r\n
发送客户端(浏览器)
- 建立之后:是一个双工通道,接下来就可以进行收发数据;每次发送的数据都是加密的
- 解密过程
根据payload_len的值进行收发数据
- 建立:双工通道,接下来就可以进行收发数据 - 发送的数据是加密,解密,根据payload_len的值进行处理: - payload_len <=125 - payload_len ==126 - payload_len ==127 - 获取内容: - mask_key - 数据 根据mask_key和数据进行位运算,就可以把值解析出来。