개발자 랩실/IT 기술
MQTT 기초
sina.dev
2022. 1. 27. 16:34
728x90
목차
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