设备通信协议 - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

设备通信协议

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

TLS v1.2

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

Amazon IoT 设备软件开发工具包支持 MQTT 和基于 WSS 的 MQTT,并支持客户端连接的安全要求。我们建议使用Amazon IoT 设备软件开发工具包将客户端连接到 Amazon IoT。

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

设备或客户端如何使用设备终端节点连接到消息代理,取决于它使用的协议。下表列出了 Amazon 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 协议名称列在客户端发送的 ALPN ProtocolNameList 中作为ClientHello消息。

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

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

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

连接到 Amazon IoT Core

协议

终端节点或 URL

MQTT

iot-endpoint

基于 WSS 的 MQTT

wss://iot-endpoint/mqtt

HTTPS

https://iot-endpoint/topics

为设备通信选择协议

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

Amazon IoT 并排设备协议

功能

MQTT

HTTPS

发布/订阅支持

发布和订阅

仅发布

SDK 支持

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

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

服务质量支持

MQTT QoS 级别 0 和 1

不支持 QoS

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

clientId 现场支持

设备断开检测

安全通信

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

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

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

主题定义

定义的应用程序

定义的应用程序

消息数据格式

定义的应用程序

定义的应用程序

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