websocket協議握手

websocket是Html5 提供的一個瀏覽器與服務器間進行全雙工通信的網絡技術,依靠這種技術能夠實現客戶端和服務器端的長鏈接,雙向實時通訊。html

websocket是html5出的一個協議 跟http協議沒有關係 下面簡單介紹下websocket的協議以及握手html5

websocket跟http關係

websocket和http同樣都是基於tcp協議的傳輸 websocket和http是兩種不一樣的東西 客戶端要創建 websocket連接時候要在header標記一個Upgrade的HTTP請求表示請求升級 服務端返回響應101的狀態碼 完成握手之後再發送收據就麼有http的事了web

websocket協議

Websocket是一個持久化的協議 協議分爲ws(80端口)協議 和wss(443端口)協議瀏覽器

websocket握手

websocket是基於http協議 也能夠說借用了http完成了一部分握手bash

  • 客戶端發送的握手請求服務器

    GET  /chat HTTP/1.1
     Host: XXX.com
     Connection: Upgrade
     Upgrade: websocket
     Sec-WebSocket-Protocol: chat, superchat
     Sec-WebSocket-Version: 13
     Sec-WebSocket-key: XXXX
    複製代碼

    上面依次介紹下websocket

    1. GET /chat HTTP/1.1網絡

      能夠是是chat 聊天 也能夠game 遊戲socket

    2. Connection: Upgrade Upgrade: websockettcp

      這告訴服務器給升級到websocket協議

    3. Sec-WebSocket-Protocol: chat, superchat

      用戶自定義的字符串 在同一個url下 不一樣服務的所須要的協議 好比聊天chat 也能夠其餘的自定義

    4. Sec-WebSocket-Version 告訴服務器所使用的協議版本

    5. Sec-WebSocket-Key 是base64加密的字符串 瀏覽器自動生成

  • 服務端響應客戶端握手請求

    HTTP/1.1 101 Switching Protocols
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
    Sec-WebSocket-Protocol: chat
    複製代碼

    上面依次介紹下

    1. HTTP/1.1 101 Switching Protocols 就是返回101狀態碼
    2. Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk= 對Sec-WebSocket-key的加密 贊成握手創建連接 客戶端收到 Sec-WebSocket-Accept後 將本地的Sec-WebSocket-key 編碼作一個對比來驗證
相關文章
相關標籤/搜索