MQTT 프로토콜

IT 관련/기타 2019. 11. 20. 17:36

1. Mqtt 프로토콜이란?


Message Queue for Telemetry Transport


 발행-구독 기반 메시징 프로토콜로, 보통 TCP/IP 기반으로 구현된다.



2. 구조

사진 출처 : https://www.segger.com/products/security-iot/emmqtt/

 

 Mqtt는 하나의 브로커 서버와 다수의 클라이언트로 구성된다.


 위 그림에서 보듯이 냉장고, 스마트폰, PC 등이 클라이언트로 브로커 서버와 연결하고, 브로커 서버는 클라이언트들과 데이터를 주고 받는다.


 한 클라이언트가 메시지를 Publish하면 해당 메시지의 Topic을 Subscribe해둔 클라이언트들에게 메시지가 전달된다.


 클라이언트는 브로커 서버에게 어떤 Topic을 Subscribe하여 관심있는 메시지를 받아 볼 수 있다.


3. 특징


1) 발행-구독 기반

2) 가볍다

3) 1서버 - 다수의 클라이언트 구조

4) 3단계의 QoS 지원

5) 다양한 개발언어, 다양한 클라이언트 지원



1) 발행(Publish) - 구독(Subscribe) 기반

 Mqtt 프로토콜에서 주고받는 메시지는 (Topic + 메시지)로 구성되고, 각 클라이언트들은 특정 토픽들을 구독(Subscribe) 할 수 있다.

 한 클라이언트가 메시지를 발행(publish)하면 메시지의 Topic을 구독한 클라이언트들은 모두 그 메시지를 받고, 구독하지 않은 클라이언트들은 메시지를 받지 못한다.


2) 가볍다.

 Mqtt 프로토콜은 주고받는 메시지의 크기가 작기 때문에 IoT 디바이스 등 대역폭이 제한되는 디바이스에서 사용하기 좋다.


3) 1서버 - 다수의 클라이언트 구조

 Mqtt 프로토콜은 하나의 서버에 다수의 클라이언트가 연결하는 구조를 가진다.


4) 3단계의 QoS 지원

 Qos(Quality of Service).

 Mqtt 프로토콜은 0,1,2 세단계의 QoS를 지원한다.


 0 (fire and foget) 

 최대 1회 전송. Topic을 동해 메시지를 전송하고 클라이언트가 메시지를 제대로 받았는지 보장하지 않는다.


 1 (acknowledged delivery)

 최소 1회 전송. 구독하는 클라이언트가 메시지를 받았는지 불확실하면 정해진 횟수만큼 재전송한다.(중복 전송의 위험성 존재)


 2 (assured delivery)

등록된 클라이언트는 요구된 메시지를 정확이 한 번 수신할 수 있게 보장한다.


5) 다양한 개발언어, 다양한 클라이언트 지원

 C, 자바, Node.js, 파이썬 등 다양한 개발언어로 Broker/Client를 개발할 수 있는 라이브러리가 존재한다.


4. 레퍼런스

http://woowabros.github.io/experience/2017/08/11/ost_mqtt_broker.html

https://en.wikipedia.org/wiki/MQTT

http://mqtt.org/

'IT 관련 > 기타' 카테고리의 다른 글

MIT 라이센스  (2) 2019.09.26
블로그 이미지

서기리보이

,