서론
최근 실무에서 MQTT 프로토콜을 이용한 단말기 등록 프로그램을 개발해야하는 업무가 있었습니다. 처음 접한 프로토콜 개발에 대한 걱정에 비해 다행히 문제없이 개발은 잘 이뤄졌고 이번에 학습한 MQTT에 대해 정리하려합니다.
MQTT란?
사물 통신(Machine to Machine, M2M), 사물 인터넷(Internet Of Things,IOT)를 위한 프로토콜로써 최소한의 전력과 패킷량으로 통신하는 경량 메세지 전송 프로토콜을 의미한다. 따라서 MQTT는 IOT와 모바일 어플리케이션 등의 사물 통신에 적합한 프로토콜이라 말할 수 있다.
MQTT 송/수신 방식은?
일반적인 HTTP, TCP/IP와 같이 클라이언트/서버의 관계가 아닌 송신자(Publisher)가 메세지 매개자(Broker)에게 발행(Publish)를 했을 때 매개자를 같은 주제(Topic)로 구독하고 있는 구독자(Subscriber)에게 해당 메세지를 발행해주는 방식이다.
지저분하게 보이는 괄호 안 영어를 사용한 이유는 실제 MQTT를 사용하는데 쓰는 단어이기 때문에 붙여서 작성하였다. 물론 메세지 큐 사용을 안해본 사람이라면 지금은 해당 말들이 이해가 어려울 수 있다. 다음 통신 과정 이미지를 보자.
위의 이미지를 토대로 송/수신 플로우를 작성해보자.
1. Broker에게 Subscriber는 정해진 topic을 설정하여 구독을 한다.
2. publisher가 subscriber가 사용한 같은 topic과 data를 Broker에게 송신한다.
3. Broker는 해당 topic을 구독하고있는 구독자들에게 Publisher가 송신한 데이터를 n개의 구독자에게 전달한다.
따라서, 각 카테고리로 다시 정리해보면 다음과 같다.
- Subscriber : Topic을 Broker에게 구독해놓고 이 후 Publisher가 발행한 데이터를 받는다.
- Broker : Publish와 Subscriber의 중개인으로써 Topic관리와 데이터를 전달해주는 역할을 한다.
- Publisher : 정해진 Topic을 가진 구독자들에게 Data를 전달한다.
이렇게 플로우로 봤을 때 MQTT가 어떤 송/수신 방식을 갖고있는지 이제는 어느정도 이해가 갈 것이라 생각한다. 이제 계속 사용되는 단어인 Topic에 대해 알아보자.
MQTT Topic이란?
메세지를 발행-구독하는 행위는 채널 단위로 일어나는데, MQTT에서 이를 Topic이라 칭한다. 이 Topic은 문자 슬래시(/)로 구분되는 계층 구조를 갖게 설계한다.
예를 들어 다음과 같다.
- company/firstFloor/AirConditioner
위의 말을 해석하면 다음과 같다. 회사/일층/에어컨라고 보면 되고 해당 토픽을 사용한다고 가정했을 때 이 Topic은 아마 회사 일층의 에어컨을 제어하는 Topic이 될 것이다.
이와 같이 토픽을 계층 구조로 설계하는 것이 중요하다.
마치며
이번 포스팅에선 MQTT의 개념과 통신 과정에 대해 무엇인지 간단히 이해를 위해 정리한 글이며, 이 외 MQTT 프로토콜에도 굉장히 많은 내용들이 있습니다. 더 자세히 알고싶으신분은 추가 검색을 통해 패킷과 QoS등에 대해 알아보시기 권장드립니다.
'Computer Science > Network' 카테고리의 다른 글
암호화 통신 HTTPS란? (개념/ 동작 방식/ 대칭키/ 비대칭키/ SSL/TLS) (0) | 2022.06.13 |
---|---|
TCP와 3-Way, 4-Way Handshake란? (개념/ 동작 방식) (3) | 2022.06.12 |
[Http Cache] 캐시(Cache)의 동작 원리와 조건부 요청 - 2편 (0) | 2022.06.01 |
[Http Cache] 캐시(Cache)의 동작 원리와 조건부 요청 - 1편 (0) | 2022.06.01 |
캐시/ 웹 캐시(Cache)란? (개념/ 사용 이유/ 장점/ 동작 원리) (0) | 2022.06.01 |
댓글