网络 | 应用层-websocket协议报文格式解析

news2024/11/17 11:54:19

websocket的官方文档为rfc(request for comments),是网络协议的规范文档。它包含了许多计算机世界的核心知识
除了这里的websocket,它里边还包含我们熟知的http,tcp等协议的解析。
websocket协议对应的编号是rfc 6455在这里插入图片描述
在这里插入图片描述

websocket协议格式解析

在这里插入图片描述

在这里插入图片描述

由图可知,websocket的报文格式可以分为七大部分,分别是1bite的FIN标志位,3bite的RSV保留位,4bite的Opcode,1bite的mask标志位,7/7+16/7+64bite的payloadLen,可选字段masking-key,可选字段payload。
下边具体解释下:

  1. FIN标志位:此标志位用于指示当前的帧是消息的最后一个分段。

    websocket支持将长消息切割成若干帧发送,切分后,前边的帧的FIN字段均为0,最后一个帧的FIN为1。

    当消息没有分段时,这个帧便包含所有信息,FIN标志位为1.【1bite】

  2. RSV1~3:这是三个保留位。一般情况下为全0。

    当客户端、服务端协商采用websocket扩展时,这三个标志位可以非0,且值的含义由扩展进行定义。

    如果出现非0值但并未采用websocket扩展,连接出错。【3bite】

  3. Opcode:操作码。用于指示帧类型。【4bite】

    它决定了如何解析后续的数据载荷部分,如果操作码是不认识的,接收端应该断开连接。可选的操作码如下:

    %x0:表示一个延续帧。当Opcode为0时,表示本次数据传输采用了数据分片,当前收到的数据帧为其中一个数据分片。
    %x1:表示这是一个文本帧(frame)
    %x2:表示这是一个二进制帧(frame)
    %x3-7:保留的操作代码,用于后续定义的非控制帧。
    %x8:表示连接断开。
    %x9:表示这是一个ping操作。
    %xA:表示这是一个pong操作。
    %xB-F:保留的操作代码,用于后续定义的控制帧。
    

    其中注意websocket既可以传输文本数据,也可以传输二进制数据

  4. Mask标志位:指示帧的payload是否需要使用掩码覆盖。【1bite】

    RFC6455规定,当且仅当由客户端向服务端发送的帧需要覆盖。

    掩码覆盖的作用:解决“缓冲区溢出”(忽略)

    当mask为1,但服务端接收的数据没有进行过掩码操作,服务端需要断开连接

  5. payload length:7位/7+16位(64k)/7+64位(超级大),单位是字节
    模式区分:
    ①当7bite的payloadlength<126,此时为模式1
    ② 7bite的payloadlength=126,16bite生效为模式2
    ③ 7bite的payloadlength=126,64bite生效为模式3在这里插入图片描述

  6. masking-key与mask值有关,当mask为0时,没有masking-key,为1时,有4B的masking-key

  7. payload-data:长度可变。包含扩展数据(x字节)和应用数据(y字节)

    如果通信双方约定使用了websocket扩展,则扩展数据也存放于此。并声明扩展长度。

    如果没有约定使用,则扩展数据为0字节。

其中最重要的便是Opcode、payload length(三种模式),payload data

参考

引用
引用
官方

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

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

相关文章

信安标委发布16项网络安全国家标准:8项为旧标准替代,8项标准为新发布

1. 背景 根据2024年4月25日国家市场监督管理总局、国家标准化管理委员会发布的中华人民共和国国家标准公告&#xff08;2024年第6号&#xff09;&#xff0c;全国网络安全标准化技术委员会归口的16项国家标准正式发布。 2. 标准清单 本次国家标准涵盖了信息技术安全评估准则、…

RTT PIN设备学习

获取GPIO编号 GET_PIN(port, pin)#define LED_BLUE_PIN GET_PIN(A, 0)设置引脚模式 void rt_pin_mode(rt_base_t pin, rt_base_t mode);设置引脚电平 void rt_pin_write(rt_base_t pin, rt_base_t value);rt_base_t pin 同上&#xff0c; 为引脚编号&#xff0c;尽量通过宏定…

网络安全(6) 模拟实验 Metasploit 控制并获取Windows 登录HASH、LM Hash和NTLM Hash密文解析

窃取WINDOWS账号密码 系统环境&#xff1a;主机&#xff08;Windows系统 IP&#xff1a;192.168.126.129)&#xff0c;虚拟机&#xff08;KALI系统 IP&#xff1a;192.168.126.3&#xff09;&#xff0c;两者需要能通过本地网络互通互连。 攻击工具&#xff1a;Metasploit是一…

14:java基础-Tomcat-Web容器

文章目录 面试题Web 容器是什么&#xff1f;HTTP 的本质 面试题 Web 容器是什么&#xff1f; 让我们先来简单回顾一下 Web 技术的发展历史&#xff0c;可以帮助你理解 Web 容器的由来。早期的 Web 应用主要用于浏览新闻等静态页面&#xff0c;HTTP 服务器&#xff08;比如Apa…

打开IE浏览器自动跳转微软的edge浏览器,取消自动跳转

打开IE浏览器会自动跳转微软的edge浏览器 不想跳转的解决办法 1.Win Q 输入 Internet&#xff0c;点击Internet 选项 2.去掉勾选 启用第三方浏览器扩展&#xff0c;然后就不自动跳转了 3. 完成

解决电脑睡眠后,主机ping不通VMware虚拟机

