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

【学习笔记】计算机网络(八)—— 音频/视频服务

第8章 互联网上的音频/视频服务

文章目录

  • 第8章 互联网上的音频/视频服务
    • 8.1概述
    • 8.2 流式存储音频/视频
      • 8.2.1 具有元文件的万维网服务器
      • 8.2.2 媒体服务器
      • 8.2.3 实时流式协议 RTSP
    • 8.3 交互式音频/视频
      • 8.3.1 IP 电话概述
      • 8.3.2 IP电话所需要的几种应用协议
      • 8.3.3 实时运输协议 RTP
      • 8.3.4 实时运输控制协议RTCP
      • 8.3.5 H.323
      • 8.3.6 会话发起协议 SIP
    • 8.4 改进“尽最大努力交付”的服务
      • 8.4.1 使互联网提供服务质量
      • 8.4.2 调度和管制机制
      • 8.4.3 综合服务IntServ与资源预留协议RSVP
      • 8.4.4 区分服务DiffServ

8.1概述

📝 多媒体信息: 包括声音和图像信息

多媒体信息最主要的两个特点:

  • 第一,多媒体信息的信息量往往很大。
  • 第二,在传输多媒体数据【边传输边播放】时,对时延和时延抖动均有较高的要求。

📌 抖动的核心概念

  1. 等时 vs. 非等时
    对模拟信号要经过采样和模数转换变为数字信号,然后将一定数量的比特组装成分组进行传送。

    • 等时(Isochronous):发送端按严格固定间隔发送分组(如数字音频、视频流)。
    • 非等时(Anisochronous):分组在网络中因拥塞、路由变化、排队延迟等因素,到达时间不可预测(传统IP网络的特性)。

    在这里插入图片描述

    分组:

    • 由于分组的到达可能不按序,但将分组还原和播放时又应当是按序的。因此在发送多媒体分组时应当给每一个分组加上序号。
    • 在每一个分组增加一个时间戳(timestamp),让接收端知道所收到的每一个分组是在什么时间产生的。
  2. 抖动(Jitter)

    是指在数据传输过程中,分组到达接收端的时间间隔不稳定,导致数据流不均匀不规则的现象。

  3. 抖动的表现

    • 延迟变化(Delay Variation):比如,第一个数据包耗时 20ms,第二个 50ms,第三个 10ms → 抖动发生。

    • 数据堆积或断续:导致音频卡顿、视频跳帧、实时通话不连贯

    • 例如:

      理想情况:|--A--|--B--|--C--|(等时到达)
      实际情况:|---A---|C|--B----|(抖动导致乱序+延迟不均)
      

📊 抖动的影响

场景抖动的影响
实时音视频(VoIP/直播)声音断续、画面卡顿
网络游戏操作延迟、卡顿
金融交易系统数据不同步,影响决策

📚 抖动问题的解决

在这里插入图片描述

在接收端设置适当大小的缓存【先进先出的队列】",当缓存中的分组数达到一定的数量后再以恒定速率按顺序将这些分组读出进行还原播放。【消除了时延的抖动,但付出的代价是增加了时延。】

非等时 => 等时:

缓存使所有到达的分组都经受了迟延。由于分组以非恒定速率到达,因此早到达的分组在缓存中停留的时间较长,而晚到达的分组在缓存中停留的时间就较短。从缓存中取出分组是按照固定的时钟节拍进行的,因此,到达的非等时的分组,经过缓存后再以恒定速率读出,就变成了等时的分组

💻 传输实时数据特点:

丢失容忍(loss tolerant):宁可丢失少量分组(不能丢失太多),也不要太晚到达的分组。【在连续的音频或视频数据流中,很少量分组的丢失对播放效果的影响并不大(因为这是由人来进行主观评价的),因而是可以容忍的。】

✏️ 目前互联网提供的音频/视频服务大体上可分为三种类型:

流媒体(streaming media):流式音频/视频

  • 流式(streaming)存储音频/视频
    • 先把已压缩的录制好的音频/视频文件(如音乐、电影等)存储在服务器上。用户通过互联网下载这样的文件。但用户并不是把文件全部下载完毕后再播放,而是能够边下载边播放,即在文件下载后不久(例如,一般在缓存中存放最多几十秒)就开始连续播放。
    • 特点:
      ✅ 内容预先录制并存储在服务器(如MP4文件)。
      ✅ 采用渐进式下载自适应流媒体(如HLS/DASH)。
      ✅ 允许暂停、快进、缓冲,容忍较高延迟。
    • 例子:爱奇艺/腾讯视频/Netflix 等
  • 流式实况音频/视频
    • 一对多(而不是一对一)的通信。它的特点是:音频/视频节目不是事先录制好和存储在服务器中的,而是在发送方边录制边发送(不是录制完毕后再发送)。在接收时也要求能够连续播放。接收方收到节目的时间和节目中事件的发生时间可以认为是同时的(相差仅仅是电磁波的传播时间和很短的信号处理时间)。流式实况音频/视频按理说应当采用多播技术才能提高网络资源的利用率,但目前实际上还是使用多个独立的单播。
    • 特点:
      ✅ 内容实时采集并广播,无存储回放(或短暂延迟)。
      ✅ 需要低延迟
      ✅ 可能使用UDP + 协议优化(如RTMP、WebRTC)。
    • 例子:抖音直播/快手直播 等
  • 交互式音频/视频
    • 用户使用互联网和其他人进行实时交互式通信。例如:互联网电话或互联网电视会议。
    • 特点:
      端到端实时双向通信,延迟极低。
      ✅ 严格抗抖动和丢包(如FEC、抖动缓冲)。
      ✅ 通常基于UDP + RTP/RTCPWebRTC
    • 例子:微信语音/视频通话、腾讯会议 等
特性流式存储流式实况交互式
内容来源预存文件实时采集实时双向传输
延迟要求高容忍(秒级)中低(秒级)极低(毫秒级)
协议典型用例HTTP/HLS/DASHRTMP/WebRTCWebRTC/RTP
用户控制可暂停/跳转仅观看(无回放)实时交互
抗抖动技术大缓冲区CDN + 小缓冲动态抖动缓冲

8.2 流式存储音频/视频

在这里插入图片描述

媒体播放器(media player):一个用来【播放音频/视频节目】的【单独】的【应用程序】。

媒体播放器具有的主要功能管理用户界面解压缩消除时延抖动处理传输带来的差错

8.2.1 具有元文件的万维网服务器

元文件(meta file):是一种非常小的文件,描述或指明其他文件的一些重要信息。这里的元文件保存了有关这个音频/视频文件的信息。

在这里插入图片描述

8.2.2 媒体服务器

媒体服务器:是专门为播放流式音频/视频文件而设计的,常被称为流式服务器(streaming server)。

在这里插入图片描述

传送音频/视频文件可以使用TCP,也可以使用UDP。观看实况转播,最好首先考虑使用UDP来传送。

采用UDP 会有以下几个缺点:

  • 发送端按正常播放的速率发送流媒体数据帧,但由于网络的情况多变,在接收端的播放器很难做到始终按规定的速率播放。
  • 很多单位的防火墙往往阻拦外部UDP分组的进入,因而使用UDP传送多媒体文件时会被防火墙阻拦掉。
  • 如果在用户端希望能够控制媒体的播放,如进行暂停、快进等操作,则还需要使用另外的协议RTP和RTSP。增加了成本和复杂性。

