sina.dev 2022. 1. 27. 16:34
728x90

목차

  1. MQTT란
  2. MQTT의 품질
  3. MQTT 버전 특징

1. MQTT란

  • MQTT는 M2M, IOT를 위한 프로토콜로서 최소한의 전력과 패킷량으로 통신하는 프로토콜이다. 따라서 IoT와 모바일 어플리케이션 등의 통신에 적합한 프로토콜이다.
  • MQTT는 HTTP, TCP 등의 통신과 같이 클라이언트-서버 구조로 이루어지는 것인 아닌 Broker와 Publisher, Subscriber 구조로 이뤄진다.

  • Publish
    • Publish는 발행자(Publisher)가 주제(Topic)를 가지고 메시지를 발행할 때 일어나는 동작이다.
    • 주제(Topic)을 구독하고 있는 구독자(Subscriber)만 해당하는 주제의 메시지를 받을 수 있다.
  • Topic
    • Topic은 브로커가 연결된 각 클라이언트에 대한 메시지를 필터시 사용한다. UTF-8 문자열로 나타난다.
    • 각 주제는 / (슬래시) 로 구분한다.
    • 와일드 카드를 사용할 수 있는데, 와일드 카드란 여러 주제를 동시에 구독할 때 사용한다.
    • 와일드 카드 : 단일 : + / 다단계 : #

 

 


 

2. MQTT의 품질

  • MQTT는 QoS(Quality of Service)를 제공하는데, 총 3단계로 나뉘어져 있다.
  • 0 : 메시지는 한번만 전달하며, 전달 이후의 수신 과정을 체크하지 않는다.
  • 1 : 메시지는 한번 이상 전달되고, 핸드셰이킹 과정을 추적하나, 엄격하게 추적하지 않기 때문에 중복 수신의 가능성이 있다.
  • 2 : 메시지는 한번만 전달되고, 핸드셰이킹의 모든 과정을 체크한다.

1. QoS 0 동작

 

2. QoS 1 동작 (At least Once)

 

3. QoS 2 동작 (Exactly Once)

 

 


 

3. MQTT 버전 특징

MQTT 3.1

  • username과 password로 브로커에 연결할 수 있다.
  • 브로커에 연결 후 connack 패킷을 받는다.
  • 권한이 없는 publish와 subscribe 명령에 정보를 받지 못하게 된다.
  • MQTT 문자열이 UTF-8로 지원

 

MQTT 3.1.1

  • $ 로 시작하는 주제

 

MQTT 5.0

  • 승인과 실패 이유 코드를 리턴 받을 수 있다.
  • 공유 구독 : 클라이언트간에 부하를 분산하여 부하 문제를 줄인다.
  • 메시지 만료 : 메시지에 만료 날짜가 포함되며 기간 내에 배달되지 않으면 삭제 된다.
  • 주제 별칭 : 주제 이름을 단일 숫자로 바꿀 수 있다.

 

버전별 사용 가능 Broker