【学习笔记】websocket数据帧

news2024/11/16 11:36:00

介绍

RFC官网给出的数据帧格式
file

字段解释

  • FIN(1bit): 标记位,表示该数据帧是否为完整消息最后的数据帧。
  • RSV1/2/3(各1bit): 标记位,根据RFC的介绍,这三个bit位是用做扩展用途,没有这个需求的话设置为0。
  • opcode(4bit): 表示该数据帧的操作类型,后面会具体介绍。
  • MASK(1bit): 标记位,标记是否使用掩码,和Masking-key配合使用,按照规定,服务端无需使用掩码,客户端必须使用掩码。
  • Payload len(7bit): 表示Payload(消息体)部分内容长度,因为是无符号整形表达,所以表示范围为0 - 127。
  • Extended payload len: 根据Payload len的值判断是否开启扩展,如果Payload len值等于126,则Extended payload len位数为16;如果Payload len值等于127,Extended payload len的位数为64。
  • Masking-key(32bit): 如果MASK标记为1则启用该字段,字段的值用来解码客户端发送给服务端的数据帧。
  • Payload Data: 消息体内容

opcode

参考IPV4首部Protocal字段

file

Protocal字段定义了一些功能,比如说用来ping地址的ICMP包就是通过定义IPV4首部中Protocal进行收发IP数据包实现的。

同理,WebSocket中的opcode字段也是定义了WebSocket帧的功能,下面列出部分值:

  • 0x0 denotes a continuation frame 标示当前数据帧为分片的数据帧,也就是当一个消息需要分成多个数据帧来传送的时候,需要将opcode设置位0x0。
  • 0x1 denotes a text frame 标示当前数据帧传递的内容是文本
  • 0x2 denotes a binary frame 标示当前数据帧传递的是二进制内容,不要转换成字符串
  • 0x8 denotes a connection close 标示请求关闭连接
  • 0x9 denotes a ping 标示Ping请求
  • 0xA denotes a pong 标示Pong数据包,当收到Ping请求时自动给回一个Pong

参考资料

小林coding——图解网络
RFC 6445

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/438807.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

rslidar_SDK二次开发

rslidar_SDK代码二开注意事项 文章目录 rslidar_SDK代码二开注意事项0.下载地址1.CMakeLists.txt1.1 Cmake里面,首先选择编译方式,原始ORIGINAL还是CATKIN,还是COLCON1.2 增加新增cpp文件位置1.3 如果选择ORIGINAL模式,需要额外增…

LabView中数组的使用2-1

在LabView中,数组用来管理相同类型的数据。 1 在前面板中创建数组 1.1 创建空数组 在前面板中创建数组时,首先在前面板中点击鼠标右键,弹出“控件”对话框,之后选择“新式->数组、矩阵与簇->数组”,在前面板中…

硬盘格式化工具,强烈推荐这个!

案例:硬盘格式化工具推荐 【我的电脑已经用了好几年了,硬盘存储容量严重不够了,最近想把它格式化,但却不知道怎么操作,大家有什么比较好的硬盘格式化工具可以推荐吗?】 硬盘作为存储设备,我们…

薄膜热电化学电池性能测试中的半导体制冷片高精度度温度控制解决方案

摘要:电化学热电池(electrochemical thermcells)作为用于低品质热源的热电转换技术,是目前可穿戴电子产品的研究热点之一,使用中要求具有一定的温差环境。电化学热电池相应的性能测试就对温度和温差形成提出很高要求&a…

11、HOOK原理上

一、HOOK 1.1 HOOK简介 HOOK,中文译为“挂钩”或“钩子”.在iOS逆向中是指改变程序运行流程的一种技术.通过hook可以让别人的程序执行自己所写的代码. 在逆向中经常使用这种技术重点要了解其原理,这样能够对恶意代码进行有效的防护. 1.2 Hook的应用场景 描述一个HOOK实用技…

由表及里的解读数据仓库

数据仓库作为商业智能BI系统中的一部分,已经成长为了企业信息化建设中必不可少的重要支撑,在可见的未来,数据仓库还会随着信息化、数字化技术、理念、应用的落地,继续成长。 数据仓库是一个面向主题的、集成的、随时间变化但信息…

jd侧边栏以及模态框样式设置

点击图像出现模态框&#xff0c;点击按钮叉叉模态框消失 html css样式&#xff1a; <style> * { padding: 0; margin: 0; } html, body { height: 100%; width: 100%; } li { list-style: none; } .box { position: fixed; bottom: 120px; right: -10px; width: 200px; }…

看完这篇 HTTPS,和面试官扯皮就没问题了