YouTube 和Netflix,都 采用 TCP 来传送,主要步骤:

在这里插入图片描述

  • 如果用户暂停播放,那么图中的三个缓存将很快被填满,这时TCP发送缓存就暂停读取所要传送的视频文件,否则就会引起视频数据的丢失。
  • 用户继续播放时,媒体播放器每读出n bit,TCP发送缓存就可以从存储的视频文件再读取n bit。如果客户机中的两个缓存经常处于填满状态,就能够较好地应付网络中偶然出现的拥塞
  • 如果步骤②的传送速率小于步骤④的读出速率,那么客户机中的两个缓存中的存量就会逐渐减少。当媒体播放器缓存的数据被取空后,播放就不得不暂停,直到后续的视频数据重新注入进来后才能再继续播放

8.2.3 实时流式协议 RTSP

实时流式协议 RTSP(Real-Time Streaming Protocol)

  • RTSP是 IETF 的 MMUSIC 工作组(Multiparty Multimedia Session Control WG,多方多媒体会话控制工作组)开发的协议

  • RTSP现在是2.0版本

  • 又称带外协议(out-of-band protocol):RTSP本身并不传送数据,而仅仅是使媒体播放器能够控制多媒体流的传送

  • 又称互联网录像机遥控协议:用来使用户在播放从互联网下载的实时数据时能够进行控制,如:暂停/继续、快退、快进等。

  • RTSP以客户-服务器方式工作

  • RTSP是一个应用层的多媒体播放控制协议

  • RTSP的语法和操作与HTTP协议的相似——所有的请求和响应报文都是ASCII 文本。但与HTTP不同的地方是RTSP是有状态的协议(HTTP是无状态的)。

  • RTSP记录客户机所处于的状态——初始化状态播放状态暂停状态

  • RTSP控制分组既可在TCP上传送,也可在UDP上传送

  • RTSP没有定义音频/视频的压缩方案

  • RTSP没有规定音频/视频在网络中传送时应如何封装在分组中

  • RTSP没有规定音频/视频流在媒体播放器中应如何缓存

  • 在使用 RTSP 的播放器中比较著名的是苹果公司的QuickTime和Real Networks 公司的 RealPlayer

工作过程:

在这里插入图片描述

8.3 交互式音频/视频

8.3.1 IP 电话概述

狭义和广义IP电话

共同点: 在 IP 网络上进行操作。【所谓“IP 网络”就是“使用IP协议的分组交换网”的简称。这里的网络可以是互联网,也可以是包含有传统的电路交换网的互联网,不过在互联网中至少要有一个IP网络。】

不同点

  • 狭义 - 仅能电话通信
  • 广义 - 不仅仅是电话通信,还可以是进行交互式多媒体实时通信(包括话音、视像等),还可以即时传信IM(Instant Messaging)。

🌐 交互式多媒体实时通信:指通过IP网络实现的 语音、视频、数据协同传输,并支持用户之间的 实时互动平台:Zoom、微信视频等

🌐 即时传信是一种基于IP网络的 实时文本/多媒体消息交换 服务,支持用户或群组间的 低延迟通信,通常集成了状态管理(在线/离线)、消息回执、文件传输等功能。平台:微信,Slack,钉钉等

💡关键差异的直观对比

维度狭义IP电话广义IP电话
业务形态单纯语音通话语音+视频+IM+协作(如共享白板)
典型设备IP话机、SIP软电话智能手机App、浏览器、智能音箱

IP电话网关

IP电话网关(IP Telephony Gateway): 它是公用电话网IP网络接口设备

IP电话网关的作用就是:

  • 在电话呼叫阶段呼叫释放阶段进行电话信令的转换
  • 通话期间进行话音编码的转换

在这里插入图片描述

IP电话通话质量

电路交换电话网的通话质量

  • 当电路交换电话网的通信量太大时,无法拨通电话(听到的是忙音),即电话网拒绝对正在拨号的用户提供接通服务。
  • 只要拨通了电话,保证满意的通话质量。

IP电话的通话质量,主要由两个因素决定:

  • 通话双方端到端的时延和时延抖动,

  • 话音分组的丢失率。【“丢失掩蔽算法” 对丢失的话音分组进行处理】

​ 但这两个因素都是不确定的,而是取决于当时网络上的通信量。若网络上的通信量非常大以致发生了网络拥塞,
​ 那么端到端时延和时延抖动以及分组丢失率都会很高,这就导致IP电话的通话质量下降。

端到端的时延

端到端的时延不应超过250ms,否则交谈者就会感到不自然。陆地公用电话网的时延一般只有 50~70ms。但经过同步卫星的电话端到端时延就超过250ms。

IP电话端到端时延是由以下几个因素造成的:

  1. 话音信号进行模数转换要产生时延。【取决于 话音编码 的方法。】
  2. 已经数字化的话音比特流要积累到一定的数量才能够装配成一个话音分组,这也会产生时延。【取决于**话音编码**的方法。】
  3. 话音分组发送需要时间,此时间等于话音分组长度与通信线路的数据率之比。【当采用高速光纤主干网时,该时延也不大。】
  4. 话音分组在互联网中经过许多路由器存储转发时延
  5. 话音分组到达接收端在缓存中暂存所引起的时延。
  6. 将话音分组还原成模拟话音信号的数模转换也要产生一定的时延。【取决于**话音编码**的方法。】
  7. 话音信号通信线路上的传播时延。【一般都很小(卫星通信除外),通常可不予考虑】
  8. 终端设备的硬件操作系统产生接入时延
  • IP电话网关引起的接入时延约为 20~40ms
  • 用户PC声卡引起的接入时延为20~180ms
  • 有的调制解调器(如 V.34)还会再增加 20~40ms的时延(由于进行数字信号处理、均衡等)。

话音编码

目前适合IP电话使用的ITU-T标准——话音编码统一的国际标准

  • G.729话音速率为8 kbits共轭结构代数码激励线性预测 CS-ACELP(Conjugate-Structure Algebraic-Code-Excited Linear Prediction)声码器
  • G.723.1话音速率为 5.3/6.3 kbit/s线性预测编码 LPC(Linear Prediction Coding)声码器
标准比特率(kbit/s)帧大小(ms)处理时延(ms)帧长(字节)数字信号处理 MIPS
G.729810101020
G.723.15.3/6.3303020/2416
  • 比特率是输入为64 kbits 标准 PCM 信号时在编码器输出的数据率。
  • 帧大小是压缩到每一个分组中的话音信号时间长度。
  • 处理时间是对一个运行编码算法所需的时间。
  • 帧长是一个已编码的帧的字节数(不包括首部)。
  • 数字信号处理MIPS(每秒百万指令)是用数字信号处理芯片实现编码所需的最小处理机速率(以每秒百万指令为单位)。

接收端缓存空间和播放时延的大小对通话质量的影响

在这里插入图片描述

