websocket協議實現

# websocket協議實現

1.抓包

wireshark規則: tcp.port == 9000web

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

服務器響應:websocket

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

釋義:socket

  • 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協議。此時就能夠進行全雙工雙向通訊了。
相關文章
相關標籤/搜索