看完这篇 HTTPS&#xff0c;和面试官扯皮就没问题了 下面我们来一起学习一下 HTTPS &#xff0c;首先问你一个问题&#xff0c;为什么有了 HTTP 之后&#xff0c;还需要有 HTTPS &#xff1f;我突然有个想法&#xff0c;为什么我们面试的时候需要回答标准答案呢&#xff1f;为什…

零成本教你部署一个ChatGPT网站

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是阿牛&#xff0c;全栈领域优质创作者。&#x1f61c;&#x1f4dd; 个人主页&#xff1a;馆主阿牛&#x1f525;&#x1f389; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4d…

BPMN绘制流程的项目推荐

项目简介 Vite Vue Bpmn流程编辑器&#xff0c;基于Bpmn.js&#xff0c; Vite&#xff0c; Vue.js 3.x, Naiveui 实现了 Bpmn.js 和 Diagram.js 的 typescript 类型声明&#xff0c;typescript 可以用来在编辑器中编写代码。 整合项目地址&#xff1a; https://github.com/m…

【JavaScript】4.JavaScript对象

JavaScript 对象 1. 对象 在 JavaScript 中&#xff0c;对象是一组无序的相关属性和方法的集合&#xff0c;所有的事物都是对象&#xff0c;例如字符串、数值、数组、函数等 对象是由属性和方法组成的。 属性&#xff1a;事物的特征&#xff0c;在对象中用属性来表示&#x…

浅谈兼容性测试

兼容性测试的概念 兼容性测试是一种软件测试&#xff0c;用于确保构建的系统/应用程序/网站与其他各种对象&#xff08;如其他网络浏览器、硬件平台、用户、操作系统等&#xff09;的兼容性。这种类型的测试有助于了解产品在特定环境中的表现。 为了方便理解&#xff0c;可以…

java String 和ArrayList转换 换化

[Ljava.lang.String; cannot be cast to java.util.List 原因&#xff1a; Map<String, Object> parameters (Map<String, Object>) jsonResult.getData(); parameters 参数中refrenceIds 是个string &#xff08;比如&#xff1a;"refrenceIds": [&…

媒体查询神器:掌握 CSS3 变革性技术

媒体查询是 CSS3 中的一项重要功能&#xff0c;它使得我们可以针对不同设备和屏幕尺寸应用不同的样式。本文将深入介绍媒体查询的使用方法&#xff0c;以及如何利用媒体查询优化响应式设计。 什么是媒体查询&#xff1f; 媒体查询是 CSS3 的一项新特性&#xff0c;允许我们根据…

聚类算法:Kmeans和Kmeans++算法精讲

前言 其实Kmesns聚类算法在YOLOv2&#xff08;【YOLO系列】YOLOv2论文超详细解读&#xff08;翻译 &#xff0b;学习笔记&#xff09;&#xff09;中我们就见到了&#xff0c;那时候只是简单地了解了一下。后来在这学期的数据挖掘课程的期末汇报中&#xff0c;我又抽中了这个算…

1 分钟给 Siri 升个级!从智Z变身 ChatSiri!

原文链接&#xff1a;https://forum.laf.run/d/79/17 众所周知&#xff0c;Siri 是一个智 Z&#xff01;那么如果能接入大火的 chatGPT&#xff0c;是不是就会从智 Z 变成人工智能&#xff1f;&#xff01; 众所周知&#xff0c;Laf 是一个集函数、数据库、存储为一体的云开发…

opencv-LSD线特征库文件

OpenCv-LSD线特征库使用 下载线特征库文件在工程源码中引入线特征头文件 下载线特征库文件 下面是阿里云盘链接 https://www.aliyundrive.com/s/rPxrmusTNPM 我们需要删掉build文件夹&#xff0c;并重新创建build文件夹。 并在build文件夹打开终端执行以下命令&#xff1a; …

Redis高可用之哨兵挂了,主从库还能切换吗

通过部署多个实例&#xff0c;就形成了一个哨兵集群&#xff0c;哨兵集群中的多个实例共同判断&#xff0c;可以降低对主库下线的误判率。 考虑一个问题&#xff1a;如果有哨兵实例在运行时发生了故障&#xff0c;主从库还能正常切换吗&#xff1f; 实际上&#xff0c;一旦多…

【Java 数据结构】二叉树的经典面试题 (图解)

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点!人生格言&#xff1a;当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔&#x1f9be;&am…

【力扣-206】反转链表

&#x1f58a;作者 : Djx_hmbb &#x1f4d8;专栏 : 数据结构 &#x1f606;今日分享 : ----------“覆蕉寻鹿”: 有的人把假的当成真的&#xff0c;而又有人把明明是真的事情当成假的&#xff0c;前者可以说是“黄粱美梦”&#xff0c;后面这种就是“覆蕉寻鹿”。以前有个樵夫…