Skype IP 电话

  • 使用互联网低比特率编解码器iLBC (internet Low Bit rate Codec),进行话音的编解码和压缩。

  • Skype支持两种帧长:

    • 20ms(速率为15.2kbits,一个话音分组块为304bit)
    • 30ms(速率为13.33 kbits,一个话音分组块为400bit)。
  • Skype对话音分组的丢失进行了特殊的处理,因而能够容忍高达 30%的话音分组丢失率,通话的用户一般感觉不到话音的断续或迟延,杂音也很小。

  • Skype采用了P2P全球索引(Global Index)技术提供快速路由选择机制。

  • Skype 还采用了端对端的加密方式,保证信息的安全性。Skype 在信息发送之前进行加密,在接收时进行解密,在数据传输过程中保证了中途不被窃听

  • 户数据主要存储在P2P网络中,Skype对公共目录中存储的和用户相关的数据都采用了数字签名保证了数据无法被篡改

8.3.2 IP电话所需要的几种应用协议

在这里插入图片描述

8.3.3 实时运输协议 RTP

实时运输协议 RTP(Real-time Transport Protocol):为实时应用提供端到端的运输,但不提供任何服务质量的保证。需要发送的多媒体数据块(音频/视频)经过压缩编码处理后,先送给RTP封装成为RTP分组(也可称为RTP报文),分组装入运输层的UDP用户数据报后,再向下递交给IP层。

可以视为应用层的一部分

  • 在应用程序的发送端,开发者必须编写用RTP封装分组的程序代码,然后把RTP 分组交给 UDP套接字接口。
  • 在应用程序的接收端,RTP分组通过 UDP 套接字接口进入应用层后还要利用开发者编写的程序代码将RTP分组中把应用数据块提取出

可以视为运输层的一部分

  • 封装了多媒体应用的数据块,并且由于RTP向多媒体应用程序提供了服务(如时间和序号)

RTP分组

RTP分组只包含RTP数据,而控制是由另一个配套使用的 RTCP 协议提供的。

RTP端口号

  • RTP 在端口号1025 到 65535 之间选择一个未使用的偶数 UDP端口号
  • 同一次会话中的 RTCP 则使用下一个奇数 UDP端口号
  • 端口号 50045005 则分别用作RTPRTCP默认端口号

RTP首部格式

在这里插入图片描述

在RTP分组的首部中,前12个字节是必需的,而12字节以后的部分则是可选的。

  • 有效载荷类型(payload type)占7位。这个字段指出后面的 RTP 数据属于何种格式的应用。
    • 对于音频有效载荷:μ律PCM(0),GSM(3), LPC(7);A律PCM (8),G.722(9),G.728(15)等。
    • 对于视频有效载荷:活动 JPEG (26)H.261 (31),MPEGI (32),MPEG2 (33)等。
  • 序号占16位。对每一个发送出的RTP分组,其序号加1。在一次RTP会话开始时的初始序号是随机选择的。序号使接收端能够发现丢失的分组,同时也能将失序的RTP分组重新按序排列好。
  • 时间戳 - 媒体时间戳占32位。时间戳反映了RTP 分组中数据的第一个字节的采样时刻
    • 在一次会话开始时时间戳的初始值也是随机的。即使在没有信号发送时,时间戳的数值也要随时间而不断地增加。
    • 接收端使用时间戳可准确知道应当在什么时间还原哪一个数据块,从而消除时延的抖动。
    • 时间戳还可以用来使视频应用中声音和图像同步。
  • 同步源标识符占 32位同步源标识符SSRC(Synchronous SouRCe identifier)是一个数,用来标志 RTP 流(stream)的来源
    • SSRC与IP地址无关,在新的 RTP 流开始时随机地产生。
    • RTP使用UDP传送,因此可以有多个RTP流复用到一个UDP用户数据报中。
  • 参与源标识符占 32位
    • 参与源标识符CSRC(Contributing SouRCe identifier),最多可有15个。用来标志来源于不同地点的 RTP 流
    • 多播环境中,可以用中间的一个站(叫作混合站mixer)把发往同一个地点的多个 RTP 流混合成一个流,在目的站再根据CSRC的数值把不同的RTP流分开
  • 参与源数占4位。参与源标识符的数目。
  • 版本占2位。当前使用的是版本2。
  • 填充P占1位。P置1,表示这个RTP分组的数据有若干填充字节。在数据部分的最后一个字节用来表示所填充的字节数。
  • 扩展X占1位。X置1,表示在此RTP首部后面还有扩展首部。
  • 标记M占1位。M置1,表示这个RTP分组具有特殊意义。

8.3.4 实时运输控制协议RTCP

实时运输控制协议 RTCP(RTP Control Protocol) 主要功能是:

  • 服务质量的监视与反馈、
  • 媒体间的同步(如某一个RTP发送的声音和图像的配合),
  • 以及多播组中成员的标志。

RTCP分组

  • RTCP分组(也可称为RTCP报文)也使用 UDP来传送,但 RTCP 并不对音频/视频分组进行封装。
  • 由于RTCP 分组很短,因此可把多个 RTCP分组封装在一个UDP用户数据报中。
  • RTCP分组周期性地在网上传送,它带有发送端和接收端对服务质量的统计信息报告(例如,已发送的分组数和字节数、分组丢失率、分组到达时间间隔的抖动等)。

RTCP分组类型

类型缩写表示意义
200SR发送端报告
201RR接收端报告
202SDES源点描述
203BYE结束
204APP特定应用

结束分组 BYE 表示关闭一个数据流

特定应用分组 APP 使应用程序能够定义新的分组类型

接收端报告分组 RR 用来使接收端周期性地向所有的点多播方式进行报告。

  • 发送RR分组有两个目的:

    • 第一,可以使所有的接收端和发送端了解当前网络的状态;
    • 第二,可以使所有发送 RTCP 分组的站点自适应地调整自己发送 RTCP分组的速率,使得起控制作用的RTCP分组不要过多地影响传送应用数据的RTP分组在网络中的传输。
  • 接收端每收到一个 RTP流(一次会话包含有许多的RTP流)就产生一个接收端报告分组RR

  • RR分组的内容有:

    • 所收到的RTP流的SSRC
    • 该RTP流的分组丢失率(若分组丢失率太高,发送端就应当适当降低发送分组的速率);
    • 在该RTP流中的最后一个RTP分组的序号
    • 分组到达时间间隔的抖动等。

发送端报告分组SR 用来使发送端周期性地向所有接收端多播方式进行报告。

  • 发送端每发送一个RTP流,就要发送一个发送端报告分组SR
  • SR分组的主要内容有:
    • 该RTP流的同步源标识符 SSRC;
    • 该RTP流中最新产生的RTP分组的时间戳绝对时钟时间(或墙上时钟时间 wall clock time);
      【要传送视频图像和相应的声音就需要传送两个流。绝对时钟时间就可进行图像和声音的同步。】
    • 该 RTP 流包含的分组数
    • 该 RTP 流包含的字节数

源点描述分组SDES 给出会话中参加者的描述,它包含参加者的规范名NAME(Canonical NAME)。规范名是参加者的电子邮件地址的字符串

8.3.5 H.323

H.323 概述

H.323 是互联网的端系统之间进行实时声音和视频会议的标准。

H.323不是一个单独的协议而是一组协议。

