miin29na

[MQTT] MQTT Protocol 본문

IT/Mqtt

[MQTT] MQTT Protocol

miin29na 2020. 4. 11. 20:19

MQTT

MQTT(Message Queuing Telemetry Transport) 는 M2M(machine-to-machine), IoT(Internet of things) 환경에서와 같이 저전력, 낮은 대역폭 환경에서 사용 할수 있도록 설계된 경량의 메시지 프로토콜이다.

 

Push 기술로, Server/Client 방식이 아닌 Broker 를 통해 송신자(Publisher)가 메시지를 발행(publish) 하고 수신자(Subscriber)가 메시지를 구독(subscribe) 하는 방식을 사용한다.

 

Facebook Messenger 에서 사용되고  있다.

 

MQTT Protocol 

http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html

 

MQTT Version 3.1.1

 

docs.oasis-open.org

MQTT 

1. Connection Oriented

TCP/IP 연결 기반으로, MQTT Broker 와 연결을 요청하는 Client 들은 계속적으로 연결을 유지한다. 

 

2. QoS(Quality of Service)

 - Level 0: 메시지는 최대 1회 전송. Topic 을 통해 message 를 전달 하지만 publisher 에게 전달 성공여부는 확인하지 않는다.

 - Level 1:  메시지는 최소 1회 전송. message 전달하고 publisher 에게 성공여부를 알린다. publisher가 성공여부를 받지 못하면 중복된 message 를 보낸다.

                  받은 것이 불확실해지면 정해진 횟수만큼 전송한다. 중복된 message 를 보낼 수 있다.

 - Level 2 : 메시지는 반드시 1회만 전송. 성공여부를 받지 못하더라도 message 를 보낸 사실을 알고 있으므로 중복 메세지를 보내지 않는다.(성공 여부를 ㅎㄴ핸드 세이킹 하는 과정이 존재)

                  message 를 정확히 한번 수신할수 있도록 한다.

 

. Topic

 / 로 구분 지어 계층으로 관리 한다. 대량의 센서들을 관리하기 용이하다.

Topic 기준으로 Publisher 와 Subscriber가 구독하거나 발행한다.

Topic 구조 예시

. Publish/Subscribe

- Receiver 는 수신 받기를 원하는 topic 을 subscribe 한다.

- Publisher는 publish 하면, Broker 는 subscribe 하고 있는 다수의 receiver 들에게 Message 를 전달한다. 

 

MQTT Broker

MQTT Server 라고 하지 않고 Broker 라고 하는 이유는 Publisher 와 Subscriber 가 Message를 주고 받을 수 있도록 중개만 해주기 때문이다. 

 

Broker 의 종류

-rabbitMQ

-activeMQ

-emqx

- Mosquitto(간단한 테스트용으로 용이)

Mosquitto 설치/테스트 : https://miin29na.tistory.com/74

 

[MQTT]Mosquitto 설치/테스트 (맥북)

1. Mosquitto Broker 설치 jinsunkimui-MacBookPro:~ jinsun.kim$ brew install mosquitto Updating Homebrew... ==> Auto-updated Homebrew! ==> Installing dependencies for mosquitto: openssl@1.1, libevent,..

miin29na.tistory.com

broker comparison : https://en.wikipedia.org/wiki/Comparison_of_MQTT_implementations

 

Comparison of MQTT implementations - Wikipedia

MQTT (MQ Telemetry Transport or Message Queuing Telemetry Transport) is an ISO standard (ISO/IEC PRF 20922)[1] publish-subscribe-based messaging protocol. It works on top of the TCP/IP protocol. It is designed for connections with remote locations where a

en.wikipedia.org

* 개발 당시 JAVA 기준, Cluster 지원 등의 이유로 Emqx 선택함.

 

Reference

https://www.joinc.co.kr/w/man/12/MQTT/Tutorial

 

MQTT 소개

인터넷 애플리케이션과의 연동

www.joinc.co.kr

 

'IT > Mqtt' 카테고리의 다른 글

[MQTT]Mosquitto 설치/테스트 (맥북)  (0) 2020.04.11
Comments