websocket 协议剖析

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容