H.323 包括系统和构件的描述、呼叫模型的描述、呼叫信令过程、控制报文、复用、话音编解码器、视像编解码器,以及数据协议等。

H.323 核心构件

组件功能类比
H.323 终端(Terminal)发起/接收音视频的设备(IP 电话、视频会议终端)
【可以是一个PC,也可以是运行H.323程序的单个设备】
参会者
网关(Gateway)连接 H.323 网络与传统电话网(PSTN)
【连接到两种不同的网络,使得H.323 网络可以和非H.323 网络(如公用电话网)进行通信。仅在一个H.323网络上通信的两个终端就不需要使用网关。】
翻译官
网闸(Gatekeeper)负责地址解析(地址转换)、带宽管理、访问控制(授权)和计费功能
还可以帮助 H.323 终端找到距离公用电话网上的被叫用户最近的一个网关。
调度员
多点控制单元MCU(Multipoint Control Unit)多方会议控制(混音、视频切换)
【管理会议资源、确定使用的音频或视频编解码器】
会议主持人

H.323 体系结构

在这里插入图片描述

  • 音频编解码器 H.323要求至少要支持G.711(64kbits的PCM)。建议支持如G.722(16 kbit的ADPCM),G.723.1(5.3/6.3的LPC),G.728(16 kbits 的低时延 CELP)和 G.729(8 kbit/s的CS-ACELP)等。
  • 视频编解码器 H.323 要求必须支持 H.261标准(176x144 像素)。
  • H.255.0登记信令,即登记/接纳/状态 RAS(Registration/Admission/Status)。H.323终端和网闸使用RAS来完成登记、接纳控制和带宽转换等功能。
    • 终端注册/注销:终端向网闸注册自身的联系信息(如 IP 地址、别名),加入 H.323 网络管理域。
    • 地址解析:网闸将终端的别名(如电话号码 “1001”)映射为网络地址(IP:Port)。
    • 权限认证:验证终端身份(如密码、证书),防止非法接入。
    • 状态维护:定期发送心跳消息(Keepalive),监控终端在线状态。
  • H.225.0呼叫信令,用来在两个 H.323 端点之间建立连接
  • H.245 控制信令,用来交换端到端的控制报文,以便管理 H.323端点的运行。
  • T.120 数据传送协议 这是与呼叫相关联的数据交换协议。用户在参加音频/视频会议时,可以和其他与会用户共享屏幕上的白板。由于使用TCP协议,因此能够保证数据传送的正确(在传送音频/视频文件时使用的是 UDP,因此不能保证服务质量)。
  • 实时运输协议 RTP实时运输控制协议 RTCP

H.323是在以已有的电路交换电话网为基础,增加了IP电话的功能(即远距离传输采用IP网络)。H.323的信令也沿用原有电话网的信令模式,因此与原有电话网的连接比较容易。

8.3.6 会话发起协议 SIP

会话发起协议SIP(Session Initiation Protocol)

  • SIP 以互联网为基础,而把IP 电话视为互联网上的新应用。
  • SIP 使用文本方式客户-服务器协议
  • SIP 是基于报文的协议。SIP使用了HTTP的许多首部、编码规则、差错码以及一些鉴别机制。
  • SIP 还有一个配套协议是会话描述协议SDP(Session Description Protocol)——使电话会议的参加者应当能够动态地加入和退出
  • SIP 系统只有两种构件:
    • 用户代理(user agent)两个程序
      • 用户代理客户 UAC(User Agent Client),用来发起呼叫,
      • 用户代理服务器 UAS(User Agent Server),用来接受呼叫。
    • 网络服务器(network server)两个程序
      • 代理服务器(proxy server)。接受来自主叫用户的呼叫请求(实际上是来自用户代理客户的呼叫请求),并将其转发给被叫用户或下一跳代理服务器,然后下一跳代理服务器再把呼叫请求转发给被叫用户(实际上是转发给用户代理服务器)。
      • 重定向服务器(redirect server)。不接受呼叫,它通过响应告诉客户下一跳代理服务器的地址,由客户按此地址向下一跳代理服务器重新发送呼叫请求。
  • SIP地址可以是电话号码,也可以是电子邮件地址、IP地址或其他类型的地址。SIP的地址格式,例如:
    • 电话号码 sip:zhangsan@8625-87654321
    • IPv4 地址 sip:zhangsan@201.12.34.56
    • 电子邮件地址 sip:zhangsan@163.com
  • SIP 会话 在这里插入图片描述

8.4 改进“尽最大努力交付”的服务

8.4.1 使互联网提供服务质量

服务质量 QoS 是服务性能的总效果,此效果决定了一个用户对服务的满意程度。服务质量可用若干基本的性能指标来描述,包括可用性、差错率、响应时间、吞吐量、分组丢失率、连接建立时间、故障检测和改正时间等。

路由器分类:

分类(classification),即路由器根据某些准则对输入分组进行分类,然后对不同类别的通信量给予不同的优先级。

路由器管制:

路由器能够对某个数据流进行通信量的管制(policing),使得这个数据流不要影响其他正常的数据流在网络中通过。

路由器调度:

调度,能够决定数据的发送顺序。

呼叫接纳(call admission):

数据流预先声明它所需的服务质量,然后或者被准许进入网络(能得到所需的服务质量),或者被拒绝进入网络(当所需的服务质量不能得到满足)

8.4.2 调度和管制机制

1、调度机制

“调度”就是指排队的规则

默认排队规则就是先进先出FIFO(First In First Out)

  • 当队列已满时,后到达的分组就被丢弃。
  • 最大缺点就是不能区分时间敏感分组和一般数据分组。
  • 不公平,排在长分组后面的短分组要等待很长的时间。

按优先级排队。假定优先级分为两种,因此有两个队列:高优先级队列和低优先级队列。

  • 在到达路由器后就由分类器(又称为分类程序)对其进行优先级分类,然后按照类别进入相应的队列。

  • 只要高优先级队列中有分组在内,就从高优先级队列中按照链路速率取出排在队首的分组。

  • 只有当高优先级队列已空时,才能轮到低优先级队列中的分组输出到链路上。

  • 缺点:在高优先级队列中总是有分组时,低优先级队列中的分组就长期得不到服务。

    在这里插入图片描述

公平排队FQ(Fair Queuing)

  • 公平排队是对每种类别的分组流设置一个队列,然后轮流使每一个队列一次只能发送一个分组。
  • 对于空的队列就跳过去。
  • 缺点:长分组得到的服务时间长,而短分组就比较吃亏,并且公平排队并没有区分分组的优先级。

加权公平排队 WFQ(Weighted Fair Queuing)

  • 分组到达后就进行分类,然后送交与其类别对应的队列(假定分为三类)。

  • 三个队列按顺序依次把队首的分组发送到链路。遇到队列空就跳过去。

  • 根据各类别的优先级不同,每种队列分配到的服务时间也不同。

    可以给队列 i 指派一个权重 wi队列 i 得到的平均服务时间wi / (Σwj) ,这里 ∑wj 是对所有的非空队列的权重求和

    若路由器输出链路的数据率(即带宽)为R,那么队列 i 将得到的有保证的数据率 Ri 应为 Ri = (R × wi) / (Σwj)

    在这里插入图片描述

