WebSocket 协议原理(抓包分析)

文章目录

  • WebSocket 协议原理抓包分析
      • 1.WebSocket 流程说明
      • 2.HTTP 建立 WebSocket 握手(HTTP 升级到 WebSocket)
        • 2.1 如何证明握手被服务器接受
        • 2.2 Sec-WebSocket-Accept 证明值构造规则
        • 2.3 抓包数据
      • 3.消息与数据帧说明
      • 4.WebSocket 协议格式
        • 4.1 WebSocket 协议的特点
        • 4.2 帧格式示意图
        • 4.3 帧类型
        • 4.4 MASK 掩码作用
        • 4.5 缓存污染攻击示意图
        • 4.6 ABNF 描述的帧格式
      • 5.如何保持会话心跳
        • 5.1 心跳帧
      • 6.如何关闭 WebSocket 会话
        • 6.1 关闭 WebSocket 会话
        • 6.2 关闭帧的格式
        • 6.3 关闭帧抓包
        • 6.4 关闭帧的错误码

WebSocket 协议原理抓包分析

这篇文章通过抓包分析 WebSocket 协议的细节,学习一下 WebSocket 执行流程。

1.WebSocket 流程说明

  • (1) 客户端和服务器之间完成三次握手建立 TCP 连接(TLS/SSL)握手。
  • (2) 客户端发起 HTTP 请求和服务器之间建立 WebSocket 握手。
  • (3)WebSocket 连接建立之后,双方通信是基于 TCP 连接的,此后不需要 HTTP 协议了。
  • (4) 完成 WebSocket 握手之后,就可以发送消息内容了。

2.HTTP 建立 WebSocket 握手(HTTP 升级到 WebSocket)

WebSocket 协议原理(抓包分析)_第1张图片

Tips:其中红色部分为必须,完成如上图所示过程即建立了 WebSocket 连接,Sec-WebSocket-Key: 5C2dTYo3LMpWd/H+Nix4HQ==\r\n 表示建立握手生成的随机串。

2.1 如何证明握手被服务器接受

从上图可以看到构建 WebSocket 握手的时候,发送了一个 Sec-WebSocket-Key

#请求中的 Sec-WebSocket-Key 随机数
Sec-WebSocket-Key:c3SkgVxVCDhVCp69PJFf3A==

#响应中的 Sec-WebSocket-Accept 证明值
Sec-WebSocket-Accept:YzgwZjRlZTcxMThiYTdjNDliYzAyNTdmZmNlN2E5MzBmYzNiYTQ0Mg==
2.2 Sec-WebSocket-Accept 证明值构造规则
  • GUID(RFC4122):258EAFA5-E914-47DA-9

你可能感兴趣的:(网络协议,websocket,http,网络协议,wireshark)