当前位置: 首页 > news >正文

计算机网络————(三)

前文二
前文一

Websocket协议

是一种存在TCP协议之上的协议
当客户端需要了解服务器是否更新就需要不断给客户端发送请求询问是否更新,这行会造成服务端压力很大
而Websocket相当于服务器一旦更新了就会给客户端发送消息表明自己更新了,类似客户端订阅了服务器,一旦服务器更新就会给客户端返回更新消息

在这里插入图片描述

在浏览器自带WS代表的就是WebSocket协议 或者是过滤器中输入is:running
表格列:
Data:消息负载。如果消息为纯文本,则此处显示。二进制操作码,此列将显示操作码的名称和代码。
Length:消息负载的长度(字节为单位)
Time:收到或发送消息的时间
消息颜色:
浅绿色:发至服务器的文本消息
白色:接收到文本消息
浅黄色:操作码
浅红色:错误

成本

1.元数据放在应用层了,HTTP放在的是头部
2.传输是基于帧,HTTP是基于流传输
3.同源策略
4.同一台主机会根据URI、子协议支持同主机同端口上的多个服务

URI格式
we-URI/wws-URI =“ws/wws :” "//“host[”:“port]path[”?"query]

在这里插入图片描述

发送四类消息
红色的消息————必选的消息
请求:
必须是GET请求且为HTTP/1.1,头部必须是HOST头部,以及
携带WebSocket-Version的版本13,并且携带连接升级的消息Connection:keep-alive,Upgrade,
并且携带升级为什么类型Upgrade:Websocket

绿色的为随机数

蓝色的为传递跨域信息

黑色的为自协议等
响应:
必须返回的响应码为101,Connection为Upgrade,以及Upgrade为websocket

绿色:服务器必须根据客户端传来的随机数生成新的编码

蓝色为响应的跨域头部信息

如何证明握手被服务器接收

请求中绿色的随机数作64位编码
然后响应中的Sec-WebSocket-Accept 使用做拼接(BASE64(SHA1(Sec-WebSocket-KeyGUID)))作为验证

消息与数据帧

Message消息
1条消息由1个或多个帧组成,这些数据帧属于同一类型
代理服务器可能合并、拆分消息的数据帧

Frame数据帧
持续帧
文本帧、二进制帧

帧的格式:
在这里插入图片描述

0——31 表示几个二位数——4个字节,红色的为必然存在的帧的头部

FIN(Finish)是一个标志位,用于TCP连接的正常关闭过程。当一个设备想要终止与另一个设备之间的TCP连接时,它会发送一个带有FIN标志位设置为1的TCP段(或称为帧)。这表示该端不再有数据要发送了,但仍然可以接收对方发来的数据

RSV1-3:默认为0,仅当使用extension扩展时,由扩展决定其值

opcode:定义了帧的类型三种——1)持续帧————0表示跟前一个帧一样。
2)非控制帧————a.1——文本帧(UTF8) b.2——二进制帧 c.3-7为非控制帧
3)控制帧————a.8——关闭帧(关闭连接) b.9——心跳帧ping c.A——心跳帧pong d.B-F——控制帧保留

非控制帧的消息分片必须保证有序
在这里插入图片描述

插入FIN=1 OP=A 表示插入了一个控制帧,并且通知对方要结束传输了,但是还有挥手协议所以还会有FIN=1的传递

内容和长度

消息内容长度组成
1.应用消息长度
2.扩展数据长度————压缩等

当内容长度为<=125字节————使用Payload len 的格式,
126-2^16-1 Payload len 值为126使用Extended payload length 16位表示长度,
216至264-1 Payload len值为127 使用Extended payload length 共8字节64位
在这里插入图片描述

发送消息的前提

确保WebSocket会话处于POEN状态
以帧来承载消息,一条消息可拆分位多个数据帧
客户端发送的帧必须基于掩码编码
一旦发送或者接收到关闭帧,连接必须处于CLOSING状态
一旦发送了关闭帧,且接收到关闭帧,连接处于CLOSED状态
TCP连接关闭后,WebSocket连接才完全关闭

客户端向服务端发送消息要做掩码处理和原因
由一种针对代理服务器的缓存污染攻击
在这里插入图片描述

实现不当的代理服务器————只能识别HTTP请求,而不能识别WebSocket的服务器
首先恶意页面通过JS发送握手,然后代理服务器正常代理进恶意服务器————成功建立了WebSocket握手
问题就在第三步,恶意页面伪造GET 请求,而实际使用FROM增的请求,因为代理服务器无法识别WebSocket协议并且认为是HTTP请求就正常
转发给服务器。然后恶意服务器再返回响应给代理服务器,此时代理服务器就将这个恶意服务器的内容放入缓存————实际应该存放正常服务器的内容。
这样正常浏览器访问页面的话就会返回恶意服务器里面的内容。