2、管制机制

对一个数据流,我们可根据以下三个方面进行管制:

  • 平均速率:是指在一定的时间间隔内通过的分组数。但这个时间间隔的选择也说明了这个指标的严格程度。

    限定数据流的平均速率为每秒50个分组和平均速率为每分钟3000个分组,虽然这两个指标的平均值都一样,但其严格程度却不同。假定有一个数据流,有一秒钟通过了1000个分组,但一分钟平均下来仍不超过 3000个,那么这个数据流的平均速率符合后面一个指标,但却远远不满足前面的指标。

  • 峰值速率:限制了数据流在非常短的时间间隔内的流量。“非常短的时间间隔”需要指明时间间隔是多少。峰值速率也同时受到链路带宽的限制。

    例如,限定数据流的平均速率为每分钟3000个分组,但同时限定其峰值速率不超过每秒1000个分组。

  • 突发长度:网络也限制在非常短的时间间隔内连续注入到网络中的分组数。

漏桶管制器(leaky bucket policer)(可简称为漏桶) 可对进入网络的分组流按以上三个指标进行管制:

在这里插入图片描述

  • 漏桶是一种抽象的机制。

  • 漏桶中 最多可装入b个权标(token)。只要漏桶中的权标数小于b个,新的权标就 以每秒r个权标的恒定速率加入到漏桶 中。但若 漏桶已装满了b个权标,则新的权标就不再装入 ,而漏桶的权标数达到最大值b。

  • 漏桶管制分组流进入网络的过程如下:

    • 分组进入网络前,先要进入一个队列中等候漏桶中的权标

      • 漏桶中有权标,就可从漏桶取走一个权标,然后就准许一个分组从队列进入到网络。

      • 漏桶已无权标,就要等新的权标注入到漏桶,再把这个权标拿走后才能准许下一个分组进入网络。

        “准许进入网络”不等于“已经进入了网络”,分组进入网络还需要时间,取决于输出链路的带宽和分组在输出端的排队情况。

    • 假定在时间间隔t 中把漏桶中的全部b个权标都取走,但在这个时间间隔内漏桶又装入了rt个新的权标,因此在任何时间间隔t内准许进入网络的分组数的最大值为rt+b控制权标进入漏桶的速率r就可对分组进入网络的速率进行管制。

3、漏桶机制与加权公平排队相结合: 管制 + 调度

把漏桶机制与加权公平排队结合起来,可以控制队列中的最大时延

在这里插入图片描述

假定有n个分组流输入到一个路由器,复用后从一条链路输出。每一个分组流使用漏桶机制进行管制,漏桶参数为 bi 和 ri,i=1,2,…,n

当分组流通过漏桶后等待 WFQ服务时,一个分组所经受的最大时延?

分组流i。

  • 假定漏桶i已经装满了bi个权标。表示分组流i不需要等待就可从漏桶中拿走bi个权标,因此6个分组可以马上从路由器输出。
  • 分组流i 得到的数据率Ri = (R × wi) / (Σwj)。
  • bi个分组中最后一个分组所经受时延最大,等于传输这bi个分组所需的时间 dmax,即 bi 除以传输速率: dmax = [bi · (Σwj)] / (R × wi)

8.4.3 综合服务IntServ与资源预留协议RSVP

综合服务IntSery和资源预留协议RSVP都较复杂,很难在大规模的网络中实现

综合服务IntServ(Integrated Services): 可对单个的应用会话提供服务质量的保证

IntServ 特点

  • 资源预留。一个路由器需要知道给不断出现的会话已经预留了多少资源(即链路带宽和缓存空间)。

  • 呼叫建立。在一个会话开始之前必须先有一个呼叫建立(又称为呼叫接纳)过程,它需要在其分组传输路径上的每一个路由器都参加。每一个路由器都要确定该会话所需的本地资源是否够用,同时还不要影响到已经建立的会话的服务质量

    一个需要服务质量保证的会话: 在源点到终点路径上的每一个路由器预留足够的资源,以保证其端到端的服务质量的要求。

IntServ 定义了两类服务:

  • 有保证的服务(guaranteed service),可保证一个分组在通过路由器时排队时延有一个严格的上限
  • 受控负载的服务(controlled-load service),可以使应用程序得到比通常的“尽最大努力”更加可靠的服务

IntServ 共有以下四个组成部分:

  • 资源预留协议RSVP,是 IntServ 的信令协议。
  • 接纳控制(admission control),用来决定是否同意对某一资源的请求。
  • 分类器(classifer),用来把进入路由器的分组进行分类,并根据分类的结果把不同类别的分组放入特定的队列。
  • 调度器(scheduler),根据服务质量要求决定分组发送的前后顺序。

资源预留协议 RSVP(ReSource reserVationProtocol)

会话声明它所需的服务质量,以便使路由器能够确定是否有足够的资源来满足该会话的需求。

RSVP协议是面向终点

RSVP 协议不是运输层协议而是网络层的控制协议,RSVP不携带应用数据

资源预留协议RSVP工作原理:

  • 资源预留协议RSVP在进行资源预留时采用了多播树的方式。

  • PATH 报文

    • 发送端发送PATH 报文(即存储路径状态报文),给所有的接收端指明通信量的特性。

    • 每个中间的路由器都要转发 PATH报文

  • RESV报文

    • 接收端RESV报文(即资源预留请求报文)进行响应

    • 路径上的每个路由器RESV报文的请求都可以拒绝接受

      • 当请求被某个路由器拒绝时,路由器发送一个差错报文接收端,从而终止了这一信令过程。
      • 当请求被接受时,链路带宽和缓存空间就被分配给这个分组流,而相关的流(ow)状态信息保留在路由器中。

在这里插入图片描述

IntServ 体系结构分为前台和后台两个部分。

  • 组成部分:

    • 前台部分,包括两个功能块,即分类器与分组转发分组的调度器。每一个进入路由器的分组都要通过这两个功能块。

    • 后台部分,包括四个功能块两个数据库。这四个功能块是:

      • 路由选择协议,负责维持路由选择数据库。由此可查找出对应于每一个目的地址和每一个流的下一跳地址。

      • RSVP协议,为每一个流预留必要的资源,并不断地更新通信量控制数据库

      • 接纳控制,当一个新的流产生时,RSVP就调用接纳控制功能块,以便确定是否有足够的资源可供这个流使用。

      • 管理代理,用来修改通信量控制数据库和管理接纳控制功能块,包括设置接纳控制策略。

  • 存在的主要问题:

    • 状态信息的数量与流的数目成正比。在大型网络中,按每个流进行资源预留会产生很大的开销
    • IntServ 体系结构复杂
      若要得到有保证的服务,所有的路由器都必须装有 RSVP、接纳控制、分类器和调度器。这种路由器称为RSVP路由器。在应用数据传送的路径中只要有一个路由器不是RSVP路由器,整个的服务就又变为“尽最大努力交付”了。
    • 综合服务 IntServ 所定义的服务质量等级数量太少,不够灵活。

8.4.4 区分服务DiffServ

1、区分服务的基本概念

区分服务 DiffServ (Differentiated Services), 有时简写为DS。 是 网络流量分类管理 的一种方式,通过 给分组打标签(标记优先级),让路由器根据标签提供不同的服务质量(QoS)。

