Apa itu Yang dimaksud MQTT (Message Queuing Telemetry Transport) protocol ?

Apa itu Yang dimaksud MQTT (Message Queuing Telemetry Transport) protocol ?

protokol MQTT

MQTT adalah singkatan dari Message Queuing Telemetry Transport . MQTT adalah protokol konektivitas internet untuk mesin ke mesin. Ini adalah protokol transportasi pengiriman pesan yang sangat ringan dan bersifat publikasi-berlangganan. Protokol ini berguna untuk koneksi dengan lokasi jarak jauh yang bandwidth-nya sangat mahal. Karakteristik ini membuatnya berguna dalam berbagai situasi, termasuk lingkungan yang konstan seperti untuk komunikasi mesin ke mesin dan konteks internet untuk segala hal. Ini adalah sistem publikasi dan langganan tempat kita dapat mempublikasikan dan menerima pesan sebagai klien. Ini memudahkan komunikasi antara beberapa perangkat. Ini adalah protokol pengiriman pesan sederhana yang dirancang untuk perangkat yang terbatas dan dengan bandwidth rendah, jadi ini adalah solusi yang sempurna untuk aplikasi internet untuk segala hal.

Karakteristik MQTT

MQTT memiliki beberapa fitur unik yang jarang ditemukan pada protokol lain. Berikut ini adalah beberapa fitur MQTT:

  • Ini adalah protokol mesin ke mesin, yaitu menyediakan komunikasi antara perangkat.
  • Ini dirancang sebagai protokol pengiriman pesan yang sederhana dan ringan yang menggunakan sistem terbit/berlangganan untuk bertukar informasi antara klien dan server.
  • Tidak mengharuskan klien dan server membuat koneksi pada saat yang bersamaan.
  • Ini menyediakan transmisi data yang lebih cepat, seperti halnya WhatsApp/messenger yang menyediakan pengiriman yang lebih cepat. Ini adalah protokol pengiriman pesan secara real-time.
  • Hal ini memungkinkan klien untuk berlangganan pada pilihan topik yang sempit sehingga mereka dapat menerima informasi yang mereka cari.

Sejarah MQTT

MQTT dikembangkan oleh Dr. Andy Stanford-Clark, IBM , dan Arlen Nipper. Versi protokol 3.1 dan 3.1.1 sebelumnya tersedia di bawah MQTT ORG. Pada tahun 2014, MQTT secara resmi diterbitkan oleh OASIS. OASIS menjadi rumah baru untuk pengembangan MQTT. Kemudian, OASIS memulai pengembangan MQTT lebih lanjut. Versi 3.1.1 sesuai dengan versi 3.1 dan hanya membawa perubahan kecil seperti perubahan pada pesan koneksi dan klarifikasi versi 3.1. Versi MQTT terbaru adalah 5.0, yang merupakan penerus versi 3.1.1. Versi 5.0 tidak sesuai dengan versi 3.1.1. Menurut spesifikasinya, versi 5.0 memiliki sejumlah besar fitur yang membuat kode tetap pada tempatnya.

Tujuan fungsional utama dalam versi 5.0 adalah:

  • Peningkatan skalabilitas dan sistem berskala besar untuk menyiapkan ribuan atau jutaan perangkat.
  • Peningkatan dalam pelaporan kesalahan

Arsitektur MQTT

Untuk memahami arsitektur MQTT, pertama-tama kita melihat komponen-komponen MQTT.

  • Pesan
  • Klien
  • Server atau Broker
  • TEMA

Pesan

Pesan adalah data yang dibawa oleh protokol melalui jaringan untuk aplikasi. Saat pesan dikirimkan melalui jaringan, maka pesan tersebut berisi parameter berikut:

  1. Data muatan
  2. Kualitas Layanan (QoS)
  3. Koleksi Properti
  4. Nama Topik

Klien

Dalam MQTT, pelanggan dan penerbit adalah dua peran klien. Klien berlangganan topik untuk menerbitkan dan menerima pesan. Dengan kata sederhana, kita dapat mengatakan bahwa jika program atau perangkat apa pun menggunakan MQTT, maka perangkat tersebut disebut sebagai klien. Suatu perangkat adalah klien jika ia membuka koneksi jaringan ke server, menerbitkan pesan yang ingin dilihat klien lain, berlangganan pesan yang ingin diterimanya, berhenti berlangganan pesan yang tidak ingin diterimanya, dan menutup koneksi jaringan ke server.

