VoIP是什么?
IP 语音 (VoIP)(Voice over Internet Protocol) 是一种通过互联网拨打电话的方法。与旧的固定电话系统不同,互联网并非设计用于在连接的人之间实时传输音频信号。必须构建专门的技术和协议才能使之成为可能,这些技术和协议构成了 VoIP。如今,VoIP 已成为一种高效的音频和视频实时通信方法。
VoIP 已被广泛采用。在许多行业中,它是电话系统的主要形式,取代了固定电话(其技术名称是“公共交换电话网”)。
相比固定电话,VoIP 有几个优势。它更灵活、更容易增加线路、通常比传统电话服务更便宜、支持视频以及音频,而且可以从任何位置使用。
然而,VoIP 很容易受到服务中断和网络攻击的影响,而固定电话大多不受其影响(如 DDoS 攻击)。VoIP 还依赖于稳定的互联网连接和电源。
*实时是指来自所有连接用户的信息在创建后立即传递,而不是储存起来之后再传输。
音频如何通过 VoIP 传播?
假设 Alice 使用 VoIP 电话线路呼叫 Bob。Alice 拿起一个支持 VoIP 的听筒,拨通了鲍勃的号码,然后说:“你好,Bob。”要想让 Alice 的话到达 Bob 那里,必须发生什么?
建立连接:VoIP 服务在 Alice 和 Bob 的听筒之间建立一个数字连接。由专门的网络协议来处理过程的这一部分。
模拟到数字:Alice 的听筒将她的声音转换为数字信息。
编码:该数字信息被编码和压缩,以便其可以在互联网上传播。
数据包:Alice 语音的编码数字版本被分成较小的块,称为数据包,每个数据包都包含几个由各种网络协议附加的标头。
数据包在互联网上传播:数据包先由 Alice 的局域网 (LAN) 路由器转发,然后由其他各种路由器转发到 VoIP 服务提供商的专用交换机 (PBX) 内的 VoIP 服务器。该服务器将数据包路由到 Bob 的电话。数据包从一个网络转发到另一个网络,直到到达 Bob 的 LAN 路由器,该路由器最后将数据包转发到 Bob 的听筒。
Bob 听到 Alice 的声音: 反向执行第 2 步到第 4 步:数据包被重新组合成压缩后的 Alice 的数字语音,然后解压缩,然后由 Bob 听筒的扬声器作为声音播放。
尽管涉及的步骤很多,但整个过程应该是在几毫秒内完成。理想情况下,应当不存在人类可察觉的延迟,Bob 几乎在 Alice 说出这句话的同时就听到了她说的“你好,Bob”。延迟的时长取决于他们本地网络的效率和带宽,以及 Alice 和 Bob 之间的距离(由距离造成的延时被称为延迟)。
建立连接后,剩下的过程可以在两端同时发生。一个支持 VoIP 的电话可以同时发送和接收音频数据,因此,如果 Alice 和 Bob 不小心在同一时间问对方“你好吗?”,他们会在说话时听到对方的声音。
VoIP 的“互联网协议”部分是什么意思?
在互联网上传输的数据,无论是文本和代码(如本网页中的内容)、图像还是音频内容(如 VoIP 中的声音),都被分成称为“数据包”的小部分。这些数据包在构成互联网的电线和设备上传输,然后由接收它们的设备解释为可用的内容。
互联网协议 (IP),是将数据包格式化的标准化方法,使联网成为可能。IP 描述了如何处理这些数据包、如何提供有关其内容的信息,以及其他要求。任何具有互联网功能的设备都可以自动创建和解释 IP 数据包。基本上所有互联网服务都建立在 IP 上,包括 VoIP,这也是其名为“IP 语音”的原因。
VoIP 在 IP 的基础上使用什么协议?
一些协议在 IP 之上运行,使不同类型的互联网服务成为可能。首先是传输协议,它们有助于确保数据包到达正确的地方并被正确接收。IP 可以与传输控制协议 (TCP) 或用户数据报协议 (UDP) 搭配使用。
大多数 VoIP 服务使用 UDP(而非 TCP)作为其传输协议,因为 UDP 速度更快——这与一对多的流媒体服务形成鲜明对比,后者使用更可靠的 TCP 来确保每一秒的音频和视频都得到传递。
应用程序层协议是在传输协议之上使用的。这些协议将数据转换成面向用户的应用程序可以解释的形式。大部分互联网使用超文本传输协议 (HTTP) 作为应用程序层协议。然而,VoIP 使用比 HTTP 更适合实时传输音频和视频数据的其他协议。
VoIP 应用程序层协议因 VoIP 服务而异。一些供应商使用开放协议,如以下协议:
会话初始协议 (SIP) 建立和结束通话。在上面的示例中,Alice 的 VoIP 服务可能使用 SIP 来建立她的电话与 Bob 的电话之间的连接。
实时传输协议 (RTP) 携带通话的实际音频和视频内容。
安全实时传输协议 (SRTP) 是 RTP 的加密版本。
媒体网关控制协议 (MGCP) 控制 VoIP 和公共交换电话网之间的连接。
H.323 执行与 SIP 相同的功能,但它是基于二进制而不是基于文本。如今,H.323 已使用不多。
这些协议是公开记录的,任何人都可以使用它们。不过,有一些 VoIP 供应商使用专有协议。与使互联网成为可能并承载大部分互联网流量的开放协议不同,这些专有协议是封闭的,供应商的服务条款可能禁止对其进行反向工程。它们仍然在 TCP、UDP 和 IP 等开放协议的基础上运行。
VoIP 的专有协议示例包括:
Skype 协议:该协议由 Skype 开发,仅用于 Skype 应用程序。Microsoft 在收购 Skype 后于 2014 年废止了该协议,并将其替换为:
Microsoft 通知协议 24 (MNP24):Skype 自 2014 年以来一直使用该协议。
瘦客户端控制协议 (SCCP):该专有协议属于 Cisco。
Inter-Asterisk eXchange (IAX):用于使用特定类型的开源 PBX 软件(称为 Asterisk)的 VoIP 服务。
什么原因导致 VoIP 服务中断?
互联网连接不良:低带宽的互联网连接使数据包难以通过,从而会影响音频质量。没有互联网连接意味着 VoIP 根本无法工作。
网络拥堵:如果一次在网络上交换了太多的数据,VoIP 电话可能无法有效地传输数据包——就像高速公路上车辆过多会减慢行驶速度一样。
UDP 超时:如上所述,VoIP 通常在 UDP 传输协议上运行。防火墙可能会出于安全考虑而终止超过一定时间的 UDP 连接。
网络攻击:与任何基于互联网的服务一样,VoIP 也容易受到攻击。特别是,VoIP 服务经常成为分布式拒绝服务 (DDoS) 攻击的目标。这些攻击可能使 VoIP 服务一次性离线几分钟、几小时或几天。
为什么 VoIP 容易受到分布式拒绝服务 (DDoS) 攻击?
几乎任何网络协议都可以用于发起 DDoS 攻击。攻击者通常会把目标锁定在 VoIP 上,因为这类攻击会直接影响企业效率——当企业无法打电话,就无法完成很多工作。
广义上讲,VoIP DDoS 攻击可分为两个不同的类别:
- 针对 VoIP 服务提供商的攻击。这种 DDoS 攻击有可能使 VoIP 提供商的所有客户的服务中断。它们可能采取多种形式,包括:
以提供商的 Web 应用程序为目标,阻止用户登录
以提供商的服务器为目标,使其 PBX 服务崩溃
关闭 DNS 解析,使用户无法导航到提供商的网站
一些针对 VoIP 提供商的攻击利用了 VoIP 的工作方式——例如,通过 SIP 洪水攻击来淹没支持 SIP 的服务器。其他人可能使用更通用的 DDoS 攻击方法,这些方法对大多数未受保护的网站和服务器有效,如 HTTP 洪水攻击和 SYN 洪水攻击。
此外,曾发生过对 VoIP 提供商进行 DDoS 勒索攻击。在 DDoS 勒索攻击中,在受害者向攻击者支付赎金之前,攻击会一直持续。
- 针对使用 VoIP 的组织的攻击。这些攻击一次只针对一个组织,而不是中断多个 VoIP 提供商客户的服务。托管自己的 VoIP 网络和服务器的组织可能特别容易受到攻击。与大型 VoIP 提供商不同,当他们的主要 VoIP 服务器成为 SIP 洪水攻击或其他攻击的目标时,他们可能没有大量的备份服务器来切换。
VoIP 中的 SIP 洪水攻击
VoIP 中最容易遭受 DDoS 攻击的一个方面是 SIP。基于 SIP 的 DDoS 攻击很难阻止,因为和 HTTP 一样,SIP 是一个基于文本的协议,很难区分非法 SIP 请求和合法 SIP 请求。
SIP INVITE 洪水攻击使用虚假的“INVITE”请求来发起呼叫,从而淹没 SIP 服务器。服务器必须处理每一个此类请求,导致减缓或拒绝为合法呼叫提供服务。SIP REGISTER 洪水攻击与此类似,只是使用“REGISTER”消息而不是“INVITE”。
攻击者还可以发送特别构建的 SIP 消息,通过导致服务器重启或部分故障来中断服务器。一次又一次地发送此类信息可能导致在很长一段时间内拒绝为合法用户提供服务。
Cloudflare DDoS 缓解措施有助于防止 VoIP DDoS 攻击。Cloudflare 的网络容量比有记录以来最大的 DDoS 攻击大了许多倍。深入了解用于 Web 应用程序的 Cloudflare DDoS 防护,或用于保护内部网络的 Magic Transit。
相关文章:

VoIP是什么?
IP 语音 (VoIP)(Voice over Internet Protocol) 是一种通过互联网拨打电话的方法。与旧的固定电话系统不同,互联网并非设计用于在连接的人之间实时传输音频信号。必须构建专门的技术和协议才能使之成为可能,这些技术和协议构成了 …...

MySQL 中的集群部署方案
文章目录 MySQL 中的集群部署方案MySQL ReplicationMySQL Group ReplicationInnoDB ClusterInnoDB ClusterSetInnoDB ReplicaSetMMMMHAGalera ClusterMySQL ClusterMySQL Fabric 总结参考 MySQL 中的集群部署方案 MySQL Replication MySQL Replication 是官方提供的主从同步方…...

《设计模式》创建型模式总结
目录 创建型模式概述 Factory Method: 唯一的类创建型模式 Abstract Factory Builder模式 Prototype模式 Singleton模式 最近在参与一个量化交易系统的项目,里面涉及到用java来重构部分vnpy的开源框架,因为是框架的搭建,所以会涉及到像…...

Conda安装与使用中的若干问题记录
Conda安装与使用中的若干问题记录 1.Anaconda 安装失败1.1.问题复述1.2.问题解决(安装建议) 2.虚拟环境pip install未安装至本虚拟环境2.1.问题复述2.2.问题解决 3.待补充 最近由于工作上的原因,要使用到Conda进行虚拟环境的管理,…...