有区分服务功能的节点就称为DS节点。

区分服务 DiffServ的要点:

  • DiffServ 不改变网络的基础结构,在路由器中增加区分服务的功能

    DiffServ将IP协议中原有8位的IPv4服务类型字段IPv6 通信量类字段重新定义为区分服务DS。路由器根据DS字段的值来处理分组的转发。利用DS 字段的不同数值就可提供不同等级的服务质量。

    • DS字段现在只使用其中的前6位,即区分服务码点DSCP(Differentiated Services Code Point),
    • 后面的两位目前不使用,记为CU(Currently Unused)

由 DS 字段的值所确定的服务质量实际上就是由 DS 字段中 DSCP 的值来确定的。

  • 网络被划分为许多个DS域(DS Domain), 一个DS域在一个管理实体的控制下实现同样的区分服务策略。DiffServ将所有的复杂性放在DS 域的边界节点(boundary node)中而使 DS 域内部路由器工作得尽可能简单。
  • 边界路由器 的功能较多,可分为分类器(classifier)通信量调节器(conditioner)两大部分。
    • 调节器又由标记器(marker)整形器(shaper)测定器(meter)三个部分组成。
  • 提供了一种聚合(aggregation)功能。DiffServ是把若干个流根据其DS值聚合成少量的流。路由器对相同DS 值的流都按相同的优先级进行转发。不需要使用 RSVP 信令。

在这里插入图片描述

2、每跳行为 PHB

“行为”就是指在转发分组时路由器对分组是怎样处理的。例子:“首先转发这个分组”或“最后丢弃这个分组”。

“每跳”是强调这里所说的行为只涉及本路由器转发的这一跳的行为,而与下一个路由器怎样处理无关。

定义了两种 PHB:

  • 迅速转发PHB(Expedited Forwarding PHB) 可记为EF PHB,或 EF。对应于EF的区分服务码点DSCP的值是101110

    • EF指明离开一个路由器的通信量的数据率必须等于或大于某一数值
    • 用来构造通过 DS 域的一个低丢失率、低时延、低时延抖动、确保带宽的端到端服务(即不排队或很少排队)——又称为Premium(优质)服务
  • 确保转发 PHB(Assured Forwarding PHB) 可记为 AF PHBAF

    • DSCP的第0~2位把通信量划分为四个等级(分别为001,010,011和100),并给每一种等级提供最低数量的带宽和缓存空间。

    • 对于其中的每一个等级再用DSCP的第3~5位划分出三个“丢弃优先级”(分别为010,100和110,从最低丢弃优先级到最高丢弃优先级)

      当发生网络拥塞时,对于每一个等级的AF,路由器就首先把“丢弃优先级”较高的分组丢弃。

对比维度区分服务(DiffServ)综合服务(IntServ/RSVP)
核心思想基于类(Class-Based):分组按 DSCP 标记分类处理基于流(Flow-Based):为每个连接预留资源(端到端保障)
资源管理无严格预留,仅优先级调度严格预留带宽/延迟(通过 RSVP 信令协议)
复杂度✅ 低(路由器只需处理少数 PHB 行为)❌ 高(需维护每一条流的状态)
扩展性✅ 强(适合大规模网络,如互联网)❌ 弱(仅适用于小规模网络,如企业内网)
服务质量保证相对保障(依赖优先级标记)绝对保障(硬性预留资源)
标记方式使用 IP 头部 DSCP 字段(6 位编码)依赖 RSVP 信令协议(PATH/RESV 报文)
典型应用互联网 ISP、多业务企业网视频会议专线、高要求实时业务
拥塞处理通过优先级调度缓解拥塞直接拒绝无法满足 QoS 的新流

参考教材:

计算机网络(第8版) (谢希仁) (Z-Library).pdf

相关文章:

【学习笔记】计算机网络(八)—— 音频/视频服务

第8章 互联网上的音频/视频服务 文章目录 第8章 互联网上的音频/视频服务8.1概述8.2 流式存储音频/视频8.2.1 具有元文件的万维网服务器8.2.2 媒体服务器8.2.3 实时流式协议 RTSP 8.3 交互式音频/视频8.3.1 IP 电话概述8.3.2 IP电话所需要的几种应用协议8.3.3 实时运输协议 RTP…...

OpenCv高阶(三)——图像的直方图、图像直方图的均衡化

目录 一、直方图 1、计算并显示直方图 2、使用matplotlib方法绘制直方图(不划分小的子区间) 3、使用opencv的方法绘制直方图 (划分16个小的子亮度区间) 4、绘制彩色图像的直方图,将各个通道的直方图值都画出来 二、…...

OpenCV 图形API(39)图像滤波----同时计算图像在 X 和 Y 方向上的一阶导数函数SobelXY()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::gapi::SobelXY 函数是 OpenCV 的 G-API 模块中用于同时计算图像在 X 和 Y 方向上的一阶导数(即 Sobel 边缘检测)的一…...

领麦微:电炖锅红外测温传感器应用,告别糊锅干烧

领麦微红外测温传感器在电炖锅中的应用,特别是在应对高温环境、实现精准测温以保留食材营养、有效防止干烧与糊锅现象,以及提供安全烹饪新保障等方面,展现出了其独特的技术优势和应用价值。以下是对这些应用特点的深入剖析: 一、高…...

(Linux操作系统)自定义shell的实现

讲自定义shell之前我们先看一个东西,那就是进程替换,我们想要父进程fork之后的子进程之后运行一个全新的程序那该怎么办呢? 这里就要用一个叫做进程替换的一个东西了,程序替换是通过特定的接⼝,加载磁盘上的⼀个全新的…...

安卓jks提取pem和pk8文件

你需要安装: Java Keytool OpenSSL 系统要求:Mac/Linux/Windows 都可以。 keytool -importkeystore -srckeystore holder-keystore.jks -destkeystore holder-keystore.p12 -srcstoretype JKS -deststoretype PKCS12 -srcstorepass yzhafzKPj4 -dest…...

人脸检测-人脸关键点-人脸识别-人脸打卡-haar-hog-cnn-ssd-mtcnn-lbph-eigenface-resnet

链接:https://pan.baidu.com/s/1VhGdyIW5GWuTNkfbCEc5eA?pwdz0eo 提取码:z0eo --来自百度网盘超级会员V2的分享 创建环境 conda create -n 环境名称python3.8 conda activate 环境名称 然后配置环境 pip install requirements.txt 运行程序&…...

Gobuster :dir、dns、vhost

Gobuster 及其相关技术知识​​必须​​用于法律明确允许的场景!!! 1. dir 模式:目录/文件枚举 用途:扫描目标网站的目录和文件,常用于发现隐藏资源或敏感文件。 ​​关键参数​​: -u URL&am…...

Vue+Threejs项目性能优化

使用Vue和Three.js开发的项目,但运行一段时间后电脑内存就满了,导致性能下降甚至崩溃,分析内存泄漏的原因优化如下: 资源释放管理 手动释放Three.js资源: 在Vue组件的beforeDestroy或destroyed生命周期中&#xff0…...

Leetcode - 双周赛135

