文章目录
WebSocket 协议原理抓包分析
这篇文章通过抓包分析 WebSocket
协议的细节,学习一下 WebSocket
执行流程。
1.WebSocket 流程说明
- (1) 客户端和服务器之间完成三次握手建立
TCP
连接(TLS/SSL)握手。 - (2) 客户端发起
HTTP
请求和服务器之间建立WebSocket
握手。 - (3)
WebSocket
连接建立之后,双方通信是基于TCP
连接的,此后不需要HTTP
协议了。 - (4) 完成
WebSocket
握手之后,就可以发送消息内容了。
2.HTTP 建立 WebSocket 握手(HTTP 升级到 WebSocket)
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