

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Protokol komunikasi perangkat
<a name="protocols"></a><a name="iot-message-broker"></a>

AWS IoT Core mendukung perangkat dan klien yang menggunakan protokol MQTT dan MQTT over WebSocket Secure (WSS) untuk mempublikasikan dan berlangganan pesan, perangkat, dan klien yang menggunakan protokol HTTPS untuk mempublikasikan pesan, dan Direct Messaging API untuk mengirim pesan ke klien tertentu yang terhubung. Semua protokol mendukung IPv4 dan IPv6. Bagian ini menjelaskan berbagai opsi koneksi untuk perangkat dan klien.

## Versi protokol TLS
<a name="connection-protocol-tls"></a>

AWS IoT Core menggunakan [ TLS ](https://en.wikipedia.org/wiki/Transport_Layer_Security) [ versi 1.2 ](https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.2) dan [ TLS versi 1.3 ](https://en.wikipedia.org/wiki/Transport_Layer_Security#TLS_1.3) untuk mengenkripsi semua komunikasi. Anda dapat mengonfigurasi versi kebijakan TLS tambahan untuk titik akhir dengan [ mengonfigurasi setelan TLS dalam konfigurasi domain. ](https://docs.aws.amazon.com/iot/latest/developerguide/iot-endpoints-tls-config.html) Saat menghubungkan perangkat ke AWS IoT Core, klien dapat mengirim ekstensi [ Server Name Indication (SNI)](https://tools.ietf.org/html/rfc3546#section-3.1), yang diperlukan untuk fitur seperti pendaftaran [ multi-akun, titik akhir yang [ dapat dikonfigurasi](https://docs.aws.amazon.com/iot/latest/developerguide/iot-custom-endpoints-configurable.html), domain [ khusus](https://docs.aws.amazon.com/iot/latest/developerguide/iot-custom-endpoints-configurable-custom.html), dan titik akhir VPC](https://docs.aws.amazon.com/iot/latest/developerguide/x509-client-certs.html#multiple-account-cert). [https://docs.aws.amazon.com/iot/latest/developerguide/IoTCore-VPC.html](https://docs.aws.amazon.com/iot/latest/developerguide/IoTCore-VPC.html) Untuk informasi selengkapnya, lihat [ Keamanan Transportasi di AWS IoT](transport-security.html).

[AWS IoT SDK Perangkat](iot-connect-devices.md#iot-connect-device-sdks)Dukungan MQTT dan MQTT melalui WSS dan mendukung persyaratan keamanan koneksi klien. Kami merekomendasikan menggunakan [AWS IoT SDK Perangkat](iot-connect-devices.md#iot-connect-device-sdks) untuk menghubungkan klien ke AWS IoT.

## Protokol, pemetaan port, dan otentikasi
<a name="protocol-mapping"></a><a name="protocol-port-mapping"></a>

Bagaimana perangkat atau klien terhubung ke broker pesan dapat dikonfigurasi menggunakan jenis [Memilih jenis otentikasi untuk komunikasi perangkat Anda](#connection-protocol-auth-mode) otentikasi. Secara default atau ketika tidak ada ekstensi SNI yang dikirim, metode otentikasi didasarkan pada protokol aplikasi, port, dan ekstensi TLS Application Layer Protocol Negotiation (ALPN) yang digunakan perangkat. Tabel berikut mencantumkan otentikasi yang diharapkan berdasarkan port, port, dan ALPN.


**Protokol, otentikasi, dan pemetaan port**  

| Protokol | Operasi didukung | Autentikasi | Port | Nama protokol ALPN | 
| --- | --- | --- | --- | --- | 
| MQTT over WebSocket | Publikasikan, Berlangganan | Tanda Tangan Versi 4 | 443 | N/A | 
| MQTT over WebSocket | Publikasikan, Berlangganan | Autentikasi kustom | 443 | N/A | 
| MQTT | Publikasikan, Berlangganan | X.509 sertifikat klien | 443  †  | `x-amzn-mqtt-ca` | 
| MQTT | Publikasikan, Berlangganan | X.509 sertifikat klien | 8883 | N/A | 
| MQTT | Publikasikan, Berlangganan | Autentikasi kustom | 443  †  | `mqtt` | 
| HTTPS | Publikasikan saja | Tanda Tangan Versi 4 | 443 | N/A | 
| HTTPS | Publikasikan saja | X.509 sertifikat klien | 443  †  | `x-amzn-http-ca` | 
| HTTPS | Publikasikan saja | X.509 sertifikat klien | 8443 | N/A | 
| HTTPS | Publikasikan saja | Autentikasi kustom | 443 | N/A | 

**Negosiasi Protokol Lapisan Aplikasi (ALPN)**  
†  Saat menggunakan konfigurasi titik akhir default, klien yang terhubung pada port 443 dengan otentikasi sertifikat X.509 klien harus mengimplementasikan ekstensi [ TLS Appl ](https://tools.ietf.org/html/rfc7301) ication Layer Protocol Negotiation ([ALPN) dan menggunakan nama protokol ALPN yang ](https://tools.ietf.org/html/rfc7301#section-3.1) tercantum dalam ALPN yang ProtocolNameList dikirim oleh klien sebagai bagian dari pesan. `ClientHello`  
Pada port 443, [ IoT:Data-ATS ](iot-connect-devices.md#iot-connect-device-endpoint-table) titik akhir mendukung ALPN x-amzn-http-ca HTTP, tetapi titik akhir tidak. [ IoT:Jobs ](iot-connect-devices.md#iot-connect-device-endpoint-table)  
Pada port 8443 HTTPS dan port 443 MQTT dengan ALPN x-amzn-mqtt-ca, otentikasi khusus tidak dapat digunakan. [Autentikasi dan otorisasi kustom](custom-authentication.md)

Klien terhubung ke titik Akun AWS akhir perangkat mereka. Lihat [AWS IoT data perangkat dan titik akhir layanan](iot-connect-devices.md#iot-connect-device-endpoints) informasi tentang cara menemukan titik akhir perangkat akun Anda.

**catatan**  
AWS SDK tidak memerlukan seluruh URL. Mereka hanya memerlukan nama host titik akhir seperti [`pubsub.py` sampel untuk AWS IoT Device SDK for Python on GitHub](https://github.com/aws/aws-iot-device-sdk-python-v2/blob/master/samples/pubsub.py#L100). Meneruskan seluruh URL seperti yang disediakan dalam tabel berikut dapat menghasilkan kesalahan seperti nama host yang tidak valid.


**Menghubungkan ke AWS IoT Core**  

|  Protokol  |  Titik akhir atau URL  | 
| --- | --- | 
| MQTT | `{{iot-endpoint}}` | 
| MQTT tentang WSS | `wss://{{iot-endpoint}}/mqtt` | 
| HTTPS | `https://{{iot-endpoint}}/topics` | 

## Memilih protokol aplikasi untuk komunikasi perangkat Anda
<a name="protocol-selection"></a>

Untuk sebagian besar komunikasi perangkat IoT melalui titik akhir perangkat, Anda akan ingin menggunakan protokol Secure MQTT atau MQTT over WebSocket Secure (WSS); Namun, titik akhir perangkat juga mendukung HTTPS.

Tabel berikut membandingkan bagaimana AWS IoT Core menggunakan dua protokol tingkat tinggi (MQTT dan HTTPS) untuk komunikasi perangkat.


**AWS IoT protokol perangkat (MQTT dan HTTPS) berdampingan**  

|  Fitur  |  [MQTT](mqtt.md)  |  [HTTPS ](http.md)  | 
| --- | --- | --- | 
| Publish/Subscribe dukungan | Publikasikan dan berlangganan | Publikasikan saja | 
| Dukungan SDK | [AWS SDK perangkat ](iot-connect-devices.md#iot-connect-device-sdks) mendukung protokol MQTT dan WSS | Tidak ada dukungan SDK, tetapi Anda dapat menggunakan metode khusus bahasa untuk membuat permintaan HTTPS | 
| Dukungan Kualitas Layanan | [MQTT QoS level 0 dan 1 ](mqtt.md#mqtt-qos) | QoS didukung dengan meneruskan parameter string kueri ?qos=qos di mana nilainya bisa 0 atau 1. Anda dapat menambahkan string kueri ini untuk menerbitkan pesan dengan nilai QoS yang Anda inginkan. | 
| Dapat menerima pesan yang terlewatkan saat perangkat sedang offline | Ya | Tidak | 
| `clientId`dukungan lapangan | Ya | Tidak | 
| Deteksi pemutusan perangkat | Ya | Tidak | 
| Komunikasi yang aman | Ya. Lihat [Protokol, pemetaan port, dan otentikasi](#protocol-mapping) | Ya. Lihat [Protokol, pemetaan port, dan otentikasi](#protocol-mapping) | 
| Definisi topik | Aplikasi didefinisikan | Aplikasi didefinisikan | 
| Format data pesan | Aplikasi didefinisikan | Aplikasi didefinisikan | 
| Overhead protokol | Lebih rendah | Lebih tinggi | 
| Konsumsi daya | Lebih rendah | Lebih tinggi | 

## Memilih jenis otentikasi untuk komunikasi perangkat Anda
<a name="connection-protocol-auth-mode"></a>

Anda dapat mengonfigurasi jenis otentikasi untuk titik akhir IoT Anda menggunakan titik akhir yang dapat dikonfigurasi. Atau, gunakan konfigurasi default dan tentukan bagaimana perangkat Anda melakukan otentikasi dengan protokol aplikasi, port, dan kombinasi ekstensi ALPN TLS. Jenis otentikasi yang Anda pilih menentukan bagaimana perangkat Anda akan mengotentikasi saat menyam AWS IoT Core bung. Ada lima jenis otentikasi: 

**X.509 sertifikat **

Otentikasi perangkat menggunakan sertifikat [ X.509 klien](https://docs.aws.amazon.com/iot/latest/developerguide/x509-client-certs.html), yang AWS IoT Core memvalidasi untuk mengotentikasi perangkat. Jenis otentikasi ini bekerja dengan protokol Secure MQTT (MQTT over TLS) dan HTTPS.

**X.509 sertifikat dengan otorizer kustom **

Otentikasi perangkat menggunakan sertifikat [ X.509 klien ](https://docs.aws.amazon.com/iot/latest/developerguide/x509-client-certs.html) dan lakukan tindakan otentikasi tambahan menggunakan [ otorisasi khusus](https://docs.aws.amazon.com/iot/latest/developerguide/config-custom-auth.html), yang akan menerima informasi sertifikat X.509 klien. Jenis otentikasi ini bekerja dengan protokol Secure MQTT (MQTT over TLS) dan HTTPS. Jenis otentikasi ini hanya dimungkinkan menggunakan titik akhir yang dapat dikonfigurasi dengan otentikasi X.509 khusus. Tidak ada opsi ALPN.

**AWS Tanda Tangan Versi 4 (SigV4) **

Otentikasi perangkat menggunakan Cognito atau layanan backend Anda, mendukung federasi sosial dan perusahaan. Jenis otentikasi ini bekerja dengan protokol MQTT over WebSocket Secure (WSS) dan HTTPS.

**Otorisasi kustom **

Mengautentikasi perangkat dengan mengonfigurasi fungsi Lambda untuk memproses informasi otentikasi khusus yang dikirim ke. AWS IoT Core Jenis otentikasi ini bekerja dengan protokol Secure MQTT (MQTT over TLS), HTTPS, dan MQTT over WebSocket Secure (WSS).

**Default **

Mengautentikasi perangkat berdasarkan ekstensi port and/or application layer protocol negosiasi (ALPN) yang digunakan perangkat. Beberapa opsi otentikasi tambahan tidak didukung. Untuk informasi selengkapnya, lihat [Protokol, pemetaan port, dan otentikasi](#protocol-mapping).

Tabel di bawah ini menunjukkan semua kombinasi jenis otentikasi dan protokol aplikasi yang didukung.


**Kombinasi jenis otentikasi dan protokol aplikasi yang didukung**  

| Jenis autentikasi | MQTT aman (MQTT melalui TLS) | MQTT melalui A WebSocket man (WSS) | HTTPS | Default | 
| --- | --- | --- | --- | --- | 
| X.509 sertifikat  | ✓ |  | ✓ |  | 
| X.509 sertifikat dengan otorizer kustom  | ✓ |  | ✓ |  | 
| AWS Tanda Tangan Versi 4 (SigV4)  |  | ✓ | ✓ |  | 
| Otorisasi kustom  | ✓ | ✓ | ✓ |  | 
| Default  |  |  |  | ✓ | 

## Batas durasi koneksi
<a name="connection-duration"></a>

Koneksi HTTPS tidak dijamin bertahan lebih lama dari waktu yang dibutuhkan untuk menerima dan menanggapi permintaan.

Durasi koneksi MQTT tergantung pada fitur otentikasi yang Anda gunakan. Tabel berikut mencantumkan durasi koneksi maksimum dalam kondisi ideal untuk setiap fitur.


**Durasi koneksi MQTT dengan fitur otentikasi**  

|  Fitur  |  Durasi maksimum  \*   | 
| --- | --- | 
| X.509 sertifikat klien | 1-2 minggu | 
| Autentikasi kustom | 1-2 minggu | 
| Tanda Tangan Versi 4 | Hingga 24 jam | 

\*  Tidak dijamin

Dengan X.509 sertifikat dan otentikasi khusus, durasi koneksi tidak memiliki batas keras, tetapi bisa sesingkat beberapa menit. Gangguan koneksi dapat terjadi karena berbagai alasan. Daftar berikut berisi beberapa alasan paling umum.
+ Wi-Fi gangguan ketersediaan
+ Gangguan koneksi penyedia layanan internet (ISP)
+ Tambalan layanan
+ Deployment Layanan
+ Penskalaan otomatis layanan
+ Host layanan tidak tersedia
+ Masalah dan pembaruan penyeimbang beban
+ Client-side kesalahan

Perangkat Anda harus menerapkan strategi untuk mendeteksi pemutusan dan menyambung kembali. Untuk informasi tentang peristiwa pemutusan hubungan dan panduan tentang cara menanganinya, lihat [Connect/Disconnect acara](life-cycle-events.md#connect-disconnect) di[Peristiwa siklus hidup](life-cycle-events.md).