目录 一、3512. 使数组和能被 K 整除的最少操作次数二、3513. 不同 XOR 三元组的数目 I三、3514. 不同 XOR 三元组的数目 II四、3515. 带权树中的最短路径 一、3512. 使数组和能被 K 整除的最少操作次数 题目链接 本题实际上求的就是数组 nums 和的余数,代码如下&…...

[特殊字符] PostgreSQL MCP 开发指南

简介 🚀 PostgreSQL MCP 是一个基于 FastMCP 框架的 PostgreSQL 数据库交互服务。它提供了一套简单易用的工具函数,让你能够通过 API 方式与 PostgreSQL 数据库进行交互。 功能特点 ✨ 🔄 数据库连接管理与重试机制🔍 执行 SQL…...

等离子体浸没离子注入(PIII)

一、PIII 是什么?基本原理和工艺 想象一下,你有一块金属或者硅片(就是做芯片的那种材料),你想给它的表面“升级”,让它变得更硬、更耐磨,或者有其他特殊功能。怎么做呢?PIII 就像是用…...

TinyEngine 2.4版本正式发布:文档全面开源,实现主题自定义,体验焕新升级!

本文由体验技术团队李璇原创。 前言 TinyEngine低代码引擎使开发者能够定制低代码平台。它是低代码平台的底座,提供可视化搭建页面等基础能力,既可以通过线上搭配组合,也可以通过cli创建个人工程进行二次开发,实时定制出自己的低…...

gemini讲USRP

您好!USRP (Universal Software Radio Peripheral) 是一种软件无线电 (SDR) 设备系列,由 Ettus Research (现为 National Instruments 旗下公司) 开发和销售。USRP 提供了一个灵活且可配置的平台,用于设计、原型开发和部署各种无线通信系统。…...

智能超表面通信控制板--通道电压并行控制版

可重构智能超表面(Reconfigurable Intelligent Surface, RIS)技术是一种新兴的人工电磁表面技术,它通过可编程的方式对电磁波进行智能调控,从而在多个领域展现出巨大的应用潜力。超表面具有低成本、低能耗、可编程、易部署等特点&…...

Spring Task(笔记)

介绍: 应用场景: cron表达式: cron表达式在线生成器: 入门案例:...

YOLOv3的改进思路与方法:解析技术难点与创新突破

YOLOv3作为目标检测领域的经典算法,凭借其出色的速度和性能平衡获得了广泛应用。然而,随着计算机视觉技术的不断发展,YOLOv3在某些场景下的局限性也逐渐显现。本文将深入分析YOLOv3的不足之处,并系统介绍常见的改进策略和方法&…...

【解锁元生代】ComfyUI工作流与云原生后端的深度融合:下一代AIGC开发范式革命

## 从单机到云原生的认知跃迁 当2023年Stable Diffusion WebUI还在争夺本地显卡性能时,ComfyUI已悄然开启工作流模块化革命;当2024年AI绘画工具陷入"参数调优内卷",云原生技术正重塑AI开发的基础设施层。二者的深度融合&#xff0…...

shell 编程之正则表达式与文本处理器

目录 一、正则表达式 1. 概念 2. 作用 3. 分类 二、基础正则表达式(BRE) grep 命令选项 三、扩展正则表达式(ERE) 与 BRE 的区别 四、文本处理器 1. sed 工具 2. awk 工具 五、总结 总结对比 元字符总结 工具对比与…...

Shell编程之正则表达式与文本处理器

目录 一、引言 二、正则表达式 2.1 定义与用途 2.2 基础正则表达式 2.2.1 查找特定字符 2.2.2 利用中括号 “[]” 查找集合字符 2.2.3 查找行首 “^” 与行尾字符 “$” 2.2.4 查找任意一个字符 “.” 与重复字符 “*” 2.2.5 查找连续字符范围 “{}” 2.3 元字符总结…...

TMDOG——语言大模型进行意图分析驱动后端实践

语言大模型进行意图分析驱动后端实践 项目概述 项目地址:https://github.com/TMDOG666/AI_Backend_Demo 该项目通过语言大模型,通过分析用户意图、拆分任务、构建API调用链来驱动后端实践。 以一个简单的教务系统后端为例,将教务系统后端…...

未启用CUDA支持的PyTorch环境** 中使用GPU加速解决方案

1. 错误原因分析 根本问题:当前安装的PyTorch是CPU版本,无法调用GPU硬件加速。当运行以下代码时会报错:model YOLO("yolov8n.pt").to("cuda") # 或 .cuda()2. 解决方案步骤 步骤1:验证CUDA可用性 在Pyth…...

【mysql】Mac 通过 brew 安装 mysql 、启动以及密码设置

Mac 通过 brew 安装 mysql 、启动以及密码设置 使用 brew 安装 mysqlmysql 启动mysql密码设置参考文章: 使用 brew 安装 mysql brew install mysqlmysql 启动 下载完毕,终端告诉我们mysql数据库没有设置密码的,我们可以直接执行 mysql -u r…...

Vue2 nextTick

核心源码位置 Vue 2 的 nextTick 实现主要在 src/core/util/next-tick.js 文件中。 完整源码结构 import { noop } from shared/util import { handleError } from ./error import { isIE, isIOS, isNative } from ./envexport let isUsingMicroTask falseconst callbacks …...

Ubuntu 安装 NVIDIA显卡驱动、CUDA 以及 CuDNN工具

文章目录 一、简介二、查看显卡设备三、安装显卡驱动四、安装CUDA工具箱五、安装CuDNN小结 一、简介 NVIDIA 驱动:操作系统与 NVIDIA 显卡硬件之间的桥梁,负责驱动显卡硬件的运行,显卡的“底层操作系统”,一切的基础。CUDA&#…...

LeetCode算法题(Go语言实现)_50

题目 现有一个包含所有正整数的集合 [1, 2, 3, 4, 5, …] 。 实现 SmallestInfiniteSet 类: SmallestInfiniteSet() 初始化 SmallestInfiniteSet 对象以包含 所有 正整数。 int popSmallest() 移除 并返回该无限集中的最小整数。 void addBack(int num) 如果正整数 …...

idea报错java: 非法字符: ‘\ufeff‘解决方案

解决方案步骤以及说明 BOM是什么?1. BOM的作用2. 为什么会出现 \ufeff 错误?3. 如何解决 \ufeff 问题? 最后重新编译,即可运行!!! BOM是什么? \ufeff 是 Unicode 中的 BOM&#xff0…...

WPF依赖注入IHostApplicationLifetime关闭程序

