MQTT Nedir?

MQTT (MQ Telemetry Transport), kaynak kısıtlı ağ istemcilerine telemetri bilgilerini dağıtmak için basit bir yol sağlayan hafif bir mesajlaşma protokolüdür. Yayınlama / abone olma iletişim modelini kullanan protokol, makineden makineye (M2M) haberleşme için kullanılır ve nesnelerin internette (IoT) önemli bir rol oynar.

MQTT, kaynaklarla kısıtlanmış IoT cihazlarının, MQTT mesaj brokeri olarak çalışan bir sunucuya belirli bir konu hakkında bilgi göndermesini veya yayınlamasını sağlar. Aracı daha sonra bilgileri daha önce istemcinin konusuna abone olan istemcilere iletir. Bir insan için, bir konu hiyerarşik bir dosya yoluna benziyor. Müşteriler bir konunun hiyerarşisinin belirli bir seviyesine abone olabilir veya birden çok seviyeye abone olmak için joker karakter kullanabilir.

MQTT protokolü, zaman zaman bant genişliği kısıtlamaları veya güvenilir olmayan bağlantılar nedeniyle farklı düzeylerde gecikme yaşayan kablosuz ağlar için iyi bir seçimdir. Abone olan bir müşteriden bir aracıya olan bağlantı koparsa, aracı iletileri yeniden arabelleğe alır ve tekrar çevrimiçi olduğunda aboneye gönderir. Yayıncı istemciden aracıya olan bağlantının haber verilmeden kesilmesi durumunda, aracı bağlantıyı kapatabilir ve abonelere yayıncının talimatlarını içeren önbelleğe alınmış bir mesaj gönderebilir.

MQTT nasıl çalışır?

Bir MQTT oturumu dört aşamaya ayrılır: bağlantı, kimlik doğrulama, iletişim ve sonlandırma. Bir istemci, sunucu tarafından tanımlanan standart bir bağlantı noktasını veya özel bir bağlantı noktasını kullanarak aracıya bir TCP/IP bağlantısı oluşturarak başlar. Bağlantıyı oluştururken yeniden kullanılmış bir istemci kimliği sağlanmışsa, sunucunun eski bir oturuma devam edebileceğini bilmek önemlidir.

Standart bağlantı portu şifrelenmemiş iletişim için 1883 ve SSL / TLS kullanarak şifreli iletişim için 8883’tür. SSL / TLS anlaşması sırasında, istemci sunucuyu doğrulamak için sunucu sertifikasını doğrular. İstemci ayrıca kimliğini doğrulamak için kullanabileceği el sıkışma sırasında sunucuya bir sertifika sağlayabilir. Özellikle MQTT spesifikasyonunun bir parçası olmasa da, brokerların SSL / TLS müşteri tarafı sertifikalarıyla müşteri kimlik doğrulamasını desteklemesi alışılmış hale geldi.

MQTT protokolü, kaynak kısıtlı ve IoT cihazları için bir protokol olmayı hedeflediğinden, SSL / TLS her zaman bir seçenek olmayabilir ve bazı durumlarda istenmeyebilir. Bu gibi durumlarda kimlik doğrulama, istemci tarafından sunucuya paket sırasının bir parçası olarak gönderilen açık metin kullanıcı adı ve parola olarak sunulur. Bazı brokerler, özellikle de internette yayınlanan brokerlar isimsiz müşterileri kabul edecektir. Bu gibi durumlarda, kullanıcı adı ve şifre sadece boş bırakılır.

MQTT’ye hafif bir protokol denir, çünkü tüm mesajları küçük bir kod alanına sahiptir. Her mesaj, sabit bir başlık – 2 bayt – isteğe bağlı bir değişken başlık, 256 MB bilgi ile sınırlı bir mesaj yükü ve servis kalitesi (QoS) seviyesinden oluşur.

Üç farklı hizmet kalitesi, içeriğin MQTT protokolü tarafından nasıl yönetildiğini belirler. Daha yüksek QoS seviyeleri daha güvenilir olmakla birlikte, daha fazla gecikme ve bant genişliği gereksinimine sahiptir, bu nedenle abone olmak isteyen istemciler almak istedikleri en yüksek QoS seviyesini belirleyebilir.

En basit QoS seviyesi onaylanmamış bir servistir. Bu QoS seviyesi bir PUBLISH paket dizisi kullanır; yayıncı bir kez aracıya mesaj gönderir ve aracı, mesajı bir kez abonelere iletir. Mesajın doğru bir şekilde alındığından emin olmak için hiçbir mekanizma yoktur ve aracı mesajı kaydetmez. Bu QoS seviyesi aynı zamanda en fazla bir kez, QoS0 veya ateşle ve unut olarak da adlandırılabilir.