Dalam MQTT, klien melakukan dua operasi:

Publikasikan: Ketika klien mengirimkan data ke server, maka kami menyebut operasi ini sebagai publikasi.

Berlangganan: Ketika klien menerima data dari server, maka kami menyebut operasi ini sebagai langganan.

Pelayan

Perangkat atau program yang memungkinkan klien untuk menerbitkan pesan dan berlangganan pesan. Server menerima koneksi jaringan dari klien, menerima pesan dari klien, memproses permintaan berlangganan dan berhenti berlangganan, meneruskan pesan aplikasi ke klien, dan menutup koneksi jaringan dari klien.

TEMA

Label yang diberikan pada pesan diperiksa terhadap langganan yang diketahui oleh server yang dikenal sebagai TOPIK.

Arsitektur MQTT

Sekarang kita akan melihat arsitektur MQTT. Untuk memahaminya lebih jelas, kita akan melihat contohnya. Misalkan sebuah perangkat memiliki sensor suhu dan ingin mengirim peringkat tersebut ke server atau broker. Jika aplikasi telepon atau desktop ingin menerima nilai suhu ini di sisi lain, maka akan ada dua hal yang terjadi. Penerbit pertama-tama mendefinisikan topik; misalnya, suhu kemudian menerbitkan pesan, yaitu nilai suhu. Setelah menerbitkan pesan, telepon atau aplikasi desktop di sisi lain akan berlangganan topik, yaitu suhu dan kemudian menerima pesan yang diterbitkan, yaitu nilai suhu. Peran server atau broker adalah untuk menyampaikan pesan yang diterbitkan ke telepon atau aplikasi desktop.

Format Pesan MQTT

MQTT menggunakan format perintah dan pengakuan perintah, yang berarti bahwa setiap perintah memiliki pengakuan terkait. Seperti yang ditunjukkan pada gambar di atas, perintah connect memiliki pengakuan connect, perintah subscribe memiliki pengakuan subscribe, dan perintah publikasi memiliki pengakuan publikasi. Mekanisme ini mirip dengan mekanisme jabat tangan seperti dalam protokol TCP.

Sekarang kita akan melihat struktur paket atau format pesan MQTT.

Format pesan MQTT terdiri dari header tetap 2 byte, yang ada di semua paket MQTT. Kolom kedua adalah header variabel, yang tidak selalu ada. Kolom ketiga adalah payload, yang juga tidak selalu ada. Kolom payload pada dasarnya berisi data yang sedang dikirim. Kita mungkin berpikir bahwa payload adalah kolom wajib, tetapi itu tidak terjadi. Beberapa perintah tidak menggunakan kolom payload, misalnya, pesan pemutusan sambungan.

Header Tetap

Mari kita amati format header tetap.

Seperti yang dapat kita amati dalam format di atas, header tetap berisi dua byte. Byte pertama berisi bidang-bidang berikut:

  • Jenis Paket Kontrol MQTT: Menempati 4 bit, yaitu posisi 7 hingga 4 bit. 4 bit ini merupakan nilai yang ditetapkan, dan setiap bit mewakili jenis paket kontrol MQTT.
  • Bendera khusus untuk tiap jenis paket MQTT: 4-bit sisanya mewakili bendera khusus untuk tiap jenis paket MQTT.

Byte 2 berisi panjang yang tersisa, yang merupakan bilangan bulat byte dengan panjang variabel. Ini mewakili jumlah byte yang tersisa dalam paket kontrol saat ini, termasuk data dalam header variabel dan payload. Oleh karena itu, kita dapat mengatakan bahwa panjang yang tersisa sama dengan jumlah data dalam header variabel dan payload.

Jenis Paket Kontrol MQTT

Tabel di atas menunjukkan jenis paket kontrol dengan nilai 4-bit dan arah aliran. Seperti yang dapat kita amati bahwa setiap perintah diikuti oleh pengakuan seperti CONNECT memiliki CONNACK, PUBLISH memiliki PUBACK, PUBREC, PUBREL, dan PUBCOMP, SUBSCRIBE memiliki SUBACK, UNSUBSCRIBE memiliki UNSUBACK.

Bendera Bit

