美文网首页后端汇总
websocket 协议剖析

websocket 协议剖析

作者: 杭州_mina | 来源:发表于2017-06-02 15:59 被阅读0次

    1、websocket小针数据传输的格式:

    • 1.1 websocket 发送"msg" 该字符长度不大于125长度通过 wireshark 抓包的显示16进制数据如下:
    image.png
      • 1.1.1
        81 二进制表示 1000 0001
        二进制第一位 1表示 当前数据没有被分片
        二进制第八位 1表示 文本消息片断
      • 1.1.2
        83 二进制表示 1000 0011
        二进制第一位 1表示 该数据包有掩码
        二进制剩余位数据 000 0011表示 包体的长度 如果转成10进制 就是 3
      • 1.1.3
        e4 b4 b5 c3表示 随机4个字节的掩码
      • 1.1.4
        89 c7 d2 表示掩码后的数据内容 也就是对 'msg' 字符进行掩码后的16进制数据

    2、websocket中针数据传输的格式:

    • 2.1 websocket 发送"111...." 该字符长度大于125 小于65536 长度通过 wireshark 抓包的显示16进制数据如下:
    image.png
      • 2.1.1
        81 二进制表示 1000 0001
        二进制第一位 1表示 当前数据没有被分片
        二进制第八位 1表示 文本消息片断
      • 2.1.2
        fe 二进制表示 1111 1110
        二进制第一位 1表示 该数据包有掩码
        二进制剩余位数据 111 1110表示 包体的长度 如果转成10进制 就是 126 如果长度为126 数据包后两个字节表示 包体长度
      • 2.1.3
        00 8c 表示 包体的长度 如果转成10进制 就是 140 实际上 发送了140个 字符为"1"的字符
      • 2.1.4
        69 77 68 06表示 随机4个字节的掩码
      • 2.1.5
        58 46 59 37...表示 掩码后的数据内容

    3、websocket大针数据传输的格式:

    • 3.1websocket 发送"111...." 该字符长度 大于65536 长度通过 wireshark 抓包的显示16进制数据如下:
    image.png
      • 3.1.1
        81 二进制表示 1000 0001
        二进制第一位 1表示 当前数据没有被分片
        二进制第八位 1表示 文本消息片断
      • 3.1.2
        ff 二进制表示 1111 1111
        二进制第一位 1表示 该数据包有掩码
        二进制剩余位数据 111 111表示 包体的长度 如果转成10进制 就是 127 如果长度为127 数据包后八位字节表示 包体长度
      • 3.1.3
        00 00 00 00 00 01 7e d0表示 包体的长度 如果转成10进制 就是 98000 实际上 发送了98000个 字符为"1"的字符
      • 3.1.4
        59 2a 90 c3表示 随机4个字节的掩码
      • 3.1.5
        68 1b a1 f5...表示 掩码后的数据内容

    4、websocket分片数据传输的格式: 【chrome浏览器在发送数据超过最大的tcp数据发送窗口(默认大小131072) 是会对消息进行分片 但是Safari 、ie 是不会 至于火狐是否会,我没有测试】:

    image.png
      • 4.1.1
        01二进制表示 0000 0001
        二进制第一位 0表示 当前数据已经分片
        二进制第八位 1表示 文本消息片断
      • 4.1.2
        ff 二进制表示 1111 1111
        二进制第一位 1表示 该数据包有掩码
        二进制剩余位数据 111 111表示 包体的长度 如果转成10进制 就是 127 如果长度为127 数据包后八位字节表示 包体长度
      • 5.1.3
        00 00 00 00 00 02 00 00 表示 包体的长度 如果转成10进制 就是 131072 实际上 发送了131072个 字符为"1"的字符
      • 5.1.4
        59 2a 90 c3表示 随机4个字节的掩码
      • 5.1.5
        bc f4 ea d0...表示 掩码后的数据内容
      • 5.1.6
        下图 就是数据包第二个分片 所以可以看出 websocket协议的分片数据包的格式 就是协议+内容1 协议+内容2 这样的格式
    image.png

    相关文章

      网友评论

        本文标题:websocket 协议剖析

        本文链接:https://www.haomeiwen.com/subject/kbdufxtx.html