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…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...