Tabel di atas menunjukkan nilai bendera yang dikaitkan dengan setiap perintah. Di sini, “reserved” mengacu pada penggunaan di masa mendatang, yang berarti bahwa perintah tersebut tidak sedang digunakan saat ini. Dalam kasus perintah PUBLISH, bit bendera dibagi lagi menjadi DUP, QoS, dan RETAIN, di mana DUP adalah pengiriman duplikat paket PUBLISH, QoS adalah Quality of Service, dan RETAIN adalah bendera pesan yang dipertahankan.

Panjang yang tersisa

Panjang yang tersisa adalah bilangan bulat dengan panjang variabel yang menunjukkan jumlah byte yang tersisa dalam paket kontrol saat ini, termasuk data dalam header variabel dan muatan. Oleh karena itu, panjang yang tersisa sama dengan data dalam header variabel ditambah muatan.

Panjang yang tersisa = panjang header variabel + panjang muatan

Misalnya, jika panjang variabel header adalah 20 dan panjang payload adalah 30, maka panjang sisanya adalah 50.

Panjang yang tersisa dapat digunakan hingga 4 byte, dan dimulai dari 2 byte dan dapat digunakan hingga 4 byte.

Bidang ini menggunakan 7-bit untuk panjangnya, dan bit MSB dapat digunakan untuk melanjutkan bendera. Jika bendera kelanjutan adalah 1, byte berikutnya juga merupakan bagian dari

panjang yang tersisa. Jika tanda kelanjutan adalah 0, satu byte adalah byte terakhir dari panjang yang tersisa.

Header variabel

Beberapa jenis paket kontrol MQTT juga berisi kolom opsional, yaitu, komponen header variabel. Kolom ini berada di antara header tetap dan muatan. Konten header variabel bergantung pada jenis paket. Header variabel berisi kolom pengenal paket, yang umum dalam beberapa jenis paket. Komponen header variabel dari banyak jenis paket kontrol MQTT mencakup bilangan bulat 2-byte, yaitu, kolom pengenal paket.

Daftar yang diberikan di bawah ini berisi bidang pengenal paket:

  • MENERBITKAN
  • PULANG KEMBALI
  • PUBREK
  • PUBLIKASI
  • PUBLIKASI
  • LANGGANAN
  • KEMBALI
  • BERHENTI BERLANGGANAN
  • BERHENTI BERLANGGANAN

Poin-poin penting terkait bidang pengenal paket:

  • Paket PUBLISH tidak boleh berisi kolom pengenal paket jika nilai QoS (Quality of Service) ditetapkan ke nol. Artinya, jika nilai QoS lebih besar dari nol, hanya paket PUBLISH yang akan berisi kolom pengenal paket.
  • Saat klien mengirim paket kontrol MQTT SUBSCRIBE, UNSUBSCRIBE, atau PUBLISH baru, ia harus menetapkan pengenal paket bukan nol yang saat ini tidak digunakan.
  • Saat server mengirim paket kontrol MQTT PUBLISH baru, ia harus menetapkan pengenal paket bukan nol yang saat ini tidak digunakan.
  • PUBACK, PUBREC, PUBUREL, PUBREC adalah paket pengakuan perintah PUBLISH yang berisi pengenal paket yang sama dengan paket PUBLISH.
  • SUBACK dan UNSUBACK masing-masing merupakan paket pengakuan dari SUBSCRIBE dan UNSUBSCRIBE. Kedua paket, yaitu SUBACK dan UNSUBACK, menggunakan pengenal paket yang sama dengan paket SUBSCRIBE dan UNSUBSCRIBE.
  • Pengidentifikasi paket dapat digunakan kembali setelah memproses paket pengakuan yang sesuai. Pengidentifikasi paket dapat didefinisikan sebagai berikut:

Jika nilai QoS adalah 1 maka paket pengakuan PUBLISH akan menjadi PUBACK. Jika memproses PUBACK, maka pengenal paket PUBACK dapat digunakan kembali.

Jika nilai QoS adalah 2 maka paket pengakuan PUBLISH akan berupa PUBCOMP atau PUBREC.

Muatan

Dalam format pesan ICMP, paket kontrol MQTT terakhir adalah payload. Bidang ini berisi data yang akan dikirim. Misalnya, dalam kasus paket CONNECT, payload adalah ID klien, nama pengguna dan kata sandi, dan paket PUBLISH, payload hanyalah pesan aplikasi.

//AGR

Referensi : [1]

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *