QUIC 协议:特性、应用场景及其对物联网/车联网的影响

news2024/11/27 20:33:49

什么是 QUIC 协议

QUIC(Quick UDP Internet Connections)是由谷歌公司开发的一种基于用户数据报协议(UDP)的传输层协议,旨在提高网络连接的速度和可靠性,以取代当前互联网基础设施中广泛使用的传输控制协议(TCP)。

QUIC 通过加密和多路复用技术来提供更高的安全性和更快的数据传输。它支持在单个连接上并行发送多个数据流,从而降低延迟并提高吞吐量。QUIC 还具有拥塞控制和流量控制等机制,以应对网络拥塞并保证数据传输的稳定性。

国际互联网工程任务组(IETF)已完成对 QUIC 的标准化,并且主流的 Web 浏览器和服务器正在逐步采用它。与 TCP 相比,QUIC 在高延迟和不稳定的网络环境中,如移动网络,可以显著提升网页加载速度并减少连接中断,使得网络体验更加流畅。

QUIC 协议的基本特性

相互独立的逻辑流

相互独立的逻辑流是 QUIC 的核心特性之一。它允许在单个连接上并行传输多个数据流,并且每个流可以独立地处理。相比之下,TCP 只支持单数据流,需要按照发送顺序接收和确认每个报文。通过多路复用,应用程序可以更高效地发送和接收数据,并更好地利用网络带宽等资源。

一致安全性

QUIC 的另一个重要特性是它提供了端到端的安全保护。所有通过 QUIC 发送的数据都是默认加密的,并且不支持明文通信。这有助于防止数据被窃听和其他形式的攻击。QUIC 使用传输层安全协议(TLS)来建立和维护安全连接和端到端加密。

低延迟

QUIC 协议的设计目的是减少建立连接所需的延迟,以便在端点之间快速地发送和接收数据。对于移动网络这种高延迟的网络环境来说,这一点尤为重要。为了实现这个目标,QUIC 最小化了建立连接所需的往返次数,并且采用更小的报文来发送数据。传统的互联网协议通常存在延迟问题,例如美欧之间的往返时间有时可达 300 或 400 毫秒。

可靠性

QUIC 基于 UDP 但可提供可靠传输能力。类似于 TCP,它是一种面向连接的传输协议。QUIC 协议在数据传输过程中具有报文丢失恢复和重传功能,这可以确保数据的完整性和准确性。此外,QUIC 可以保证数据包按照发送顺序到达,避免因数据包乱序导致的数据错误。

消除 HOL 阻塞

QUIC 通过支持多个数据流来解决 HOL 阻塞问题。这使得来自不同应用的消息可以独立地传递,避免了因为等待其他应用而可能产生的延迟。

QUIC 协议常见的应用场景

随着 HTTP/3 和 QUIC 越来越流行并被广泛采用,涌现出多种多样的应用场景。这些应用场景覆盖了直播、视频、点播、下载、Web 加速等领域,其中最具潜力的应用场景有:

  1. 实时 Web 和移动应用:这些应用(如集成了语音和视频通信功能的 Web 和移动应用)需要低延迟和可靠的数据传输。QUIC 利用相互独立的数据流和拥塞控制机制,使其成为这些应用的理想选择,因为它可以快速高效地发送和接收数据。在 QUIC 的多路复用模式下,同一连接内不同数据流之间的数据传输互不干扰。
  2. 与物联网设备通信:物联网设备通常使用 TCP 和 MQTT 等协议进行通信。然而,这些协议在受限的网络环境中可能存在高延迟和丢包等问题。相比之下,专为高延迟和丢包的网络环境而设计的 QUIC 可以提供更可靠和高效的替代方案。QUIC 可以实现接近零的往返时间(RTT),这对于提高网络性能和用户体验至关重要。
  3. 车联网和网联汽车:QUIC 可以极大地促进车联网生态系统的发展。这些系统需要实时的数据交换来提供诸如交通管理、车辆跟踪和安全功能等服务。QUIC 具有低延迟、多路复用的特性,以及对数据包丢失和重排序的处理能力,可以确保车辆和基础设施组件之间可靠而高效的通信。此外,QUIC 使用 TLS 加密保护敏感车辆数据,提供了更强的安全保障。
  4. 云计算:云计算是指通过互联网提供计算资源的服务。使用 QUIC 协议可以带来多方面的好处,例如低延迟和端到端加密,这可以提升用户体验、增强系统安全。
  5. 支付和电子商务应用:这些应用需要安全可靠的数据传输。QUIC 通过 TLS 加密和可靠的 HTTP3 数据流,使其成为这些应用的理想选择,有助于保证数据安全完整地传输。从终端用户的角度来看,QUIC 协议通过保证更快、更顺畅的交易,优化了用户体验。