解决办法:frame-masking-key 掩码
客户器端消息:MASK为1(控制帧),传递32位无法预测的、随机的Masking-key
服务器端消息MASK为0
强制浏览器生成32位 Frame-masking-key,不能让那个js代码猜出,否则任然可以反向构造
对传输包体按照Frame-masking-key执行可对称解密的XOR异或操作,使代理服务器不识别

心跳帧格式

WebSocket用来维持长连接,如果ping-pong存在保持连接
心跳帧插在数据帧中传输
服务器->客户端 ping帧————opcode=9 可以含有数据
客户端->服务器 pong帧————opcode=A 必须与ping帧具有相同

连接关闭的流程

控制帧中的关闭帧:在TCP连接之上的双向关闭
closing 一端发送关闭帧之后,不再发送任何数据,但是可以接受数据,另外一端任然可以接受数据
closed 接收到关闭数据帧之后,不再接收到任何数据

opcode=8表示关闭帧 关闭帧仍然可以有数据,但是仅用于解释关闭会话的原因,前2字节必须为无符号整型,遵循mask掩码格式

学习来源:计客时间

相关文章:

计算机网络————(三)

前文二 前文一 Websocket协议 是一种存在TCP协议之上的协议 当客户端需要了解服务器是否更新就需要不断给客户端发送请求询问是否更新&#xff0c;这行会造成服务端压力很大 而Websocket相当于服务器一旦更新了就会给客户端发送消息表明自己更新了&#xff0c;类似客户端订阅…...

请谈谈 React 中的状态管理,如何使用 Context API 和 Redux 进行状态管理?

一、Context API 深度应用 1. 核心实现原理 通过createContext创建上下文对象&#xff0c;使用Provider组件包裹需要共享状态的组件树&#xff0c;子组件通过useContext Hook或Consumer组件消费数据。 代码示例&#xff08;主题切换场景&#xff09;&#xff1a; // 创建上…...

【考研】复试相关上机题目

文章目录 22机试回忆版1、判断燃气费描述输入格式输出格式输入样例输出样例 C o d e Code Code 2、统计闰年数量描述输入格式输出格式输入样例输出样例 C o d e Code Code 3、打印图形描述输入格式输出格式 C o d e Code Code 4、密文数据描述输入格式输出格式输入样例输出样例…...

利用机器学习实现实时交易欺诈检测

以下是一个基于Python的银行反欺诈AI应用示例代码,演示如何利用机器学习实现实时交易欺诈检测。该示例使用LightGBM算法训练模型,并通过Flask框架构建实时检测API: python import pandas as pd from sklearn.model_selection import train_test_split from sklearn.preproc…...

Modelfile配置说明

参数说明翻译 参数描述值类型示例用法mirostat启用Mirostat采样以控制困惑度。&#xff08;默认&#xff1a;0&#xff0c;0禁用&#xff0c;1Mirostat&#xff0c;2Mirostat 2.0&#xff09;intmirostat 0mirostat_eta影响算法对生成文本反馈的响应速度。较低的学习率将导致调…...

labview实现有符号位16进制转二进制补码转真值

今天在用一个采集模块时&#xff0c;发现读出寄存器的数据是不同的&#xff0c;它有两种范围&#xff0c;一个时十六进制整型&#xff0c;一种是有符号位十六进制&#xff0c;对应的量程和范围也是不同的&#xff0c;针对之前读取温度没有出现负数的情况&#xff0c;应该是转成…...

浏览器深度解析:打造极速、安全、个性化的上网新体验

在数字化时代,浏览器作为我们获取信息、娱乐休闲的重要工具,其性能与功能直接影响着我们的上网体验。今天,我将为大家介绍一款备受好评的浏览器——Yandex浏览器,并深入解析其独特功能与优势,帮助大家更好地了解并选择这款上网神器。 一、知名公司背书,开源项目融合 Yan…...

JavaScript 简单类型与复杂类型-堆和栈

深入理解JavaScript中的简单类型&#xff08;基本数据类型&#xff09;与复杂类型&#xff08;引用数据类型&#xff09;如何在内存中存储对于编写高效、无误的代码至关重要。本文将探讨这两种类型的差异&#xff0c;以及它们在内存中的存储机制——栈&#xff08;Stack&#x…...

【AI+智造】DeepSeek价值重构:当采购与物控遇上数字化转型的化学反应

