본문 바로가기
Protocol

MQTT

by holy season 2023. 6. 19.
반응형

MQTT란?

  • MQTT 는 낮은 대역폭 환경에서 M2M(Machine to Machine) 원격 측정용으로 설계된 경량 게시/구독 메시징 프로토콜
  • 1999년 Andy Stanford-Clark(IBM)와 Arlen Nipper가 위성을 통해 송유관 원격 측정 시스템을 연결하기 위해 설계
  • MQTT 는 IOT (사물 인터넷) 배포를 위한 주요 프로토콜 중 하나

MQTT Publisher / Subscriber 구조

  • Temperatur Sensor가 topic으로 temperature를 발행 후 MQTT Broker에 24ºC 메시지를 전달
  • MQTT Broker는 temperature topic을 구독하고 있는 client들에게 24ºC 메시지를 전달

MQTT Control Packet Format

MQTT Control Packet Structure

Fixed header Format

byte 1

[4~7] 비트는 MQTT Control Packet type을 정의

[0~3] 비트는 MQTT Control Packet type에 따른 각각의 플래그를 명시

byte 2

[0~7] 비트 Remaining Length

variable header와 payload안의 데이터를 포함한 현재 패킷 안에 있는 남아있는 바이트의 수

 

MQTT Control Packet type 종류

Flags

DUP

PUBLISH Control Packet의 중복 전달

QoS

PUBLISH Quality of Service

최대 한 번

QoS = 0

  • 메시지는 최대 한 번 전달되거나 전혀 전달되지 않음
  •  네트워크 간 전달은 수신확인되지 않음
  • 가장 빠른 전송 모드

최소 한 번

QoS = 1

  • 기본 전송 모드
  • 항상 최소 한 번 전달
  • 송신자가 수신확인을 수신하지 않는 경우, 메시지는 수신확인이 수신될 때까지 DUP 플래그가 설정되어 다시 송신
  • 메시지가 처리될 때까지 송신자와 수신자는 메시지를 로컬에 저장
  • 수신자로부터 수신확인을 받고 나면 송신자로부터 메시지가 삭제

정확히 한 번

QoS = 2

  • 메시지는 항상 정확히 한 번만 전송
  • 메시지가 처리될 때까지 송신자와 수신자는 메시지를 로컬에 저장
  •  송신자는 메시지를 전송하고 수신자에게서 메시지를 저장했다는 수신확인을 받. 송신자가 수신확인을 수신하지 않는 경우, 메시지는 수신확인이 수신될 때까지 DUP 플래그가 설정되어 다시 송신
  • 송신자는 수신자에게 메시지 "PUBREL"의 처리를 완료할 수 있다고 전달. 송신자가 "PUBREL" 메시지에 대한 수신확인을 수신하지 않은 경우 수신확인이 수신될 때까지 "PUBREL" 메시지가 다시 송신. 송신자는 "PUBREL" 메시지에 대한 수신확인을 수신하면 저장했던 메시지를 삭제.

RETAIN

PUBLISH Retain flag

MQTT Brokers or Servers

원래 용어는 Broker 였지만 서버로 변경됨

Mosquitto

Windows 및 Linux에서 실행되는 무료 오픈 소스 MQTT 브로커

 

출처

https://mqtt.org/

 

MQTT - The Standard for IoT Messaging

Why MQTT? Lightweight and Efficient MQTT clients are very small, require minimal resources so can be used on small microcontrollers. MQTT message headers are small to optimize network bandwidth. Bi-directional Communications MQTT allows for messaging betwe

mqtt.org

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

 

http://cris.joongbu.ac.kr/course/2017-s/iot/ppt/6VXFR20174271377.pdf

 

반응형

'Protocol' 카테고리의 다른 글

RTSP(Real Time Streaming Protocol)  (0) 2023.04.11