MQTT 与 MQTT over QUIC

MQTT 是一种适用于低带宽、高延迟或不稳定网络环境的轻量级消息协议。它运行在应用层,主要用于机器对机器(M2M)通信和物联网场景。MQTT 采用发布/订阅模型,设备将消息发送到 Broker(即发布),其他设备根据主题接收这些消息(即订阅)。

对于 Web 应用而言,QUIC 专注于提高其性能和安全性,而 MQTT 则专为资源受限的网络环境提供轻量级和高效的消息传递解决方案。基于 QUIC 的 MQTT 可以显著提高性能并降低延迟,同时无需额外的 TLS 开销。由于大多数 QUIC 栈实现是在用户空间完成的,因此可以根据应用层的要求,自定义 QUIC 的数据传输,以适应不同的网络环境。

MQTT over QUIC 与 MQTT over TCP/TLS 对比

MQTT over TCP/TLS 指的是使用 TCP 作为传输层的 MQTT 协议。TCP 是一种可靠的、面向连接的协议,可确保数据包在设备之间的正确传递。 TLS 是一种加密协议,通过加密两个端点之间传输的数据,为网络提供安全通信。通常情况下,TLS 作为 TCP 的上层协议使用,它使用 TCP 在两个端点之间建立和维护连接,并加密在该连接上传输的数据。

MQTT over QUIC

MQTT over QUIC 相比 MQTT over TCP/TLS 具有明显的优势:

连接建立:

  • MQTT over TCP/TLS:MQTT over TCP/TLS 遵循 TLS1.2 规范,需要在 TCP 层和 TLS 层各进行一次握手。这意味着在应用层开始交换数据之前,需要进行两到三次往返通信。
  • MQTT over QUIC:MQTT over QUIC 遵循 TLS1.3 规范,可以利用零或一次往返(0-RTT 或 1-RTT)握手快速建立连接,降低连接建立时的延迟。

延迟和性能:

  • MQTT over TCP/TLS:提供可靠的数据传输,但 TCP 的 HOL 阻塞问题和拥塞控制机制可能导致延迟增加和性能降低,尤其是在不可靠的网络环境下。
  • MQTT over QUIC:将 TCP 的可靠性与 UDP 的低延迟特性相结合。QUIC 的多路复用特性有助于最小化 HOL 阻塞问题,从而在有丢包或高延迟的网络环境下提高性能。

安全性:

  • MQTT over TCP/TLS:为了保证 MQTT 通信的安全,通常将其与 TLS 结合使用,TLS 提供了加密和认证功能。但是,这需要在连接建立和数据传输过程中增加额外的开销。
  • MQTT over QUIC:QUIC 使用 TLS1.3 实现了内置加密,提供了安全的通信,无需额外的设置或开销。

客户端的连接迁移:

  • MQTT over TCP/TLS:如果 MQTT 客户端或服务器更换了 IP 地址或网络,那么现有的 TCP 连接就必须断开并重新建立,这会增加应用对异常处理的难度,容易出现各种因处理异常导致的 Bug。
  • MQTT over QUIC:支持连接平滑迁移,允许客户端或服务器在不影响正在进行的通信的情况下更换 IP 地址、端口或网络。

