设备通信协议 - AWS IoT 核心

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

设备通信协议

AWS IoT Core 支持设备和客户端使用 MQTT 和基于 WebSocket Secure (WSS) 的 MQTT 协议发布和订阅消息,使用 HTTPS 协议发布消息。所有协议都支持 IPv4 和 IPv6。本节介绍设备和客户端的不同连接选项。

TLS v1.2

AWS IoT Core 使用 TLS 1.2 版加密所有通信。客户端还必须发送服务器名称指示 (SNI) TLS 扩展。不包括 SNI 的连接尝试将被拒绝。有关更多信息,请参阅 AWS IoT 中的传输安全

AWS IoTDevice SDK支持 MQTT 和基于 WSS 的 MQTT,并支持客户端连接的安全要求。我们建议使用AWS IoTDevice SDK将客户端连接到 AWS IoT。

协议、端口映射和身份验证

设备或客户端如何使用设备终端节点连接到消息代理,取决于它使用的协议。下表列出了 AWS IoT 设备终端节点支持的协议及其使用的身份验证方法和端口。

协议、身份验证和端口映射
协议 支持的操作 身份验证 端口 ALPN 协议名称

通过 WebSocket 的 MQTT

发布、订阅 Signature Version 4 443

不适用

通过 WebSocket 的 MQTT

发布、订阅 自定义身份验证 443

不适用

MQTT

发布、订阅

X.509 客户端证书

443

x-amzn-mqtt-ca

MQTT 发布、订阅 X.509 客户端证书 8883 不适用

MQTT

发布、订阅

自定义身份验证

443

mqtt

HTTPS

仅发布

Signature Version 4

443

不适用

HTTPS

仅发布

X.509 客户端证书

443

x-amzn-http-ca

HTTPS 仅发布 X.509 客户端证书 8443 不适用
HTTPS 仅发布 自定义身份验证 443 不适用
应用程序层协议协商 (ALPN)

使用 X.509 客户端证书身份验证在端口 443 上连接的客户端必须实施应用程序层协议协商 (ALPN) TLS 扩展,并使用由该客户端发送的 ALPN ProtocolNameList 中列出的 ALPN 协议名称作为 ClientHello 消息的一部分。

在端口 443 上,IoT:Data-ATS 终端节点支持 ALPN x-amzn-http-ca HTTP,但 IoT:Jobs 终端节点不支持。

在使用 ALPN x-amzn-mqtt-ca 的端口 8443 HTTPS 和端口 443 MQTT 上,无法使用自定义身份验证

客户端连接到其 AWS 账户的设备终端节点。有关如何查找您账户的设备终端节点的信息,请参阅 AWS IoT 设备数据和服务终端节点

连接到 AWS IoT Core

协议

终端节点或 URL

MQTT

iot-endpoint

基于 WSS 的 MQTT

wss://iot-endpoint/mqtt

HTTPS

https://iot-endpoint/topics

为设备通信选择协议

对于大多数通过设备终端节点进行的 IoT 设备通信,您将希望使用 MQTT 或基于 WSS 的 MQTT 协议;但是,设备终端节点也支持 HTTPS。下表比较了 AWS IoT Core 使用这两种协议进行设备通信的方式。

AWS IoT 并排设备协议

功能

MQTT

HTTPS

发布/订阅支持

发布和订阅

仅发布

SDK 支持

AWS 设备软件开发工具包支持 MQTT 和 WSS 协议

不支持软件开发工具包,但您可以使用特定于语言的方法来发出 HTTPS 请求

服务质量支持

MQTT QoS 级别 0 和 1

不支持 QoS

可以接收设备离线时错过的消息

clientId 现场支持

设备断开检测

安全通信

是。请参阅 协议、端口映射和身份验证

是。请参阅 协议、端口映射和身份验证

连接持续时间 长达几周 长达 24 小时

主题定义

定义的应用程序

定义的应用程序

消息数据格式

定义的应用程序

定义的应用程序

协议开销 降低 提高
功耗 降低 提高