共计 4677 个字符,预计需要花费 12 分钟才能阅读完成。
什么是 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 减速等畛域,其中最具后劲的利用场景有:
- 实时 Web 和挪动利用:这些利用(如集成了语音和视频通信性能的 Web 和挪动利用)须要低提早和牢靠的数据传输。QUIC 利用互相独立的数据流和拥塞管制机制,使其成为这些利用的现实抉择,因为它能够疾速高效地发送和接收数据。在 QUIC 的多路复用模式下,同一连贯内不同数据流之间的数据传输互不烦扰。
- 与物联网设施通信:物联网设施通常应用 TCP 和 MQTT 等协定进行通信。然而,这些协定在受限的网络环境中可能存在高提早和丢包等问题。相比之下,专为高提早和丢包的网络环境而设计的 QUIC 能够提供更牢靠和高效的代替计划。QUIC 能够实现靠近零的往返工夫(RTT),这对于进步网络性能和用户体验至关重要。
- 车联网和网联汽车:QUIC 能够极大地促成车联网生态系统的倒退。这些零碎须要实时的数据交换来提供诸如交通管理、车辆跟踪和平安性能等服务。QUIC 具备低提早、多路复用的个性,以及对数据包失落和重排序的解决能力,能够确保车辆和基础设施组件之间牢靠而高效的通信。此外,QUIC 应用 TLS 加密爱护敏感车辆数据,提供了更强的平安保障。
- 云计算:云计算是指通过互联网提供计算资源的服务。应用 QUIC 协定能够带来多方面的益处,例如低提早和端到端加密,这能够晋升用户体验、加强系统安全。
- 领取和电子商务利用:这些利用须要安全可靠的数据传输。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 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 握手以及多核并行处理等。
此外,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