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 编码作一个对比来验证
相关文章
相关标签/搜索