websocket

12 篇文章 0 订阅
9 篇文章 0 订阅

websocket是什么

是一个应用层协议,主要用于服务器主动推送数据给浏览器(不仅仅局限于浏览器)。
如:浏览器请求登录csdn,csdn的服务器产生一个二维码信息给浏览器,浏览器显示二维码,通过微信扫描二维码,微信的服务器处理信息,然后去告知csdn的服务器哪个二维码被哪个微信扫描了,csdn服务器再主动发送用户相关数据给浏览器(csdn给浏览器发送消息是websocket在起作用),浏览器登录成功。

自定义协议

由tcp包本身的信息(如包的长度)和协议本身的信息(如版本号)组成

协议格式

1.建立连接的第一个数据包是符合http协议格式的(handshake),但是头信息里面多了两行:

Connect:Upgrade
Upgrade:websocket

2.websocket数据格式
在这里插入图片描述

如何验证客户端数据合法

1、握手过程:
客户端发送Sec-WebSocket-Key(在头里面)给服务器,有一个全局唯一固定的guid(值为:258EAFA5-E914-47DA-95CA-C5AB0DC85B11),将Sec-WebSocket-Key和guid拼接在一起(Sec-WebSocket-Key+guid),做sha1哈希编码,再进行base64编码,生成Sec-WebSocket-Accept返回给客户端

传输明文与密文

通过mask位控制,置1代表密文传输,置0代表明文传输
密文:
在头中有maksing-key占32个bit,定义一个int mask_key[4]取出来
在通过payload[i] = palyload[i] ^ mask_key[i%4];的方式加解密。

如何断开websocket

通过fin位控制,置0代表不断开,置1代表断开连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值