应用和支持:

  • MQTT over TCP/TLS:已经得到了广泛的应用和支持,很多平台和编程语言都有 MQTT broker、客户端和库的实现。
  • MQTT over QUIC:到目前为止,由于 QUIC 仍然是一种新兴的协议,因此 MQTT over QUIC 还没有得到广泛的应用和支持。

MQTT over QUIC 在车联网中的应用场景

在车联网场景下,MQTT over QUIC 可以带来很多优势,因为低延迟、可靠和安全的通信对各种应用来说都非常重要。由于 QUIC 结合了 TCP 和 UDP 的优点,并且提供了内置的加密,因此它可以显著提高基于 MQTT 的车联网应用的性能和安全性。

在车联网中使用 MQTT over QUIC 的场景包括:

  • 车对基础设施(V2I)通信:QUIC 的低延迟和可靠的数据传输可以提高车辆与基础设施组件(如交通信号灯、收费系统或智能停车系统等)之间的通信效率。
  • 车对车(V2V)通信:快速和安全的数据交换对于诸如碰撞避免、协同自适应巡航控制和编队等应用非常关键。MQTT over QUIC 可以为这些应用提供必要的速度和安全保障。
  • 车联网(V2X)通信:V2X 通信将车辆、基础设施和其他道路用户组合起来,旨在提高道路安全和交通效率。MQTT over QUIC 可以提供可靠的通信,并减少延迟,确保关键信息的及时交换。
  • 车载资讯娱乐和远程诊断系统:MQTT over QUIC 可以提高资讯娱乐系统的性能,实现更快的媒体流、导航更新和实时交通信息,同时确保通信安全。
  • 车队管理和跟踪:实时跟踪和管理车队需要车辆和管理系统之间的高效通信。MQTT over QUIC 可以提供可靠和安全的通信,实现车辆位置、诊断和驾驶行为的实时更新。
  • OTA 更新:安全可靠的 OTA 更新对更新车辆固件和软件至关重要。MQTT over QUIC 可以提供必要的安全性和可靠性,无需中断车辆操作就可以传送这些更新。
  • 应急响应:在紧急情况下,可靠和快速的通信非常重要。MQTT over QUIC 可以确保及时安全地在应急车辆、响应团队和控制中心之间交换信息。

EMQX:首个实现 MQTT over QUIC 的 MQTT Broker

EMQX 是全球领先的开源 MQTT Broker,拥有高性能的实时消息处理引擎,为海量的物联网设备事件流处理提供动力。EMQX 从 5.0 版本开始支持 MQTT over QUIC,成为首个支持 MQTT over QUIC 的 MQTT Broker。不仅为现代复杂网络的 MQTT 消息传输提供了一种更高效安全的新方式,同时可以在某些场景下显著提高 MQTT 性能。

EMQX 支持将传输层替换为 QUIC 流,客户端可发起连接并创建双向流,从而实现更加高效可靠的通信。EMQX 支持两种操作模式:

  • 单流模式是一种基本模式,它将 MQTT 报文封装在一个双向的 QUIC 流中。该模式提供了快速握手、有序数据传输、连接恢复、0-RTT、客户端地址迁移以及增强的丢包检测和恢复等功能。这种模式使得客户端和 Broker 之间的通信更加快速和高效,同时保持有序,还能够快速恢复连接,并支持在不影响客户端通信的情况下迁移其本地地址。
  • 多流模式利用了 QUIC 的多路复用特性,允许 MQTT 报文在多个流中传输。这使得单个 MQTT 连接可以并行传输多个主题的数据且互不干扰。该模式还提供了多项优化,例如解耦连接控制和 MQTT 数据交换、避免 HOL 阻塞、分离上行和下行数据、优先处理不同类型的数据、提高并发性、增强鲁棒性、允许对数据流进行流量控制以及降低订阅延迟等。

单流模式与多流模式

使用 NanoSDK 客户端连接 MQTT over QUIC

NanoSDK 是基于 C 语言开发的第一个支持 MQTT over QUIC 的 SDK,完全兼容 EMQX 5.0。NanoSDK 的主要特点包括异步 I/O、将 MQTT 连接映射到 QUIC 流、低延迟的 0-RTT 握手以及多核并行处理等。