WPF依赖注入IHostApplicationLifetime关闭程序 使用Application.Current.Shutdown();退出会报异常 应该使用 app.Dispatcher.InvokeShutdown(); Application.Current.Shutdown();app.Dispatcher.InvokeShutdown();static App app new();[STAThread]public static void Main(…...

如何在 IntelliJ IDEA 中安装通义灵码 - AI编程助手提升开发效率

随着人工智能技术的飞速发展,AI 编程助手已成为提升开发效率和代码质量的强大工具。在众多 AI 编程助手之中,阿里云推出的通义灵码凭借其智能代码补全、代码解释、生成单元测试等丰富功能,脱颖而出,为开发者带来了全新的编程体验。…...

【力扣】两两交换链表中的节点

两两交换链表中的节点 代码: /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *n…...

数据共享交换平台之文件交换

数据共享交换平台的文件交换管理功能提供部门与部门之间的文件交换通道,满足跨部门之间文件交换需求。文件交换需要能够按照交换业务场景对交换通道进行分类管理。文件交换管理需满足如下要求: 1.文件交换统计:支持查看本部门与其他部门之间…...

什么是全球代理?如何选择全球代理服务?

在全球化不断深化的今天,互联网已经成为人类沟通、工作和学习的重要纽带。而全球代理则是这一纽带上的关键技术之一,它赋予了我们探索不同地区网络资源的能力。今天,我们来聊聊什么是全球代理、它能做什么,以及如何选择合适的全球…...

Spring Boot整合Kafka的详细步骤

1. 安装Kafka 下载Kafka:从Kafka官网下载最新版本的Kafka。 解压并启动: 解压Kafka文件后,进入bin目录。 启动ZooKeeper:./zookeeper-server-start.sh ../config/zookeeper.properties。 启动Kafka:./kafka-server-…...

【正点原子STM32MP257连载】第四章 ATK-DLMP257B功能测试——USB WIFI测试 #WIFI蓝牙二合一 #RTL8733BU

1)实验平台:正点原子ATK-DLMP257B开发板 2)浏览产品:https://www.alientek.com/Product_Details/135.html 3)全套实验源码手册视频下载:正点原子资料下载中心 文章目录 第四章 ATK-DLMP257B功能测试——USB…...

Doip功能寻址走UDP协议

目前使用 connect()函数的UDP客户端 ,这里接收数据 解析的地方 查看一下。 如果使用 bind()、sendto()、recvfrom() 组合 那么返回值 和发送要在做调整,,根据业务需要后续在调整 其余的 和原来的 逻辑都是一样的,只是协议变了而已。 if serv…...

硬件电路设计之51单片机(2)

声明:绘制原理图和PCB的软件为嘉立创EDA。根据B站尚硅谷嵌入式之原理图&PCB设计教程学习所作个人用笔记。 目录 一、原理图详解 1、TypeC接口 (1)TypeC接口介绍 (2)TypeC原理图 2、5V转3.3V 3、单片机电源开…...

Deeplizard 深度学习课程(一)—— Pytorch 和 Tensor 简介

前言 该pytorch笔记参考deeplizard官方网站课程,有相应视频和博客,链接如下: deeplizardhttps://deeplizard.com/learn/video/v5cngxo4mIg 1.Pytorch 简介 PyTorch 是一个深度学习框架和一个科学计算包。PyTorch 的科学计算方面主要是 PyTo…...

Delphi HMAC算法

1. 前言 今天做一个三方接口,接口文档描述签名采用MD5,但是实际测试过程中,始终校验不通过,经过和三方沟通,才知道采用的是HMAC-MD5。由于Delphi7没有对HMAC的支持,则采用XE版本来支持。本次使用Delphi XE …...

Ubuntu服务器性能调优指南:从基础工具到系统稳定性提升

一、性能监控工具的三维应用 1.1 监控矩阵构建 通过组合工具搭建立体监控体系: # 实时进程监控 htop --sort-keyPERCENT_CPU# 存储性能采集 iostat -dx 2# 内存分析组合拳 vmstat -SM 1 | awk NR>2 {print "Active:"$5"MB Swpd:"$3"…...

深度解析C++开源OCR引擎:架构、编译优化与工业级部署指南

1. 引言:OCR技术演进与现状分析 光学字符识别(OCR)技术经历了从传统模式识别到深度学习的三代发展: 第一代:基于模板匹配(1970s-1990s) 第二代:特征提取+分类器(1990s-2010s) 第三代:端到端深度学习(2010s-至今) 当前工业界主流方案呈现"双轨制"发展态势…...

关于Newtonsoft.Json

历史 Newtonsoft.Json(也称为 Json.NET)是由 James Newton - King 开发的一个开源的 JSON 处理库,它于 2007 年首次发布。在早期,.NET 平台缺乏一个强大且灵活的 JSON 处理工具,Newtonsoft.Json 应运而生,…...

Spark-Sql编程(三)

一、数据加载与保存 通用方式:使用spark.read.load和df.write.save,通过format指定数据格式(如csv、jdbc、json等),option设置特定参数(jdbc格式下的url、user等),load和save指定路…...

CTF--好像需要管理员

一、原网页: 二、步骤: 1.扫描: 发现:robots.txt 2.打开robots.txt: 3.打开resul.php: 4.代码解析: if ($_GET[x]$password) //检查通过 URL 参数 x 传递的值是否等于变量 $password 的值 详…...

耀圣控制设备有限公司总经理李雨蔓的创业之路

破浪者李雨蔓:从零到行业标杆的铿锵之路 在浙江永嘉这片被誉为“中国泵阀之乡”的热土上,一位86年出生的女性企业家,用十年光阴书写了一段白手起家的传奇。她,是一曲关于勇气、智慧与匠心的赞歌。从技术员到行业标杆的缔造者&…...

Spring Boot JPA 开发之Not an entity血案

项目状况介绍 项目环境 JDK 21Spring Boot 3.4.3Hibernate: 6.6.13.Final项目描述 因为是微服务架构,项目层级如下 project-parent project-com project-A … project-X 其中: project-parent定义依赖库的版本project-com 定义了一些公用的方法和配置,包括持久层的配置。…...

什么是车规级MCU?STM32也能上车规级场景?

一、车规级MCU的定义 车规级MCU(Microcontroller Unit)是专为汽车电子系统设计的微控制器芯片,集成CPU、存储器、外设接口等功能模块,用于实现车辆控制、数据处理和实时响应。其核心特点包括: 高可靠性:需在…...

vue3.2 + element-plus 实现跟随input输入框的弹框,弹框里可以分组或tab形式显示选项

效果 基础用法&#xff08;分组选项&#xff09; 高级用法&#xff08;带Tab栏&#xff09; <!-- 弹窗跟随通用组件 SmartSelector.vue --> <template><div class"smart-selector-container"><el-popover :visible"visible" :w…...

go 指针接收者和值接收者的区别

go 指针接收者和值接收者的区别 指针接收者和值接收者的区别主要有两点&#xff1a; Go 中函数传参是传值&#xff0c;因此指针接收者传递的是接收者的指针拷贝&#xff0c;值接收者传递的是接收者的拷贝---在方法中指针接收者的变量会被修改&#xff0c;而值接收者的成员变量…...

部署qwen2.5-VL-7B

简单串行执行 from transformers import Qwen2_5_VLForConditionalGeneration, AutoProcessor from qwen_vl_utils import process_vision_info import torch, time, threadingdef llm(model_path,promptNone,imageNone,videoNone,imagesNone,videosNone,max_new_tokens2048,t…...

Go:测试

go test 工具 go test是 Go 语言包的测试驱动程序 &#xff0c;包依据特定约定组织 。包目录中以_test.go结尾的文件是go test编译对象&#xff0c;而非go build的编译目标 。 特殊测试函数 在*_test.go文件中有三种特殊函数 &#xff1a; 功能测试函数&#xff1a;以Test为…...