WebRTC(十一):RTCP和SRTCP

RTCP

基本概念

RTCP 是 RTP 的控制协议,用于监控媒体传输质量和参与者状态,并与 RTP 一起工作。RTP 用于传输媒体数据(如音视频),RTCP 则用于传输控制信息。

RTCP 通常和 RTP 同时使用,并通过 不同端口(通常 RTP 使用偶数端口,RTCP 使用其下一个奇数端口)

主要用于:

  • 传输质量反馈:丢包率、时延、抖动等统计信息。
  • 媒体源身份识别:包括 CNAME(Canonical Name)标识每个参与者。
  • 带宽控制:用于避免 RTCP 消息对带宽占用过大(典型限制为 5%)。
  • 多方会话控制:尤其适用于多点会议。

基本结构

每个 RTCP 包由一个公共头部 + 特定类型的负载数据组成。基本的 RTCP 报文格式如下:

0               1               2               3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|  RC   |   PT=SR=200     |             length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • V:版本,通常为2
  • P:填充位(padding)
  • RC:Reception Report Count,表示包含多少个 reception report block(在 SR/RR 包中)
  • PT:Payload Type,表明 RTCP 包类型
  • length:包长度(以 32 位字为单位,不包括头部)

RTCP包类型(Payload Type)

类型名称PT 值用途
SRSender Report200发送端统计信息
RRReceiver Report201接收端反馈信息
SDESSource Description202源描述(包括 CNAME)
BYEGoodbye203终止会话
APPApplication-defined204自定义扩展

Sender Report (SR) — PT=200

结构

一个完整的 RTCP SR 包结构如下:

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|  RC   |   PT=SR=200     |             length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         SSRC of sender                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              NTP timestamp, most significant word            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             NTP timestamp, least significant word            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         RTP timestamp                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     sender's packet count                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      sender's octet count                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Report block 1                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Report block 2                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             ....                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
字段解释
字段说明
V (2 bits)RTP 版本,固定为 2
P (1 bit)填充位,最后是否有填充字节
RC (5 bits)下面附带的 Reception Report 数量(最多 31 个)
PT = 200Payload Type,200 表示 SR
Length整个 RTCP 包长度(以 32 位字为单位,减1)
SSRC of sender当前发送者的同步源标识
NTP timestampNTP 格式的时间戳(64 位),用于同步
RTP timestamp与 NTP 时间同步的 RTP 时间戳(32 位)
Sender’s packet count发送的 RTP 包总数
Sender’s octet count发送的 RTP 字节总数
Report blocks针对接收端的报告,最多 31 个,每个包含丢包率、抖动、延迟等统计信息
Report Block 格式(每个 24 字节)

包含如下字段:

  • SSRC of source
  • Fraction lost
  • Cumulative number of packets lost
  • Extended highest sequence number received
  • Interarrival jitter
  • Last SR timestamp (LSR)
  • Delay since last SR (DLSR)

Receiver Report (RR) — PT=201

结构

RR 包结构和 SR 类似,但没有发送者统计字段,仅包含一组或多组接收统计报告:

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|  RC   |   PT=RR=201     |             length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     SSRC of packet sender                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Report block 1                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Report block 2                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             ....                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
字段解释
字段说明
V (2 bits)RTP 版本号,固定为 2
P (1 bit)填充标志
RC (5 bits)Report Count,表示下面有几个 report block(最多 31 个)
PT = 201Payload Type,201 表示 RR
LengthRTCP 包长度(32bit 字为单位,减去1)
SSRC of sender当前报告者(接收端)的 SSRC
Report blocks一个或多个 24 字节的 report block,描述对应源的接收质量
Report Block 格式(每个 24 字节)

每个 Report Block 针对一个 RTP 源(发送者)统计信息:

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 SSRC_1 (源 SSRC)                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| fraction lost |       cumulative number of packets lost      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           extended highest sequence number received          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      interarrival jitter                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         last SR (LSR)                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   delay since last SR (DLSR)                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
字段说明
SSRC_n被监视的发送者(源) SSRC
fraction lost自上次报告后丢失的 RTP 包比例(0-255)
cumulative number of packets lost接收到当前为止丢失的总包数
extended highest seq no received接收的最大序列号(扩展 32 位)
interarrival jitter包到达间隔抖动
last SR (LSR)上次收到的 SR 报告的 NTP 时间戳中间 32 位(即 SR 的发送时间)
delay since last SR (DLSR)自从收到上一个 SR 以来的时间(单位为 1/65536 秒)