文章目录 问题解决方法方法一方法二注意 问题 原因&#xff1a;电脑休眠一段时间&#xff0c;再次打开电脑就ping不通VMware虚拟机。 解决方法 方法一 重启电脑即可&#xff0c;凡是遇到电脑有毛病&#xff0c;重启能解决90%问题。但是重启电脑比较慢&#xff0c;而且重启…

Android动态布局framelayout

功能说明 最近碰到一个需求&#xff0c;要求在网页端拖控件&#xff0c;动态配置app控件的模块&#xff0c;大小和位置&#xff0c;显示不同的功能&#xff0c;然后在app大屏展示。 技术难点&#xff1a; 1.动态控件位置和大小难调&#xff0c;会出现布局混乱&#xff0c;位置错…

STL——queue容器【队列】

queue的基本概念&#xff1a; 概念&#xff1a;queue是一种先进先出的数据结构&#xff0c;它有两个出口 queue的构造函数&#xff1a; 构造函数&#xff1a; queue<T>que:采用模板类实现&#xff0c;queue对象的默认构造形式 queue(const queue &que):拷贝构造函…

SpringBoot项目代码反编译、加密

话不多说&#xff0c;直接上干活 1. 引入依赖地址和依赖 在maven的setting.xml中添加 <repositories><repository><id>jitpack.io</id><url>https://jitpack.io</url></repository> </repositories>在需要加密的项目的pom.x…

ORACLE ODA一体机存储节点电源故障的分析处理

近期&#xff0c;某用户的ORACLE ODA一体机在例行机房巡检时出现亮黄灯告警&#xff1b;用户反馈次问题后我们立刻通过远程方式&#xff0c;登陆ODA的控制台进行查看&#xff1b; 对于ODA一体机&#xff08;2个计算节点1个存储节点&#xff09;&#xff0c;计算节点可以通过il…

LabVIEW MEMS电容式压力传感器测试系统

LabVIEW MEMS电容式压力传感器测试系统 随着微电子技术的发展&#xff0c;MEMS&#xff08;微电机系统&#xff09;技术在各个领域得到了广泛应用。MEMS电容式压力传感器以其高灵敏度、小尺寸、低功耗等优点&#xff0c;在微传感器领域占据了重要的地位。然而&#xff0c;这些…

【Spring】Spring 整合 Junit、MyBatis

一、 Spring 整合 Junit <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache…

Wallace树乘法器及Verilog实现

一、Wallace树乘法器 Wallace树乘法器就是将多个部分积进行分组&#xff0c;每三个一组&#xff0c;最后如果剩下的部分积个数不够三个的不做处理&#xff0c;然后将各组的部分积进行相加得到和以及进位信息&#xff0c;直到最终只剩下两行部分积&#xff0c;相加后得到最终结…

作为网络安全工程师需要掌握的安全小知识!

网络安全风险无处不在&#xff0c;今天为大家梳理了一些网络安全相关的小知识&#xff0c;希望能进一步提升大家的安全意识&#xff0c;帮助大家建立更加安全的网络环境。 一、主机电脑安全 1、操作系统安全&#xff1a;安装操作系统时需要选择合适的版本&#xff0c;及时打补…

RabbitMQ高级(MQ的问题,消息可靠性,死信交换机,惰性队列,MQ集群)【详解】

目录 一、MQ的问题 1. 问题说明 2. 准备代码环境 1 创建project 2 创建生产者模块 3 创建消费者模块 二、消息可靠性 1. 介绍 2. 生产者确认机制 3. MQ消息持久化 4. 消费者确认机制 5. 消费者auto模式的失败重试 6. 小结 三、死信交换机和延迟消息 1. 介绍 2. …

李彦宏回顾大模型重构百度这一年

“大模型我们走在最前面&#xff0c;我们需要去勇闯无人区&#xff0c;需要去冒前人没有冒过的风险。”近日&#xff0c;在百度一场内部颁奖活动中&#xff0c;百度创始人、董事长兼首席执行官李彦宏指出&#xff0c;百度一直坚信技术可以改变世界&#xff0c;会一直沿着这条路…

【Web】CTFSHOW 七夕杯 题解

目录 web签到 easy_calc easy_cmd web签到 CTF中字符长度限制下的命令执行 rce(7字符5字符4字符)汇总_ctf中字符长度限制下的命令执行 5个字符-CSDN博客7长度限制直接梭了 也可以打临时文件RCE import requestsurl "http://4ae13f1e-8e42-4afa-a6a6-1076acd08211.c…

学习笔记——字符串(单模+多模+练习题)

单模匹配 Brute Force算法&#xff08;暴力&#xff09; 算法思想 母串和模式串字符依次配对&#xff0c;如果配对成功则继续比较后面位置是否相同&#xff0c;如果出现匹配不成功的位置&#xff0c;则j&#xff08;模式串当前的位置&#xff09;从头开始&#xff0c;i&…

【JavaScript】内置对象 - 数组对象 ⑤ ( 数组转字符串 | toString 方法 | join 方法 )

文章目录 一、数组转字符串1、数组转字符串 ( 逗号分割 ) - toString()2、数组转字符串 ( 自定义分割符 ) - join() Array 数组对象参考文档 : https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array 一、数组转字符串 1、数组转字符串 ( 逗…

每日一练 2024.5.10

题目&#xff1a; 给定一个非负整数数组 nums&#xff0c; nums 中一半整数是 奇数 &#xff0c;一半整数是 偶数 。 对数组进行排序&#xff0c;以便当 nums[i] 为奇数时&#xff0c;i 也是 奇数 &#xff1b;当 nums[i] 为偶数时&#xff0c; i 也是 偶数 。 示例 1&#…