作者&#xff1a;Odoo技术开发/资深信息化负责人 日期&#xff1a;2025年2月24日 引言&#xff1a;从事企业信息化工作16年&#xff0c;我见证过无数企业从手工台账到ERP系统的跨越。但真正让采购和物控部门脱胎换骨的&#xff0c;是融合了Deepseek AI的Odoo数字化解决方案——…...

基于YOLO11深度学习的苹果叶片病害检测识别系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...

mapbox添加自定义图片绑定点击事件,弹窗为自定义组件

一、首先构建根据后端返回的数据构建geojson格式的数据&#xff0c;点位的geojson数据格式&#xff1a; {"type": "FeatureCollection","features": [{"type": "Feature","geometry": {"type": "…...

SVT-AV1接入ffmpeg说明

一 编译集成 Files v2.3.0 Alliance for Open Media / SVT-AV1 GitLab cd /SVT-AV1/Build/linux/ ./build.sh make install GitHub - FFmpeg/FFmpeg: Mirror of https://git.ffmpeg.org/ffmpeg.git ./configure --enable-libsvtav1 --enable-gpl --extra-ldflags-L/usr/loca…...

基于 C++ Qt 的 Fluent Design 组件库 QFluentWidgets

简介 QFluentWidgets 是一个基于 Qt 的 Fluent Designer 组件库&#xff0c;内置超过 150 个开箱即用的 Fluent Designer 组件&#xff0c;支持亮暗主题无缝切换和自定义主题色。 编译示例 以 Qt5 为例&#xff08;Qt6 也支持&#xff09;&#xff0c;将 libQFluentWidgets.d…...

OpenCV(6):图像边缘检测

图像边缘检测是计算机视觉和图像处理中的一项基本任务&#xff0c;它用于识别图像中亮度变化明显的区域&#xff0c;这些区域通常对应于物体的边界。是 OpenCV 中常用的边缘检测函数及其说明: 函数算法说明适用场景cv2.Canny()Canny 边缘检测多阶段算法&#xff0c;检测效果较…...

多模态人物视频驱动技术回顾与业务应用

一种新的商品表现形态&#xff0c;内容几乎存在于手淘用户动线全流程&#xff0c;例如信息流种草内容、搜索消费决策内容、详情页种草内容等。通过低成本、高时效的AIGC内容生成能力&#xff0c;能够从供给端缓解内容生产成本高的问题&#xff0c;通过源源不断的低成本供给倒推…...

星海智算+ DeepSeek-R1:技术突破与行业应用的协同革新

一、前言 在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;正以前所未有的速度改变着商业和社会的方方面面。最近爆火的DeepSeek-R1系列模型&#xff0c;以其强大的推理能力和在中文的推理、代码和数学任务高效的性能得到了全球用户的热议。该模型不仅在多项专…...

选择排序:简单高效的选择

大家好&#xff0c;今天我们来聊聊选择排序&#xff08;Selection Sort&#xff09;算法。这是一个非常简单的排序算法&#xff0c;适合用来学习排序的基本思路和操作。选择排序在许多排序算法中以其直观和易于实现的特点著称&#xff0c;虽然它的效率不如其他高效算法&#xf…...

考研/保研复试英语问答题库(华工建院)

华南理工大学建筑学院保研/考研 英语复试题库&#xff0c;由华工保研er和学硕笔试第一同学一起整理&#xff0c;覆盖面广&#xff0c;助力考研/保研上岸&#xff01;需要&#x1f447;载可到文章末尾见小&#x1f360;。 以下是主要内容&#xff1a; Part0 复试英语的方法论 Pa…...

ARM Cortex-M处理器中的MSP和PSP

在ARM Cortex-M系列处理器中&#xff0c;MSP&#xff08;主堆栈指针&#xff09;和PSP&#xff08;进程堆栈指针&#xff09;是两种不同的堆栈指针&#xff0c;主要用于实现堆栈隔离和提升系统可靠性。以下是它们的核心区别和应用场景&#xff1a; 1. 基本定义 MSP&#xff08;…...

《Keras 3 使用 NeRF 进行 3D 体积渲染》:此文为AI自动翻译

《Keras 3 使用 NeRF 进行 3D 体积渲染》 作者: Aritra Roy Gosthipaty, Ritwik Raha 创建日期: 2021/08/09 最后修改时间: 2023/11/13 描述: 体积渲染的最小实现,如 NeRF 中所示。 (i) 此示例使用 Keras 3 在 Colab 中查看 GitHub 源 介绍 在此示例中,我们展示了…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...