websocket协议实现

# websocket协议实现

1.抓包

wireshark规则: tcp.port == 9000

2. 结果解析

客户端请求:

GET /ws/test_2 HTTP/1.1
Host: localhost:9000
Connection: Upgrade
Upgrade: websocket
Origin: http://192.168***:9000
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: t55Td8j76+BHL9vRhPFXCQ==
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits

服务器响应:

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: 4rAk+P4vM9mrrpKOiDCDSYQpXPA=

释义:

  • Connection:Connection必须设置为Upgrade,表示客户端希望连接升级
  • Upgrade:Upgrade必须设置为WebSocket,表示在取得服务器响应之后,使用HTTP升级将HTTP协议转换(升级)为WebSocket协议。
  • Sec-WebSocket-key:随机字符串,用于验证协议是否为WebSocket协议而非HTTP协议
  • Sec-WebSocket-Version:表示使用WebSocket的哪一个版本。
  • Sec-WebSocket-Accept:根据Sec-WebSocket-Accept和特殊字符串计算。验证协议是否为WebSocket协议。
  • Sec-WebSocket-Location:与Host字段对应,表示请求WebSocket协议的地址。
  • HTTP/1.1 101 Switching Protocols:101状态码表示升级协议,在返回101状态码后,HTTP协议完成工作,转换为WebSocket协议。此时就可以进行全双工双向通信了。

猜你喜欢

转载自www.cnblogs.com/wodeboke-y/p/11600881.html
今日推荐