머신 대 머신 통신에 사용되는 표준 기반 메시징 프로토콜 또는 규칙 세트이다. 스마트 센서, 웨어러블 및 기타 IoT 디바이스는 일반적으로 리소스 제약이 있는 네트워크를 통해 제한된 대역폭으로 데이터를 전송하고 수신해야 한다.
이러한 IoT 디바이스는 MQTT를 데이터 전송에 사용하는데, 구현이 쉽고 데이터를 효율적으로 전달할 수 있기 때문이다. MQTT는 디바이스와 클라우드 사이의 메시징을 지원한다.
MQTT의 장점
가볍고 효율적임
MQTT를 IoT 디바이스에 구현할 때는 최소한의 리소스가 필요하다. 따라서 작은 마이크로컨트롤러에도 사용될 수 있다. 예를 들어 가장 작은 MQTT 제어 메시지는 데이터 2byte만큼 작다. 메시지 헤더도 작기 때문에 네트워크 대역폭을 최적화할 수 있다.
확장성
MQTT 구현에는 최소량의 코드가 필요하며 작업 시 아주 적은 전력만 소비된다. 또한 많은 수의 IoT 디바이스와의 통신을 지원하기 위한 기본적인 기능을 갖추고 있다.
신뢰성
많은 IoT 디바이스는 대역폭은 낮고 지연 시간은 긴 신뢰할 수 없는 셀룰러 네트워크를 통해 연결한다. MQTT에는 IoT 디바이스에서 클라우드에 다시 연결하는데 소요되는 시간을 줄여주는 기능이 기본 탑재되어 있다. 또한 최대 1회(0), 최소 1회(1), 정확히 1회(2)라는 3가지 서비스 품질 수준(QoS)을 정의하여 IoT 사용 사례에 필요한 신뢰성을 보장한다.
보안
MQTT를 사용하면 메시지를 손쉽게 암호화하고 OAuth, TLS1.3, 고객 관리형 인증서 및 기타 최신 인증 프로토콜을 사용하여 디바이스와 사용자를 인증할 수 있다.
우수한 지원
Python과 같은 다수의 언어가 MQTT 프로토콜 구현을 광범위하게 지원한다. 따라서 개발자는 모든 유형의 Application에서 최소한의 코드 작업으로 빠르게 이 프로토콜을 구현할 수 있다.
MQTT의 원리
게시/구독 모델의 원칙을 기반으로 작동한다. 게시자와 구독자를 분리하고 메시지 브로커라는 제3의 구성 요소가 게시자와 구독자 간의 통신을 처리한다.
브로커가 하는 일은 게시자로부터 수신되는 모든 메시지를 필터링하고 구독자에게 직접 배포하는 것이다. 게시자와 구독자를 분리하는 방법에는 3가지가 있다.
MQTT의 구성 요소
MQTT 작동 방식
6LoWPAN 기반의 전송 계층을 포함한 상위 Application 계층에서 M2M노드들 사이의 통신을 지원하기 위한 프로토콜이다. IoT와 같은 대역폭이 제한된 통신 환경에 최적화하여 개발된 REST기반의 경량 메시지 포로토콜이다.
클라이언트/서버 간 1대1 프로토콜이며 Pub/Sub 메시지큐 기능을 사용하지 못한다. 멀티캐스트를 지원하며 제한된 환경에서 제한된 기기에 동작하고 경량 메시지 IoT를 지원하기 위해 만들어졌다.
비동기 수송 방식의 UDP 상에서 UDP의 단점을 보완하는 개념을 포함한 통신 프로토콜이다.
CoAP 특징
MQTT와 CoAP 비교