本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
设备通信协议
Amazon IoT Core支持使用 MQTT 和 MQTT 的设备和客户端WebSocket用于发布和订阅消息的安全 (WSS) 协议,以及使用 HTTPS 协议发布消息的设备和客户端。所有协议都支持 IPv4 和 IPv6。本节介绍设备和客户端的不同连接选项。
TLS 1.2 和 TLS 1.3
Amazon IoT Core使用TLS
Amazon IoT Device SDK 支持 MQTT 和基于 WSS 的 MQTT,并支持客户端连接的安全要求。我们建议使用 Amazon IoT Device SDK 将客户端连接到 Amazon IoT。
协议、端口映射和身份验证
设备或客户端如何使用设备终端节点连接到消息代理,取决于它使用的协议。下表列出了 Amazon IoT 设备终端节点支持的协议及其使用的身份验证方法和端口。
协议、身份验证和端口映射 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
协议 | 支持的操作 | 身份验证 | 端口 | ALPN 协议名称 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MQTT 结束了WebSocket |
发布、订阅 | Signature Version 4 | 443 |
不适用 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MQTT 结束了WebSocket |
发布、订阅 | 自定义身份验证 | 443 |
不适用 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MQTT |
发布、订阅 |
X.509 客户端证书 |
443† |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MQTT | 发布、订阅 | X.509 客户端证书 | 8883 | 不适用 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MQTT |
发布、订阅 |
自定义身份验证 |
443† |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
HTTPS |
仅发布 |
Signature Version 4 |
443 |
不适用 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
HTTPS |
仅发布 |
X.509 客户端证书 |
443† |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
HTTPS | 仅发布 | X.509 客户端证书 | 8443 | 不适用 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
HTTPS | 仅发布 | 自定义身份验证 | 443 | 不适用 |
应用程序层协议协商 (ALPN)
†通过 X.509 客户端证书身份验证在端口 443 上连接的客户端必须实现应用层协议协商 (ALPN)ClientHello
消息。
在端口 443 上,物联网:Data-ATS终端支持 ALPNx-amzn-http-caHTTP,但是物联网:乔布斯端点没有。
使用 ALPN 在端口 8443 HTTPS 和端口 443 MQTT 上x-amzn-mqtt-ca,自定义身份验证不能使用。
客户端连接到其Amazon Web Services 账户的设备终端节点。有关如何查找您账户的设备终端节点的信息,请参阅 Amazon IoT 设备数据和服务终端节点。
注意
Amazon SDK 不需要整个 URL。它们只需要端点主机名,例如pubsub.py
样本为Amazon IoT开启适用于 Python 的设备GitHub
连接到 Amazon IoT Core | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
协议 |
终端节点或 URL |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MQTT |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
基于 WSS 的 MQTT |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
HTTPS |
|
为设备通信选择协议
对于大多数通过设备终端节点进行的 IoT 设备通信,您将希望使用 MQTT 或基于 WSS 的 MQTT 协议;但是,设备终端节点也支持 HTTPS。下表比较了 Amazon IoT Core 使用这两种协议进行设备通信的方式。
Amazon IoT设备协议side-by-side | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
功能 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
发布/订阅支持 |
发布和订阅 |
仅发布 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SDK 支持 |
Amazon Device SDK 支持 MQTT 和 WSS 协议 |
不支持 SDK,但您可以使用特定于语言的方法来发出 HTTPS 请求 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
服务质量支持 |
通过传递查询字符串参数 ?qos=qos 来支持 QoS,其值可以是 0 或 1。您可以添加此查询字符串,以发布具有所需 QoS 值的消息。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
可以接收设备离线时错过的消息 | 是 | 否 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
是 |
否 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
设备断开检测 |
是 |
否 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
安全通信 |
可以。请参阅 协议、端口映射和身份验证。 |
可以。请参阅 协议、端口映射和身份验证。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
主题定义 |
定义的应用程序 |
定义的应用程序 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
消息数据格式 |
定义的应用程序 |
定义的应用程序 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
协议开销 | 小于 | 提高 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
功耗 | 小于 | 提高 |
连接持续时间限制
HTTPS 连接的持续时间不一定能超过接收和响应请求所需的时间。
MQTT 连接持续时间取决于您所使用的身份验证功能。下表列出了每个功能在理想条件下的最长连接持续时间。
按身份验证功能列出 MQTT 连接持续时间 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
功能 |
最长持续时间 * |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
X.509 客户端证书 |
1-2 周 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
自定义身份验证 |
1-2 周 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Signature Version 4 |
长达 24 小时 |
*无法保证
使用 X.509 证书和自定义身份验证,则连接持续时间没有硬性限制,但最短可能只有几分钟。导致连接中断的原因多种多样。以下列表包含一些最常见的原因。
Wi-Fi 可用性中断
互联网服务提供商 (ISP) 连接中断
服务修补
服务部署
服务自动扩展
服务主机不可用
负载均衡器问题和更新
客户端错误
您的设备必须执行检测断开连接的策略和重新连接的策略。获取有关断开连接事件及其处理方式的指导信息,请参阅 生命周期事件 中的 连接/断开连接事件。