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

前文二
前文一

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掩码格式

学习来源:计客时间

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Blueprint —— Events

目录 一&#xff0c;Event Level Reset 二&#xff0c;Event Actor Begin Overlap 三&#xff0c;Event Actor End Overlap 四&#xff0c;Event Hit 五&#xff0c;Event Any Damage 六&#xff0c;Event Point Damage 七&#xff0c;Event Radial Damage 八&#xff…

博云先进算力管理平台AIOS已上线全尺寸DeepSeek系列模型

在异构基础设施上轻松运行全尺寸DeepSeek DeepSeek于2024年12月发布了包括 DeepSeek V3、R1、Janus Pro等多版本模型。V3版本适用于通用型自然语言处理任务&#xff0c;R1专注于复杂推理任务&#xff0c;而 Janus Pro 则擅长多模态理解与生成&#xff0c;可满足企业不同 AI 场…

如何搭建起成熟的团队知识文档管理系统

搭建一个成熟的团队知识文档管理系统&#xff0c;对于提升团队的工作效率、促进信息共享以及保障知识资产的安全性都至关重要。**要实现这一目标&#xff0c;首先需要明确知识管理的目标和需求&#xff0c;其次选择合适的知识管理工具&#xff0c;最后制定有效的管理流程和权限…

0-基于强化学习的图Transformer算法求解车辆路径问题(2023)

文章目录 Abstract1 Introduction2. Related Work2.1 引言2.2.基于RNN的VRP解决方案2.3.基于GNN的VRP解决方案2.4.基于Transformer的车辆路径问题求解方法3 边嵌入注意力模型3.1 编码器3.1.1 边嵌入多头注意力3.1.2. 前馈网络(FFN)、批量归一化和残差连接3.2 解码器3.2.1 解码…

C#快速调用DeepSeek接口,winform接入DeepSeek查询资料 C#零门槛接入DeepSeek C#接入DeepSeek源代码下载

下载地址<------完整源码 在数字化转型加速的背景下&#xff0c;企业应用系统对智能服务的需求日益增长。DeepSeek作为先进的人工智能服务平台&#xff0c;其自然语言处理、图像识别等核心能力可显著提升业务系统的智能化水平。传统开发模式下&#xff0c;C#开发者需要耗费大…

有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2

https://learn.microsoft.com/zh-cn/windows/wsl/install-manual#step-4—download-the-linux-kernel-update-package

深度神经网络(DNN)编译器原理简介

深度神经网络(DNN)编译器原理简介 目录 深度神经网络(DNN)编译器原理简介1 什么是DNN编译器2 前端3 后端4 中间表达&#xff08;Intermediate Representation&#xff0c;后文用IR代替&#xff09;5 优化过程6 计算图优化6.1 表达式化简6.2 公共子表达式消除6.3 常数传播6.4 矩…

最小二乘法与梯度下降(原理)

一、最小二乘法 损失函数矩阵形式&#xff1a; 令导数loss0 &#xff0c;可解得&#xff1a; API : sklearn.linear_model.LinearRegression() 功能&#xff1a; 普通最小二乘法线性回归, 权重和偏置是直接算出来的&#xff0c;对于数量大的不适用&#xff0c;因为计算量…

【2025全网最新最全】前端Vue3框架的搭建及工程目录详解

文章目录 安装软件Node.js搭建Vue工程创建Vue工程精简Vue项目文件 Vue工程目录的解读网页标题的设置设置全局样式路由配置 安装软件Node.js 下载地址&#xff1a;https://nodejs.org/zh-cn/ 安装完成后&#xff0c;打开cmd,查看环境是否准备好 node -v npm -vnpm使用之前一定…

Java 之集成 DataX 数据同步工具

1、官网下载 DataX https://github.com/alibaba/DataX 2、将依赖添加到本地&#xff08;DataX没有maven坐标&#xff0c;需要自己安装&#xff09; mvn install:install-file -Dfile"datax-common-0.0.1.jar" "-DgroupIdcom.datax" "-DartifactIdda…

OpenEuler学习笔记(三十五):搭建代码托管服务器

