1. MQTT 개요

  • **MQTT (Message Queuing Telemetry Transport)**는 경량 Pub/Sub 메시징 프로토콜.
  • 설계 목적: 저대역폭, 불안정한 네트워크 환경에서 IoT 디바이스 간 메시지 교환.
  • TCP/IP 위에서 동작하며, TLS를 통해 보안 통신 가능.
  • 주요 특징:
    • 최소 오버헤드 (작은 헤더: 2바이트)
    • Publish/Subscribe 패턴 기반
    • QoS 레벨 설정 가능
    • 지속적 세션과 Last Will 메시지 지원

2. MQTT 아키텍처

2.1 구성 요소

  1. Broker
    • 메시지 중앙 허브.
    • 클라이언트 간 메시지 라우팅.
    • QoS 처리, 세션 유지, Retained 메시지 관리.
    • 예: Mosquitto, EMQX, HiveMQ
  2. Client
    • Publisher, Subscriber 역할 가능.
    • 메시지를 브로커에 발행(Publish)하거나 구독(Subscribe).
    • 장치가 작을수록 경량 라이브러리 사용 (C, Python, JavaScript 등)

2.2 Topic (주제)

  • 메시지가 발행되는 식별자.
  • 계층 구조: home/livingroom/temperature
  • 구독 패턴:
    • #: 다단계 와일드카드 → 모든 하위 토픽 구독
    • +: 단일 단계 와일드카드 → 특정 레벨만 구독

2.3 메시지 유형

  1. Publish: 클라이언트 → 브로커
  2. Subscribe: 브로커 → 클라이언트
  3. Connect / Disconnect
  4. Ping: 연결 유지
  5. Unsubscribe

2.4 QoS (Quality of Service)

  • 메시지 전달 보장 수준
  1. QoS 0 – At most once
    • 한 번만 전송, Ack 없음
    • 낮은 신뢰성, 최소 오버헤드
  2. QoS 1 – At least once
    • 최소 한 번 전송, Ack 필요
    • 중복 가능성 있음
  3. QoS 2 – Exactly once
    • 한 번만 전송, 중복 없음
    • 4단계 핸드셰이크 → 가장 안전, 오버헤드 큼

2.5 Session / Persistent 메시지

  • Clean Session
    • true: 연결 종료 시 구독 정보 삭제
    • false: 연결 종료 후 재접속 시 메시지 미수신 복원 가능
  • Retained Message
    • 마지막 메시지를 브로커가 저장
    • 신규 구독자가 연결 시 즉시 전달
  • Last Will and Testament (LWT)
    • 비정상 종료 시 브로커가 지정 메시지 발행

2.6 연결 흐름 (기본)

  1. Client → Broker 연결 (CONNECT)
  2. Broker → Client 연결 승인 (CONNACK)
  3. Client 메시지 발행 (PUBLISH) 또는 구독 (SUBSCRIBE)
  4. Broker → Client 전달 (PUBLISH)
  5. QoS/ACK 처리
  6. 연결 종료 (DISCONNECT)

3. 보안

  • TLS/SSL: 메시지 암호화
  • Username/Password: 기본 인증
  • ACL: topic 단위 접근 제어
  • JWT / OAuth: 토큰 기반 인증도 지원 가능

4. MQTT 장점

  • 매우 경량 → IoT 디바이스 적합
  • 비동기 Pub/Sub → 느슨한 결합
  • 낮은 전력, 네트워크 효율
  • 다양한 QoS 제공 → 안정성 조절 가능
  • Retained, LWT → 장애 대응 기능

5. MQTT 단점 / 한계

  • 메시지 순서 보장은 단일 클라이언트 연결 내에서만 보장
  • 브로커 의존 → 단일 장애점 가능성 (클러스터링 필요)
  • QoS 2 사용 시 오버헤드 큼
  • HTTP/REST 대비 디버깅 도구 제한적

6. 활용 예시

  • IoT 센서 데이터 수집
  • 스마트홈 디바이스 제어
  • 원격 모니터링 시스템
  • 모바일 앱 실시간 알림
  • Vehicle telematics (차량 원격 데이터 수집)

'소프트웨어 > 상식' 카테고리의 다른 글

Npcap : 윈도우용 패킷 캡처 라이브러리  (0) 2025.09.22
Active Directory(AD)  (1) 2025.09.21
RabbitMQ : 오픈소스 메시지 브로커  (0) 2025.09.20
Apache Kafka  (1) 2025.09.20
JWT(JSON Web Token)  (0) 2025.09.20

+ Recent posts