IoT

MQTT(Message Queuing Telemetry Transport)란?

GearDeveloper 2024. 9. 22. 16:27

MQTT 란?

MQTT(Message Queuing Telemetry Transport)는 ISO 표준의 경량 네트워크 프로토콜로, 제한된 네트워크 환경에서 장치 간 메시지를 효율적으로 전달하기 위해 발행-구독 아키텍처를 사용하며, 중앙 브로커를 통해 메시지를 라우팅하고, 다양한 서비스 품질(QoS) 수준을 제공하여 신뢰성 있는 메시지 전달을 보장함으로써 주로 사물인터넷(IoT), 모바일 애플리케이션등의 분야에서 널리 사용되는 통신 방식입니다.

MQTT 인프라 구조

MQTT 프로토콜에서는 중앙의 브로커가 발행자로부터 받은 메시지를 해당 토픽을 구독한 모든 구독자에게(1:N) 전달하는 방식으로 작동하며, 클라이언트는 발행자와 구독자 역할을 동시에 수행할 수 있어 양방향 통신이 가능하고, 토픽 기반의 필터링, QoS 레벨 조정, 영구 세션 지원, last will and testament 기능 등을 통해 효율적이고 신뢰성 있는 메시지 교환을 보장하면서, 클라이언트 연결 상태 관리, 메시지 큐잉, 보안을 위한 TLS/SSL 암호화 및 사용자 인증 기능도 제공하여 다양한 IoT 환경에서 유연하고 확장 가능한 통신 인프라를 구축할 수 있습니다.

  • MQTT 브로커: 중앙에 위치하며, 모든 메시지의 라우팅을 담당합니다.
  • 발행자(Publisher): 오른쪽에 위치하며, 메시지를 생성하여 브로커에 전송합니다.
  • 구독자(Subscriber): 왼쪽에 위치하며, 관심 있는 토픽의 메시지를 브로커로부터 받습니다.

Topic 구조

MQTT 토픽은 메시지를 분류하고 라우팅하는 계층적 문자열 구조로, '/' 문자로 구분된 여러 레벨로 구성되며(예: "home/livingroom/temperature"), 와일드카드 문자('#'과 '+')를 사용해 유연한 구독이 가능하고, 토픽 이름은 대소문자를 구분하며, 발행자는 존재하지 않는 토픽에도 자유롭게 메시지를 발행할 수 있으며, 구독자는 관심 있는 토픽 패턴을 지정하여 해당 패턴과 일치하는 모든 메시지를 수신할 수 있습니다.

  • 계층적 구조: 토픽은 '/'로 구분된 여러 레벨로 구성됩니다. 예를 들어, "home/livingroom/temperature"와 같은 구조입니다.
  • 유연성: 발행자는 어떤 토픽으로도 메시지를 발행할 수 있으며, 존재하지 않는 토픽도 생성 가능합니다.
  • 와일드카드:
    • '#': 여러 레벨을 한 번에 구독할 수 있습니다. 예: "home/#"은 home 아래의 모든 하위 토픽을 구독합니다.
    • '+': 단일 레벨을 대체합니다. 예: "home/+/temperature"는 home 아래 모든 방의 temperature 토픽을 구독합니다.
  • 대소문자 구분: 토픽 이름은 대소문자를 구분합니다.

'IoT' 카테고리의 다른 글

MQTT(Message Queuing Telemetry Transport) 패킷 구조  (2) 2024.10.30