NanoSDK

此外,EMQX 还为多种编程语言提供了客户端 SDK,以支持 MQTT over QUIC,包括:

  • NanoSDK-Python:NanoSDK 的 Python binding。
  • NanoSDK-Java:NanoSDK 的 Java JNA binding。
  • emqtt - Erlang MQTT 客户端:使用 Erlang 开发的支持 QUIC 的 MQTT 客户端。

版权声明: 本文为 EMQ 原创,转载请注明出处。

原文链接:https://www.emqx.com/zh/blog/quic-protocol-the-features-use-cases-and-impact-for-iot-iov

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

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

相关文章

/dev/kmem /proc/kallsyms

文章目录 前言概述使用 /dev/kmem使用 /proc/kallsyms验证进阶 前言 上篇文章我们介绍了 /dev/mem,今天再来介绍下它的好兄弟 /dev/kmem crw-r----- 1 root kmem 1, 1 May 26 06:10 /dev/mem crw-r----- 1 root kmem 1, 2 May 26 06:10 /dev/kmem对比一下&#xf…

第十四届全国大学生数学竞赛决赛(非数类)游记+答案解析

2023/5/27 20:08:今天早上9:00~12:00考了数学竞赛国赛。广州是真的热啊!西安才17度,还下着小雨,到广州之后那个艳阳直接给我人干废了,去酒店的路上步行了20分钟真的要死了已经。 拿到卷子的我是崩溃的,用正…

计算机视觉:填充(padding)技术

