

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Protocolos de comunicação do dispositivo
<a name="protocols"></a><a name="iot-message-broker"></a>

AWS IoT Core suporta dispositivos e clientes que usam os protocolos MQTT e MQTT over WebSocket Secure (WSS) para publicar e assinar mensagens, e dispositivos e clientes que usam o protocolo HTTPS para publicar mensagens. Todos os protocolos suportam IPv4 IPv6 e. Esta seção descreve as diferentes opções de conexão para dispositivos e clientes.

## Versões do protocolo TLS
<a name="connection-protocol-tls"></a>

AWS IoT Core usa [TLS](https://en.wikipedia.org/wiki/Transport_Layer_Security) [versão 1.2](https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.2) e [TLS versão 1.3](https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.3) para criptografar todas as comunicações. Você pode configurar versões adicionais da política de TLS para seu endpoint [definindo as configurações de TLS nas configurações de domínio](https://docs.aws.amazon.com//iot/latest/developerguide/iot-endpoints-tls-config.html). Ao conectar dispositivos a clientes AWS IoT Core, os clientes podem enviar a [extensão Server Name Indication (SNI)](https://tools.ietf.org/html/rfc3546#section-3.1), que é necessária para recursos como [registro de várias contas](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html#multiple-account-cert), [endpoints configuráveis](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html), [domínios personalizados](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable-custom.html) e [endpoints da VPC](https://docs.aws.amazon.com//iot/latest/developerguide/IoTCore-VPC.html). Para obter mais informações, consulte [Segurança de transporte no AWS IoT](transport-security.html).

Os [AWS IoT Dispositivo SDKs](iot-connect-devices.md#iot-connect-device-sdks) oferecem suporte a MQTT e MQTT via WSS e aos requisitos de segurança das conexões do cliente. Recomendamos usar os [AWS IoT Dispositivo SDKs](iot-connect-devices.md#iot-connect-device-sdks) para conectar clientes à AWS IoT.

## Protocolos, mapeamentos de porta e autenticação
<a name="protocol-mapping"></a><a name="protocol-port-mapping"></a>

A forma como um dispositivo ou cliente se conecta ao agente de mensagens é configurável usando um [tipo de autenticação](#connection-protocol-auth-mode). Por padrão, ou quando nenhuma extensão SNI é enviada, o método de autenticação é baseado no protocolo de aplicativo, na porta e na extensão TLS de negociação de protocolo da camada de aplicativo (ALPN) que os dispositivos usam. A tabela a seguir lista a autenticação esperada com base na porta, porta e ALPN.


**Protocolos, autenticação e mapeamentos de porta**  

| Protocolo | Operações compatíveis | Autenticação | Porta | Nome do protocolo ALPN | 
| --- | --- | --- | --- | --- | 
|  Acabou o MQTT WebSocket  | Publicar/assinar | Signature versão 4 | 443 |  N/D  | 
|  Acabou o MQTT WebSocket  | Publicar/assinar | Autenticação personalizada | 443 |  N/D  | 
|  MQTT  | Publicar/assinar |  Certificado do cliente X.509  |  443†  |  `x-amzn-mqtt-ca`  | 
| MQTT | Publicar/assinar | Certificado do cliente X.509 | 8883 | N/D | 
|  MQTT  | Publicar/assinar |  Autenticação personalizada  |  443†  |  `mqtt`  | 
|  HTTPS  | Somente publicação |  Signature versão 4  |  443  |  N/D  | 
|  HTTPS  | Somente publicação |  Certificado do cliente X.509  |  443†  |  `x-amzn-http-ca`  | 
| HTTPS | Somente publicação | Certificado do cliente X.509 | 8443 | N/D | 
| HTTPS | Somente publicação | Autenticação personalizada | 443 | N/D | 

**Application Layer Protocol Negotiation (ALPN)**  
† Ao usar configurações de endpoint padrão, os clientes que se conectam na porta 443 com autenticação de certificado de cliente X.509 devem implementar a extensão TLS de [negociação de protocolo de camada de aplicativo (ALPN)](https://tools.ietf.org/html/rfc7301) e usar o [nome do protocolo ALPN listado no ALPN](https://tools.ietf.org/html/rfc7301#section-3.1) enviado pelo cliente como parte da mensagem ProtocolNameList . `ClientHello`  
[Na porta 443, o endpoint [IoT:Data-ATS](iot-connect-devices.md#iot-connect-device-endpoint-table) suporta ALPN x-amzn-http-ca HTTP, mas o endpoint IoT:Jobs não.](iot-connect-devices.md#iot-connect-device-endpoint-table)  
Na porta 8443 HTTPS e na porta 443 MQTT com ALPN x-amzn-mqtt-ca, a [autenticação personalizada não pode ser usada](custom-authentication.md).

Os clientes se conectam aos endpoints Conta da AWS de seus dispositivos. Consulte [AWS IoT dados do dispositivo e endpoints de serviço](iot-connect-devices.md#iot-connect-device-endpoints) para ver informações sobre como encontrar os endpoints do dispositivo da sua conta.

**nota**  
AWS SDKs não exigem o URL inteiro. Eles exigem apenas o nome do host do endpoint, como a [`pubsub.py`amostra do AWS IoT Device SDK for Python on](https://github.com/aws/aws-iot-device-sdk-python-v2/blob/master/samples/pubsub.py#L100). GitHub Transmitir o URL inteiro conforme fornecido na tabela a seguir pode gerar um erro, como nome de host inválido.


**Conectando-se a AWS IoT Core**  

|  Protocolo  |  Endpoint ou URL  | 
| --- | --- | 
|  MQTT  |  `iot-endpoint`  | 
|  MQTT via WSS  |  `wss://iot-endpoint/mqtt`  | 
|  HTTPS  |  `https://iot-endpoint/topics`  | 

## Escolher um protocolo de aplicativo para a comunicação do dispositivo
<a name="protocol-selection"></a>

Para a maioria das comunicações de dispositivos de IoT por meio dos endpoints do dispositivo, convém usar os protocolos Secure MQTT ou MQTT over WebSocket Secure (WSS); no entanto, os endpoints do dispositivo também oferecem suporte a HTTPS.

A tabela a seguir compara como AWS IoT Core usa os dois protocolos de alto nível (MQTT e HTTPS) para comunicação com dispositivos.


**AWS IoT protocolos de dispositivos (MQTT e HTTPS) side-by-side**  

|  Recurso  |  [MQTT](mqtt.md)  |  [HTTPS](http.md)  | 
| --- | --- | --- | 
|  Suporte para publicação/assinatura  |  Publicação e assinatura  |  Somente publicação  | 
|  Compatibilidade com o SDK  |  [AWS O dispositivo SDKs](iot-connect-devices.md#iot-connect-device-sdks) suporta os protocolos MQTT e WSS  |  Não há suporte para SDK, mas você pode usar métodos específicos de linguagem para fazer solicitações HTTPS  | 
|  Suporte à qualidade de serviço  |  [Níveis 0 e 1 de QoS do MQTT](mqtt.md#mqtt-qos)  | A QoS é compatível enviando um parâmetro de string de consulta ?qos=qos em que o valor pode ser 0 ou 1. Você pode adicionar essa string de consulta para publicar uma mensagem com o valor de QoS desejado. | 
| Pode receber mensagens perdidas enquanto o dispositivo estava off-line | Sim | Não | 
|  Suporte a campo de `clientId`  |  Sim  |  Não  | 
|  Detecção de desconexão do dispositivo  |  Sim  |  Não  | 
|  Comunicações seguras  |  Sim. Consulte [Protocolos, mapeamentos de porta e autenticação](#protocol-mapping)  |  Sim. Consulte [Protocolos, mapeamentos de porta e autenticação](#protocol-mapping)  | 
|  Definições de tópico  |  Aplicativo definido  |  Aplicativo definido  | 
|  Formato dos dados de mensagem  |  Aplicativo definido  |  Aplicativo definido  | 
| Sobrecarga do protocolo | Menor | Mais alto | 
| Consumo de energia | Menor | Mais alto | 

## Escolher um tipo de autenticação para a comunicação do seu dispositivo
<a name="connection-protocol-auth-mode"></a>

Você pode configurar o tipo de autenticação para seu endpoint de IoT usando endpoints configuráveis. Como alternativa, use a configuração padrão e determine como seus dispositivos são autenticados com a combinação de protocolo de aplicativo, porta e extensão ALPN TLS. O tipo de autenticação escolhido determina como seus dispositivos serão autenticados ao se conectarem AWS IoT Core. Existem cinco tipos de autenticação: 

**certificado X.509**

Autentique dispositivos usando [certificados de cliente X.509](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html), que são AWS IoT Core validados para autenticar o dispositivo. Esse tipo de autenticação funciona com os protocolos Secure MQTT (MQTT over TLS) e HTTPS.

**Certificado X.509 com autorizador personalizado**

Autentique dispositivos usando [certificados de cliente X.509](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html) e execute ações adicionais de autenticação usando um [autorizador personalizado](https://docs.aws.amazon.com//iot/latest/developerguide/config-custom-auth.html), que receberá informações do certificado de cliente X.509. Esse tipo de autenticação funciona com os protocolos Secure MQTT (MQTT over TLS) e HTTPS. Esse tipo de autenticação só é possível usando endpoints configuráveis com autenticação personalizada X.509. Não há opção ALPN.

**AWS Signature versão 4 (SigV4)**

Autentique dispositivos usando o Cognito ou seu serviço de backend, oferecendo suporte à federação social e corporativa. Esse tipo de autenticação funciona com os protocolos MQTT over WebSocket Secure (WSS) e HTTPS.

**Autorizador personalizado**

Autentique dispositivos configurando uma função do Lambda para processar as informações de autenticação personalizadas enviadas para o AWS IoT Core. Esse tipo de autenticação funciona com os protocolos Secure MQTT (MQTT over TLS), HTTPS e MQTT over WebSocket Secure (WSS).

**Padrão**

Autentique dispositivos com base na extensão de negociação de protocolo da camada de and/or aplicativo de porta (ALPN) que os dispositivos usam. Não há suporte para algumas opções adicionais de autenticação. Para obter mais informações, consulte [Protocolos, mapeamentos de porta e autenticação](#protocol-mapping).

A tabela abaixo mostra todas as combinações compatíveis de tipos de autenticação e protocolos de aplicativos.


**Combinações com suporte de tipos de autenticação e protocolos de aplicativo**  

| Tipo de autenticação | Secure MQTT (MQTT over TLS) | MQTT via WebSocket Secure (WSS) | HTTPS | Padrão | 
| --- | --- | --- | --- | --- | 
| certificado X.509 | ✓ |  | ✓ |  | 
| Certificado X.509 com autorizador personalizado | ✓ |  | ✓ |  | 
| AWS Signature versão 4 (SigV4) |  | ✓ | ✓ |  | 
| Autorizador personalizado | ✓ | ✓ | ✓ |  | 
| Padrão |  |  |  | ✓ | 

## Limites de duração da conexão
<a name="connection-duration"></a>

Não é garantido que as conexões HTTPS durem mais do que o tempo necessário para receber e responder às solicitações.

A duração da conexão MQTT depende do atributo de autenticação usado. A tabela a seguir lista a duração máxima da conexão em condições ideais para cada atributo.


**Duração da conexão MQTT por atributo de autenticação**  

|  Recurso  |  Duração máxima \$1  | 
| --- | --- | 
|  Certificado do cliente X.509  |  1 a 2 semanas  | 
|  Autenticação personalizada  |  1 a 2 semanas  | 
|  Signature versão 4  |  Até 24 horas  | 

\$1 Não garantido

Com certificados X.509 e autenticação personalizada, a duração da conexão não tem um limite rígido, mas pode ser de apenas alguns minutos. Interrupções de conexão podem ocorrer por vários motivos. A lista a seguir contém alguns dos motivos mais comuns.
+ Interrupções na disponibilidade de Wi-Fi
+ Interrupções na conexão do provedor de serviços de Internet (ISP)
+ Patches de serviço
+ Implantações de serviços
+ Autoescalabilidade do serviço
+ Host de serviço indisponível
+ Problemas e atualizações do balanceador de carga
+ Erros no lado do cliente,

Seus dispositivos devem implementar estratégias para detectar desconexões e reconectar-se. Para obter mais informações sobre eventos de desconexão e orientações sobre como lidar com eles, consulte [Eventos de conexão/desconexão](life-cycle-events.md#connect-disconnect) em [Eventos de ciclo de vida](life-cycle-events.md).