JS逆向——Websocket

一、websocket是什么?
websocket 是一种建立在单个TCP连接上进行全双工通信的网络协议(即为ws或wss)。ws和 http 协议可以说是兄弟的关系,但是这个兄弟有点依赖 http ,因为ws协议利用了http 的三次握手的通信连接。所以,我们会先用 HTTP 先进行三次握手,再向服务器请求升级为websocket 协议。

二、websocket 的功能

我们都知道Http协议是靠三次握手、四次挥手 的方式来建立和关闭连接的,而且支持长连接和短连接两种连接方式,同时还有同源策略(Same origin policy)的限制(在web开发中算是经常遇到的问题),重要的是,它只支持单向通信(只能由任意一方发起请求,另一方发起响应)

简单的说,电影里面警察之间进行通话的呼叫机就相当于http,只能一方说完说后,对方才能收到消息,才能回复一条消息给对方;而ws就不是这样,ws就相当于我们平时的打电话,我们并不是只能说完话后对方才能说话,而是打电话的双方都可以随时说话,也可以随时听到对方的消息

那么放在网络中,二者有一个明显的区别就是同源策略的区别,这种同源策略会导致请求的一方在不同的端口、不同的域名、不同的协议的情况下发起的请求会有限制,这就需要进行跨源访问了,比如ajax跨域,cors跨域等等。但是ws就没有这种限制,它支持任何域名或者端口的访问(协议固定了只能是 ws/wss)。

总的来说,http具有的功能,ws也有,http没有的功能,ws还有。

三、案例

具体来说,ws请求头中,会有区别于http协议的几个字段,如图:

 Sec-WebSocket-Extensions:客户端通过该请求头字段进行请求扩展,请求头字段遵守 HTTP 的规则,它的值是通过 ABNF 定义的。如果我们客户端或者服务端在协商扩展收到了一个没有符合下面的 ABNF 规则的值,接收到错误的数据的这一方需要立刻让ws关闭连接

Sec-WebSocket-Key:是一个基于Base64格式编码的值,是浏览器随机生成的,没有太大的作用

Sec-WebSocket-Vision:是ws协议的版本号

四、文本格式

        json  xml  纯文本

        自定义格式

        字节码格式,比如protobuf、TLV

五、标志

        一般会先new一个ws变量,然后里面必然会有以下标志:

        Socket.onopen:连接建立时触发

        Socket.onmessage:客户端接收服务端数据时触发

        Socket.onsend():使用连接发送数据

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Crazy ProMonkey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值