人力资源招聘系统的革新之路:从传统到智能的转变
在全球化与数字化交织的今天,企业间的竞争日益激烈,而人才作为企业发展的核心驱动力,其重要性不言而喻。传统的人力资源招聘方式,如依赖纸质简历、人工筛选、面对面面试等,不仅效率低下,且难以精准匹配企业…...

Python网络爬虫与数据采集实战——网络协议与HTTP
目录 1. HTTP协议简介 2. 常见的请求方法 3. 状态码含义 实际应用中的HTTP协议 1. 如何在爬虫中使用HTTP协议 2. 模拟浏览器请求与爬虫反爬虫技术 3. 高级HTTP请求 实现爬虫时HTTP协议的优化与常见问题 总结 1. HTTP协议简介 HTTP的定义与作用 HTTP(超文本…...

从零开始的c++之旅——二叉搜索树
1、二叉搜索树概念 1. ⼆叉搜索树的概念 ⼆叉搜索树⼜称⼆叉排序树,它或者是⼀棵空树,或者是具有以下性质的⼆叉树: • 若它的左⼦树不为空,则左⼦树上所有结点的值都⼩于等于根结点的值 • 若它的右⼦树不为空,则右⼦树上所有结…...

CSS回顾-基础知识详解
一、引言 在前端开发领域,CSS 曾是构建网页视觉效果的关键,与 HTML、JavaScript 一起打造精彩的网络世界。但随着组件库的大量涌现,我们亲手书写 CSS 样式的情况越来越少,CSS 基础知识也逐渐被我们遗忘。 现在,这种遗…...

Elasticsearch 查询时 term、match、match_phrase、match_phrase_prefix 的区别
Elasticsearch 查询时 term、match、match_phrase、match_phrase_prefix 的区别 keyword 与 text 区别term 查询match 查询match_phrase 查询match_phrase_prefix 查询写在最后 在讲述 es 查询时 term、match、match_phrase、match_phrase_prefix 的区别之前,先来了…...

低代码平台:跨数据库处理的重要性与实现方式
一、低代码平台概述 低代码平台作为一种创新的软件开发工具,为开发者带来了极大的便利。它具备可视化编程工具和大量预构建组件,这使得开发者无需编写大量代码就能创建应用程序,显著降低了软件开发的技术门槛。无论是专业开发人员还是业务人员…...

【jvm】如何破坏双亲委派机制
目录 1.说明2.重写ClassLoader的loadClass方法2.1 原理2.2 实现步骤2.3 注意事项 3.使用线程上下文类加载器3.1 原理3.2 实现步骤3.3 应用场景 4.利用SPI机制4.1 原理4.2 实现步骤4.3 应用场景 5.Tomcat等容器的自定义类加载器5.1 原理5.2 实现方式5.3 应用场景 1.说明 1.双亲委…...

ReactPress与WordPress:一场内容管理系统的较量
ReactPress Github项目地址:https://github.com/fecommunity/reactpress WordPress官网:https://wordpress.org/ ReactPress与WordPress:一场内容管理系统的较量 在当今数字化时代,内容管理系统(CMS)已成为…...

网络安全练习之 ctfshow_web
文章目录 VIP题目限免(即:信息泄露题)源码泄露前台JS绕过协议头信息泄露robots后台泄露phps源码泄露源码压缩包泄露版本控制泄露源码(git)版本控制泄露源码2(svn)vim临时文件泄露cookie泄露域名txt记录泄露敏感信息公布内部技术文档泄露编辑器…...

在 Service Worker 中caches.put() 和 caches.add()/caches.addAll() 方法他们之间的区别
在 Service Worker 中,caches.put(request, response) 和 caches.add(request)/caches.addAll(requests) 方法都用于将资源添加到缓存中,但它们的使用场景和目的略有不同。 caches.put(request, response),一用在fetch事件当中,由…...

UNIAPP发布小程序调用讯飞在线语音合成+实时播报
语音合成能够将文字转化为自然流畅的人声,提供100发音人供您选择,支持多语种、多方言和中英混合,可灵活配置音频参数。广泛应用于新闻阅读、出行导航、智能硬件和通知播报等场景。 在当下大模型火爆的今日,语音交互页离不开语音合…...

跳房子(弱化版)
题目描述 跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一。 跳房子的游戏规则如下: 在地面上确定一个起点,然后在起点右侧画 n 个格子,这些格子都在同一条直线上。每个格子内…...

ubuntu22 安装 minikube
在Ubuntu 22上安装Minikube,你可以按照以下步骤进行: 安装依赖: 更新系统并安装必要的依赖项: sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl安装Docker: Minikube可以使用D…...

STM32 | 超声波避障小车
超声波避障小车 一、项目背题 由于超声波测距是一种非接触检测技术,不受光线、被测对象颜色等的影响,较其它仪器更卫生,更耐潮湿、粉尘、高温、腐蚀气体等恶劣环境,具有少维护、不污染、高可靠、长寿命等特点。因此可广泛应用于…...

打造旅游卡服务新标杆:构建SOP框架与智能知识库应用
随着旅游业的蓬勃兴起,旅游卡产品正逐渐成为市场的焦点。为了进一步提升服务质量和客户体验,构建一套高效且标准化的操作流程(SOP)变得尤为重要。本文将深入探讨如何构建旅游卡的SOP框架,并介绍如何利用智能知识库技术…...

通过脚本,发起分支合并请求和打tag
#!/bin/bash # Set GitLab API URL and access token GITLAB_API_URL"http://IP/api/v4" ACCESS_TOKEN"Token秘钥" # Define repository IDs declare -A repo_ids( ["gitIP:kingmq/client.git"]"123" ["gitIP:kingmq/s…...

【视频讲解】Python深度神经网络DNNs-K-Means(K-均值)聚类方法在MNIST等数据可视化对比分析...
全文链接:https://tecdat.cn/?p38289 分析师:Cucu Sun 近年来,由于诸如自动编码器等深度神经网络(DNN)的高表示能力,深度聚类方法发展迅速。其核心思想是表示学习和聚类可以相互促进:好的表示会…...

网络安全在线网站/靶场:全面探索与实践
目录 1. CyberPatriot 简介 功能与特点 适用人群 2. Hack The Box 简介 功能与特点 适用人群 3. OverTheWire 简介 功能与特点 适用人群 4. VulnHub 简介 功能与特点 适用人群 5. PortSwigger Web Security Academy 简介 功能与特点 适用人群 6. TryHackM…...

Ceph 中Crush 算法的理解
Crush(Controlled Replication Under Scalable Hashing)算法是一种可扩展的、分布式的副本数据放置算法,广泛用于存储系统中,特别是Ceph分布式存储系统中。以下是对CRUSH算法的详细解释: 一、算法原理 CRUSH算法根据…...

D70【 python 接口自动化学习】- python 基础之数据库
day70 Python综合实践 学习日期:20241116 学习目标: MySQL 数据库 Q -- Python 综合实践 学习笔记: 案例需求 数据内容 DDL定义 总结 1. 使用Python实现读取写入数据库操作 ps.今天去看航展了,歼20简直不要太快,明…...

C# LINQ数据访问技术
文章目录 1.LINQ 的基本概念1.1 LINQ 的优势1.2 LINQ 数据访问的方式 2.LINQ 基本操作2.1 查询语法2.2 方法语法 3.LINQ 常用查询方法3.1 Where3.2 Select3.3 OrderBy / OrderByDescending3.4 GroupBy3.5 Join3.6 Aggregate 4.LINQ 查询示例4.1 LINQ to Objects4.2 LINQ to SQL…...

【JavaSE线程知识总结】
多线程 一.创建线程1.多线程创建方式一(Thread)2.多线程创键方式二(Runnable)3.线程创建方式三 二.线程安全问题解决办法1.使用同步代码块synchornized 2 .使用Lock解决线程安全问题 三.总结 线程就是程序内部的一条执行流程 一.创建线程 常用的方法 Thread.currentThread()…...

FreeRTOS内存管理
1. 为什么要自己实现内存管理 对于内核对象,可以使用时分配,不使用时释放C语音的库函数不适应与FreeRTOS: 实现过于复杂,占用空间大并非线程安全的运行不确定性:每次运算时间不确定内存碎片化不太编译器配置不同调试难 2. 堆栈…...

利用服务工作线程serviceWorker缓存静态文件css,html,js,图片等的方法,以及更新和删除及版本控制
Service Worker 是一种运行在浏览器背后的独立线程,可以用来处理推送通知、后台同步、缓存等任务。以下是使用 Service Worker 来缓存图片的一个基本示例: 1、注册 Service Worker: 首先,你需要在你的 JavaScript 文件中注册 Service Worker。…...

MuMu模拟器安卓12安装Xposed 框架
MuMu模拟器安卓12安装Xposed 框架 当开启代理后,客户端会对代理服务器证书与自身内置证书展开检测,只要检测出两者存在不一致的情况,客户端就会拒绝连接。正是这个原因,才致使我们既没有网络,又抓不到数据包。 解决方式: 通过xposed框架和trustmealready禁掉app里面校验…...

高级数据结构——hash表与布隆过滤器
文章目录 hash表与布隆过滤器1. hash函数2. 选择hash函数3. 散列冲突3.1 负载因子3.2 冲突解决3. STL中的散列表 4. 布隆过滤器4.1 背景1. 应用场景2. 常见的处理场景: 4.2 布隆过滤器构成4.3 原理4.4 应用分析4.5 要点 5. 分布式一致性hash5.1 缓存失效问题 6. 大数…...