本文重点 在前面的课程中,我们学习了使用3*3的过滤器去卷积一个5*5的图像,那么最终会得到一个3*3的输出。那是因为 33 过滤器在 55 矩阵中,只可能有 33 种可能的位置。 这背后的数学解释是,如果我们有一个nn的图像,用ff的过滤器做卷积,那么输出的维度就是(n−f+1)(n−f…

码出高效_第一章 | 有意思的二进制表示及运算

目录 0与1的世界1.如何理解32位机器能够同时处理处理32位电路信号?2.如何理解负数的加减法运算3.溢出在运算中如何理解4.计算机种常用的存储单位及转换5.位移运算规则6.有趣的 && 和 & 浮点数1.定点小数(为什么会出现浮点数表示?…

Linux 系统烧写

目录 MfgTool 工具简介MfgTool 工作原理简介烧写方式系统烧写原理 烧写NXP 官方系统烧写自制的系统系统烧写网络开机自启动设置 改造我们自己的烧写工具改造MfgTool烧写测试解决Linux 内核启动失败 前面我们已经移植好了uboot 和linux kernle,制作好了根文件系统。但…

Spring 事件相关知识ApplicationEvent

Spring 事件相关知识ApplicationEvent 事件工作流程相关类ApplicationListenerApplicationEvent 我们可以发布自己的事件ApplicationEventPublisher Spring框架中提供了多种事件类型,常用的几个事件类型如下: Spring 事件驱动模型是 Spring 框架中的一个…

uCOSii中的事件标志组

事件标志管理 (EVENT FLAGS MANAGEMENT) OSFlagAccept() 无等待查询”事件标志组的事件标志位”是否建立 OSFlagPend() 需要等待”事件标志组的事件标志位”建立 OSFlagCreate() 建立一个事件标志组 OSFlagDel() 删除一个事件标志组 OSFlagPost() 置位或清0事件标志组中的…

SpringBoot整合百度云人脸识别功能

SpringBoot整合百度云人脸识别功能 1.在百度官网创建应用 首先需要在百度智能云官网中创建应用,获取AppID,API Key,Secret Key 官网地址:https://console.bce.baidu.com/ 2.添加百度依赖 添加以下依赖即可。其中版本号可在mav…

【问卷分析】调节效应检验的操作①

文章目录 1.首先要明白自己的调节和自变量是什么类别的2.实操演练2.1 当调节变量是连续变量时2.1.1 将ml中心化2.1.2 使用分层回归探讨自变量和ml的交互对adh的影响2.1.3 结果解读 1.首先要明白自己的调节和自变量是什么类别的 2.实操演练 在本次演练中,我们以自变…

马斯克要用人工智能对抗人工智能

导读:马斯克对人工智能可能变得失控并“摧毁人类”的担忧促使他采取行动,发起了一个名为“TruthGPT”的项目。 本文字数:1400,阅读时长大约:9分钟 亿万富翁埃隆马斯克在谈到人工智能(AI)的危险时…

瑞合信LED字幕WiFi卡使用教程(8.0版)

请按照提示下载和安装软件,同时请允许所有权限,如下图; 也可以在各大主流应用商店(华为、小米、OPPO、vivo、App Store等)搜索“瑞合信”直接安装。 首次使用APP时会提示注册登录软件,你可以选择“使用微信…

深度学习进阶篇-预训练模型[4]:RoBERTa、SpanBERT、KBERT、ALBERT、ELECTRA算法原理模型结构应用场景区别等详解

【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍:【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化…

Full-Scanner是一个多功能扫描工具,支持被动/主动信息收集,漏洞扫描工具联动,可导入POC和EXP

github项目地址:https://github.com/Zhao-sai-sai/Full-Scanner gitee项目地址:https://gitee.com/wZass/Full-Scanner 工具简介 做挖漏洞渗透测试有的时候要去用这个工具那个工具去找感觉麻烦我自己就写了一个简单的整合工具,有互联网大佬不…

Presto之BroadCast Join的实现

一. 前言 在Presto中,Join的类型主要分成Partitioned Join和Broadcast Join,在Presto 之Hash Join的Partition_王飞活的博客-CSDN博客 中已经介绍了Presto的Partitioned Join的实现过程,本文主要介绍Broadcast Join的实现。 二. Presto中Broa…

ChatGPT免费使用的方法有哪些?

目录 一、ChatGpt是什么? 二、ChatGPT国内免费使用的方法: 第一点:电脑端 第二点:手机端 三、结语: 一、ChatGpt是什么? ChatGPt是美国OpenAI [1] 研发的聊天机器人程序 。更是人工智能技术驱动的自然语…

1. 从JDK源码级别彻底刨析JVM类加载机制

JVM性能调优 1. 类加载的运行全过程1.1 加载1.2 验证1.3 准备1.4 解析 本文是按照自己的理解进行笔记总结,如有不正确的地方,还望大佬多多指点纠正,勿喷。 课程内容: 1、从java.exe开始讲透Java类加载运行全过程 2、从JDK源码级别剖析JVM核…

【地铁上的面试题】--基础部分--数据结构与算法--数组和链表

零、章节简介 《数据结构与算法》是《地铁上的面试题》专栏的第一章,重点介绍了技术面试中不可或缺的数据结构和算法知识。数据结构是组织和存储数据的方式,而算法是解决问题的步骤和规则。 这一章的内容涵盖了常见的数据结构和算法,包括数组…

DevOps工作级开发者认证——软件发展

. 本文先从软件产业的现状、发展趋势及挑战,说明敏捷和DevOps必将成为业界主流的研发模式。接着介绍和阐述了敏捷和DevOps的关系,相关理念、价值和主要工程方法。最后重点介绍了某著名公司端到端DevOps的实施框架及其主要内容。 本文的目的&#…

javascript基础八:JavaScript原型,原型链 ? 有什么特点?

一、原型 JavaScript 常被描述为一种基于原型的语言——每个对象拥有一个原型对象 当试图访问一个对象的属性时,它不仅仅在该对象上搜寻,还会搜寻该对象的原型,以及该对象的原型的原型,依次层层向上搜索,直到找到一个…

15_Linux工程目录与顶层Makefile

目录 Linux 工程目录分析 顶层Makefile详解 make xxx_defconfig过程 Makefile.build脚本分析 make过程 built-in.o文件编译生成过程 make zImage过程 Linux 工程目录分析 将正点原子提供的Linux源码进行解压,解压完成以后的目录如图所示: 图就是正点原子提供的未编译的…