MQTT

IT 위키

Message Queuing Telemetry Transport

발행-구독(Publish-Subscribe) 구조를 쓰는 경량 메시지 전송 프로토콜

  • 1999년 IBM 이 유전 파이프라인 감시용으로 만들었고, 현재는 OASIS 표준이다.
  • 헤더가 최소 2바이트로 매우 작아, 대역폭이 좁고 전력이 제한된 환경에 적합하다.
  • IoT 와 M2M 통신의 사실상 표준으로 쓰인다.
  • TCP 1883번 포트를 쓰고, TLS 적용 시 8883번을 쓴다.
  • 발행자(Publisher) : 메시지를 보내는 쪽. 센서 등
  • 브로커(Broker) : 중개 서버. 모든 메시지가 여기를 거친다
  • 구독자(Subscriber) : 관심 있는 주제의 메시지를 받는 쪽

발행자와 구독자는 서로를 알지 못한다. 브로커의 토픽(Topic)을 통해서만 연결되므로 한쪽이 바뀌어도 다른 쪽에 영향이 없다.

토픽은 `home/livingroom/temperature` 처럼 계층 구조로 쓰며, `+`(한 단계)와 `#`(그 아래 전부) 와일드카드로 구독할 수 있다.

QoS 수준

[편집 | 원본 편집]
수준 보장 설명
QoS 0 At most once 한 번 보내고 확인하지 않는다. 유실 가능
QoS 1 At least once 확인될 때까지 재전송한다. 중복 도착 가능
QoS 2 Exactly once 정확히 한 번 전달한다. 가장 느리고 무겁다

그 밖의 기능

[편집 | 원본 편집]
  • Last Will and Testament : 클라이언트가 비정상 종료하면 브로커가 미리 등록해 둔 유언 메시지를 대신 발행한다. 장치 연결 끊김을 감지하는 데 쓴다.
  • Retained Message : 토픽의 마지막 메시지를 보관해, 새로 구독한 클라이언트가 즉시 현재 값을 받게 한다.
  • Keep Alive : 일정 주기로 PINGREQ 를 보내 연결 상태를 확인한다.
  • 기본적으로 평문이다. TLS 적용이 필요하다.
  • 사용자명·비밀번호 인증을 지원하지만 평문 전송되므로 TLS 와 함께 써야 한다.
  • 브로커에서 토픽별 접근 제어를 설정한다. 설정을 빠뜨린 공개 브로커가 노출되는 사고가 자주 발생한다.

같이 보기

[편집 | 원본 편집]