SDES

结构
0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|  SC   |  PT=SDES=202    |            length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          SSRC/CSRC_1                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         SDES items (可变长)                  |
|                              ...                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          SSRC/CSRC_n                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         SDES items                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
字段解释
字段说明
V (2 bits)RTP 版本号,固定为 2
P (1 bit)填充位
SC (5 bits)Source Count,本包中包含多少个源(SSRC/CSRC)
PT = 202Payload Type,202 表示 SDES
lengthRTCP 包长度(单位是 32bit 字,减 1)
SSRC/CSRC与该描述项相关的源的 ID
SDES items描述此源的项
SDES Item

每个 SDES item 的格式如下:

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   item type   |  length       | user data (variable length)   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

常见 item types(1 字节):

Type名称说明
1CNAME参与者唯一标识(必选)
2NAME用户名/显示名
3EMAIL电子邮件地址
4PHONE电话号码
5LOC地理位置
6TOOL使用的工具名(如 FFmpeg)
7NOTE备注
8PRIV私有扩展项
0END结束标记,标志该 SDES 项结束

示例:

| 1 (CNAME) | 9 | "user@host" |
| 2 (NAME)  | 4 | "John"      |
| 0 (END)   |   |             |

BYE

结构
0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|  SC   |   PT=BYE=203    |             length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           SSRC/CSRC                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
:                              ...                              :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     length    |       optional reason for leaving...          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
字段解释
字段说明
V (2 bits)RTP 协议版本,固定为 2
P (1 bit)填充标志
SC (5 bits)Source Count,本包中包含多少个 SSRC/CSRC
PT = 203Payload Type,203 表示 BYE
length包长度,以 32bit 字为单位(不含 header 自身)
SSRC/CSRC要离开的同步源(可以多个)
可选 Reason 字段一个字符串,表示离开原因(可选) 格式为:1字节长度 + UTF-8 字符串
示例

一个 BYE 包可能如下:

  • SSRC: 0x87654321
  • Reason: "stream ended"

在 Wireshark 中可看到:

RTCP: Goodbye (BYE)SSRC: 0x87654321Reason: stream ended

APP