MQTT protokolü uygulamaları ve kullanım örnekleri

Facebook şu anda mesajlaşma uygulamaları için MQTT kullanıyor, sadece protokol cep telefonundan telefona mesajlaşma sırasında pil gücünü koruduğu için değil, aynı zamanda dünya genelinde tutarsız internet bağlantılarına rağmen, protokolün mesajların milisaniyede verimli bir şekilde iletilmesini sağladığı için .

Examples of MQTT use cases

AWS, Google Cloud, IBM Bluemix ve Microsoft Azure dahil olmak üzere çoğu büyük bulut hizmeti sağlayıcısı, ThingOn IoT platformda olduğu gibi MQTT’yi destekliyor.

MQTT, akıllı evler, sağlık hizmetleri, lojistik, endüstri ve üretim gibi ortamlarda gerçek zamanlı analitik, önleyici bakım ve izleme için M2M ve IoT cihazlarını kullanan uygulamalar için çok uygundur.

MQTT ile rekabet eden diğer protokoller

Kısıtlı kaynaklara sahip IoT cihazları için değerlendirilen diğer aktarım protokolleri arasında, bir istek / yanıt iletişim modeli kullanan Sınırlı Uygulama Protokolü (CoAP) ve MQTT gibi bir yayın / abone iletişim kullanan Gelişmiş Message Queuing Protokolü (AMQP) bulunur.

MQTT zorlukları: Güvenlik, birlikte çalışabilirlik ve kimlik doğrulama

MQTT protokolü güvenlik düşünülerek tasarlanmadığından, protokol geleneksel olarak uygulamaya özel amaçlar için güvenli arka uç ağlarda kullanılmıştır. MQTT’nin konu yapısı kolayca büyük bir ağaç oluşturabilir ve bir ağacı federasyon haline getirilebilecek daha küçük mantıksal alanlara bölmenin açık bir yolu yoktur. Bu, global olarak ölçeklenebilir bir MQTT ağı oluşturmayı zorlaştırır, çünkü konu ağacının boyutu büyüdükçe, karmaşıklık artar.

MQTT’nin bir başka olumsuz yönü, birlikte çalışabilirlik olmamasıdır. Mesaj yükleri ikili olduğundan ve nasıl kodlandıklarına dair hiçbir bilgi olmadan, özellikle farklı üreticilerin farklı uygulamalarının birbirleriyle sorunsuz bir şekilde çalışması gereken açık mimarilerde problemler ortaya çıkabilir.

Daha önce değinildiği gibi, MQTT protokolde yerleşik olan minimum doğrulama özelliğine sahiptir. Kullanıcı adı ve şifreler açık metin olarak gönderilir ve MQTT’nin güvenli kullanımı için herhangi bir şekilde ne yazık ki hafif bir protokol olmayan SSL / TLS kullanılmalıdır.

Müşterileri müşteri tarafı sertifikalarıyla doğrulamak basit bir işlem değildir ve MQTT’de tescilli bant dışı araçların kullanılması dışında, kimin bir konunun sahibi olduğunu ve kimin hakkında bilgi yayınlayabileceğini kontrol etmenin yolu yoktur. Bu, zararlı mesajların kasıtlı veya yanlışlıkla ağa enjekte edilmesini çok kolaylaştırır.

Ayrıca, mesajın alıcının asıl mesajı kimin gönderdiğini bilmesinin bir yolu yoktur, çünkü bu mesaj asıl mesajda yer almıyorsa. MQTT’ye özel bir şekilde uygulanması gereken güvenlik özellikleri, kod ayakizini artırır ve uygulamaları daha da zorlaştırır.

MQTT Nedir? isimli bu yazımızdan faydalanmanız dileklerimizle.

ThingsOn IoT Platform MQTT protokolünü tam olarak destekler.

Share This On Your Favorite Social Media!

Scroll to Top
ThingsOn Iot Platform

ThingsOn Canlı Demo Formu

Platformu 14 gün boyunca ücretsiz kullanmak için lütfen aşağıdaki formu doldurup “Gönder” butonuna tıklayın.

ThingsOn IoT Platform Logo Black

ThingsOn İletişim Formu

Lütfen aşağıdaki alanları doldurup “Gönder” butonuna tıklayın.