以下是主流的代码托管软件分类及推荐&#xff0c;涵盖自托管和云端方案&#xff0c;您可根据团队规模、功能需求及资源情况选择&#xff1a; 一、自托管代码托管平台&#xff08;可私有部署&#xff09; 1. GitLab 简介: 功能全面的 DevOps 平台&#xff0c;支持代码托管、C…

pikachu

暴力破解 基于表单的暴力破解 【2024版】最新BurpSuit的使用教程&#xff08;非常详细&#xff09;零基础入门到精通&#xff0c;看一篇就够了&#xff01;让你挖洞事半功倍&#xff01;_burpsuite使用教程-CSDN博客 登录页面&#xff0c;随意输入抓包&#xff0c;发送到攻击…

Springboot基础篇(3):Bean管理

前言&#xff1a;Spring 通过扫描类路径&#xff08;Classpath&#xff09;来查找带有特定注解&#xff08;如 Component、Service、Repository 等&#xff09;的类&#xff0c;并将它们注册为 Spring 容器中的 Bean。 1 Bean扫描 Bean 扫描是 Spring 框架的核心功能之一&…

VidSketch:具有扩散控制的手绘草图驱动视频生成

浙大提出的VidSketch是第一个能够仅通过任意数量的手绘草图和简单的文本提示来生成高质量视频动画的应用程序。该方法训练是在单个 RTX4090 GPU 上进行的&#xff0c;针对每个动作类别使用一个小型、高质量的数据集。VidSketch方法使所有用户都能使用简洁的文本提示和直观的手绘…

Vulhub靶机 Apache APISIX Dashboard RCE(CVE-2021-45232)(渗透测试详解)

一、开启vulhub环境 docker-compose up -d 启动docker ps 查看开放的端口 影响范围 2.7 ≤ Apache APISIX Dashboard < 2.10.1 二、访问靶机IP 9080端口 1、下载利用脚本&#xff0c;并利用 https://github.com/wuppp/apisix_dashboard_rce 这里需要注意IP的端口为9000…

Python - Python连接数据库

Python的标准数据库接口为&#xff1a;Python DB-API&#xff0c;Python DB-API为开发人员提供了数据库应用编程接口。 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个实现库&#xff0c;Python2中则使用mysqldb。 PyMySQL 遵循 Python 数据库 API v2.0 规范&…

Windows 11【1001问】Windows 11 都有哪些版本?

随着Windows 11的普及&#xff0c;越来越多的用户开始关注其不同版本及其分支版本之间的差异。在此之前&#xff0c;我们已经通过一系列文章详细介绍了Windows 11的基本概念、硬件配置要求、系统镜像下载方法以及多种安装方式。从使用Rufus和UltraISO软碟通制作Windows 11系统安…

【Kimi】自动生成PPT-并支持下载和在线编辑--全部免费

【Kimi】免费生成PPT并免费下载 用了好几个大模型&#xff0c;有些能生成PPT内容&#xff1b; 有些能生成PPT&#xff0c;但下载需要付费&#xff1b; 目前只有Kimi生成的PPT&#xff0c;能选择模板、能在线编辑、能下载&#xff0c;关键全部免费&#xff01; 一、用kimi生成PP…

【Java项目】基于Spring Boot的旅游管理系统

【Java项目】基于Spring Boot的旅游管理系统 技术简介&#xff1a;采用Java技术、Spring Boot框架、MySQL数据库等实现。 系统简介&#xff1a;旅游管理系统是一个基于Web的在线平台&#xff0c;主要分为前台和后台两大功能模块。前台功能模块包括&#xff08;1&#xff09;首…

Deepseek开源周第三天:DeepGEMM发布

Deepseek开源周第三天&#xff1a;DeepGEMM发布 前言 上周deepseek宣布&#xff0c;将在本周陆续发布五个开源项目&#xff0c;这些库已经在生产环境中经过了记录、部署和实战测试。 今天是deepseek开源周的第三天&#xff0c;deepseek发布了一个名为 DeepGEMM 的项目&#x…