结构
0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P| Subtype |  PT=APP=204   |             length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           SSRC/CSRC                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          name (ASCII)                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   application-dependent data                  |
|                               ...                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
字段解释
字段含义
V (2 bits)RTP 版本号,固定为 2
P (1 bit)Padding 标志位
Subtype (5 bits)应用自定义子类型(0~31)
PT (8 bits)Payload Type,204 表示 APP 包
Length (16 bits)包长度(以 32bit 字为单位,减 1)
SSRC应用定义者的 SSRC
Name (32 bits)ASCII 字母组成的 4 字节标识符(如 "TEST"
Application-dependent data由应用定义的任意内容(可变长)

SRTCP(Secure RTCP)

基本概念

SRTCP 是 RTCP 的 安全扩展协议,用于 加密、消息认证(MAC)以及重放保护,与 SRTP(Secure RTP) 相对,主要用于保障 RTCP 报文的保密性和完整性。

功能描述
加密(可选)加密 RTCP payload(如 Sender Report)
完整性验证使用 HMAC(通常为 HMAC-SHA1)
防重放攻击使用 SRTCP Index(31 bit 计数器)

基本结构

原始的RTCP报文:

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|    RC   |   PT=SR=200   |             length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         SSRC of sender                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...  (RTCP payload)

SRTCP 的格式是在 RTCP 基础上加入加密、认证和重放保护:

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|E|                     SRTCP index                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Authentication tag (可选,MAC)                   |
~                                                               ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

字段说明:

字段长度描述
E(Encryption Flag)1 bit表示 RTCP payload 是否被加密(1 为加密)
SRTCP index31 bits单调递增的计数器(防重放攻击、同步)
Authentication tag可选,通常 10/20 字节用于认证的 HMAC,防止篡改

示例:SRTCP 报文结构图(含加密)

+-------------------------------+
|     RTCP 原始报文(明文/密文) |
+-------------------------------+
| E |        SRTCP index        |
+-------------------------------+
|      Authentication tag      |
+-------------------------------+
  • 如果 E=0:RTCP payload 是明文;

  • 如果 E=1:RTCP payload 是密文;

  • Authentication tag 总是对前面部分进行 HMAC 计算,用于完整性校验与认证。

标准文档

https://datatracker.ietf.org/doc/html/rfc3711

WebRTC中的RTCP和SRTCP

WebRTC中的RTCP

  • 默认开启 RTCP 复用(RTCP-MUX,RFC 5761):音视频和控制数据共用同一个 UDP 端口
  • 使用 RTCP 扩展报文(如 RTP Feedback)实现自适应码率与拥塞控制
  • 可以携带统计反馈,供算法调整使用(如 Google Congestion Control)

WebRTC中的SRTCP

  • 防止中间人查看控制信令(如 SSRC、网络状态)
  • 防止伪造控制指令(如虚假 NACK、PLI、BYE)
  • 防止重放攻击干扰会话状态

DTLS-SRTP

WebRTC 使用如下流程保护媒体:

[RTP/RTCP] -> SRTP/SRTCP 加密 -> 通过 UDP 发送↑DTLS 协议协商密钥
  • DTLS 协议运行在媒体端口上(UDP),协商密钥;

  • 协商结果用于派生 SRTP/SRTCP 的加密密钥;

  • 然后媒体通过 SRTP 和 SRTCP 加密发送;

  • 不会单独发送明文 RTP/RTCP

抓包示例

img

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

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

相关文章

将element-plus table背景改成透明色

方法一:全局修改(推荐) /* 全局透明表格样式 */ .el-table, .el-table__header-wrapper, .el-table__body-wrapper, .el-table__row {background-color: transparent !important; }/* 可选:自定义表头和斑马纹行的透明度 */ .el-table__header th {background-color: rgba(…

安全运营中的漏洞管理和相关KPI

漏洞管理一直是企业网络安全运维中的关键环节,但又是安全运维的痛点。不仅要投入大量的人力物力,还无法被其他运维团队所理解。那么,向领导层和相关团队反映出当前漏洞管理的现状和挑战便是一个急需解决的问题。 通过有效的数据讲好故事,发现问题,或许是做好漏洞管理的突破…

机器学习框架(1)

以吴恩达的《机器学习》课程为蓝本,整理课程框架,自己学习的简单记录。 课程讲解很清楚,建议有空可以看看原课程。 01 单变量线性回归 回归偏向于连续属性,分类偏向于离散属性。 监督学习是给定标签的学习;而无监督学…

AI Ready数据库,OceanBase打了一个样

大数据产业创新服务媒体 ——聚焦数据 改变商业 过去一年,企业对AI的兴趣不减。从接入大模型,到部署RAG(检索增强生成)系统、探索AI Agent,AI从“新技术”变成了“业务工具”的候选项。但一个技术能否真正落地&#x…

趣味数据结构之——链

记得数组吗,一个萝卜一个坑的想象。在数组的世界里我们就是第三视角,置身于坑外的。如果我们是二维平面上的生物,那数组就是一维的线,我们可以随机访问,增删查改,也可以一眼看出数组大小。 那么对于链来说…

构建低代码平台的技术解析

低代码平台表单引擎与业务事件设计实践 低代码平台表单引擎与业务事件设计实践一、什么是低代码?它能做什么?二、请假系统案例介绍2.1 主要功能2.2 业务流程 三、表单元数据、实例数据与业务事件联动设计3.1 表单元数据(Meta)如何…

Hive SQL 快速入门指南

在大数据蓬勃发展的当下,处理海量数据成为企业面临的关键挑战。Hive SQL 作为一款强大的工具,为我们打开了高效处理大数据的大门。接下来,让我们一起踏上 Hive SQL 的入门之旅。​ 一、Hive SQL 是什么​ Hive 是基于 Hadoop 的数据仓库工具…

国内公司把数据湖做成了数据库

在做多年的数据仓库项目,数据湖也在做,但是做完发现,这个不是传统数据库里面的ODS吗? 好多公司做数据湖,就是把数据湖做成了ODS层(贴源数据层),难道真的数据湖就是这样等于ODS吗&am…

Python 数据分析与可视化 Day 6 - 可视化整合报告实战

🎯 今日目标 整合数据分析与可视化结果生成结构化报告用代码自动生成完整的图文分析文档熟悉 Jupyter Notebook / Markdown 图表 报告生成流程 🧩 一、项目背景:学生成绩分析报告 数据来源:students_cleaned.csv(含姓…

服务器、树莓派/香橙派部署HomeAssistant与小爱音箱联动

HomeAssistant功能介绍与多平台部署实战:CentOS服务器、树莓派、香橙派部署及小爱音箱联动控制 一、HomeAssistant简介 HomeAssistant是一款基于Python开发的开源智能家居自动化平台,它最大的特点是高度集成和自定义。通过HomeAssistant,用…

内存泄漏系列专题分析之二十四:内存泄漏测试Camera相机进程内存指标分布report概述

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 内存泄漏系列专题分析之二十四:内存泄漏测试Camera相机进程内存指标分布report概述 目录 一、问题背景 二、:内存泄漏测试Camera相机进程内存指标分布report概述 2.1:Camera领域相机进…

华为堆叠理论及配置

一,堆叠基本概念 1.1交换机角色 主交换机(Master):主交换机负责管理整个堆叠。**堆叠系统中只有一台主交换机。**备交换机(Standby):备交换机是主交换机的备份交换机。堆叠系统中只有一台备交换…

【数字经济】数据即产品架构在数字经济时代的应用

数据即产品架构在数字经济时代的应用 在数字经济中,数据已成为核心生产要素,“数据即产品”(Data-as-a-Product)架构通过系统化封装原始数据,实现其可交易、可交付的产品化价值。以下是其架构设计与应用解析&#xff…

MySQL 中的时间序列数据分析与处理

在互联网应用和企业业务系统中,特别是现在当下环境电商以及跨境电商火爆的情况下,时间序列数据无处不在,如电商订单时间、用户登录日志、设备监控数据等。MySQL 作为主流数据库,具备强大的时间序列数据处理能力。本文将结合电商订…

STM32——MDK5编译和串口下载程序+启动模式

一、MDK5编译 1.1 编译中间文件 还可通过 .map文件计算程序大小 中间文件 > 下载到开发板中的文件 > .hex 二、串口下载 2.1 前提须知 2.2 串口硬件链接(M3、M4系列) M7无串口下载 PC端需安装 CH340 USB 虚拟串口驱动:CH340 USB 虚…

HyperWorks仿真案例:拓扑优化与激光增材制造的完美结合挖掘轻量化结构的新潜力

许多技术创新都基于自然界中生物结构的设计。通过不断进化,大自然在数百万年间已学会根据各种形状的功能对形状进行调整,从而最大程度地提高效率。当工程师设法构建坚固而轻盈的结构时,这些自然界中的示例可以提供重要线索。在目前的研究项目…

在Windows系统部署本地智能问答系统:基于百度云API完整教程

引言 在人工智能时代,搭建私有化智能问答系统能有效保护数据隐私并提升响应效率。本教程将手把手教你在Windows环境中,通过百度云API构建专属智能问答系统,全程无需服务器,仅需本地计算机即可运行! 一、环境准备 系统…

Vue的watch函数实现

<script setup> import { watch, ref, reactive, toRefs } from vue;const count ref(0); const obj reactive({name: 张三,age: 18 });// 我们可以使用toRefs&#xff0c;将reactive对象中的属性转换为ref对象&#xff0c;保持响应性&#xff01;&#xff01; const {…

Tomcat 安装使用教程

&#x1f4cc; 什么是 Tomcat&#xff1f; Apache Tomcat 是一个开源的 Java Servlet 容器&#xff0c;也是运行 Java Web 应用最常用的服务器之一&#xff0c;支持 Servlet、JSP 等规范。 &#x1f9f0; 一、准备工作 1. 系统要求 操作系统&#xff1a;Windows / Linux / m…

【邀请】点击邀请链接参加阿里云训练营活动,完成学习送礼品+户外折叠凳,一个小时就能完成

点击邀请链接参加阿里云训练营活动&#xff0c;完成学习送礼品户外折叠凳&#xff0c;快的话一个小时就能完成。 7月28日23:59前完成。 OSS进阶应用与成本优化训练营 礼品如下&#xff1a; 包尖钢笔/祈福小神仙积木/雨伞/不锈钢餐具随机发放 户外折叠凳