728x90
반응형
MQTT의 계층 위치
MQTT(Message Queuing Telemetry Transport)는 OSI 7계층 모델에서 응용 계층(Application Layer)에 속하는 프로토콜입니다. HTTP 기반이 아니라, TCP 위에서 독자적인 프로토콜로 동작합니다. 즉, MQTT는 HTTP를 기반으로 한 것이 아니라, 별도의 응용 계층 프로토콜이라고 이해하시면 됩니다.
MQTT 프로토콜 특징
- 경량화된 프로토콜: MQTT는 TCP/IP 위에서 동작하는 퍼블리시/서브스크라이브(Publish/Subscribe) 메시징 프로토콜입니다. MQTT는 독립적인 프로토콜로, 이를 위해 MQTT 브로커(서버 역할)와 MQTT 클라이언트가 필요합니다.
IoT에서 MQTT가 많이 사용되는 이유
- 경량성
- 메시지 헤더가 매우 단순하고 크기가 작아, 리소스가 제한된 IoT 디바이스(저전력, 저성능)에서도 효율적으로 통신할 수 있습니다.
- 적은 대역폭 사용
- 네트워크 대역폭을 최소화하도록 설계되어, 느린 네트워크 환경이나 모바일 환경에서도 원활한 데이터 전송이 가능합니다.
- 빠른 전송 속도
- TCP 연결을 유지하면서 최소한의 패킷 교환으로 메시지를 주고받아 지연 시간이 적습니다.
MQTT 메시지 포맷
- MQTT는 페이로드(payload)에 데이터를 담는 방식에 제약을 두지 않습니다.
- JSON 형식이 자주 사용되지만, 단순 텍스트, 바이너리 데이터, Protocol Buffers 등도 가능합니다.
- 개발자가 필요에 따라 형식을 자유롭게 선택할 수 있습니다.
RabbitMQ와의 차이점
- RabbitMQ는 AMQP(Advanced Message Queuing Protocol) 기반의 메시지 브로커입니다. 하지만 최근에는 다양한 프로토콜(MQTT, STOMP 등)도 플러그인을 통해 지원합니다.
- MQTT는 IoT 환경에 특화된 초경량 메시지 프로토콜입니다.
- **RabbitMQ(기본 AMQP)**는 기업 애플리케이션 통합 환경에서 고기능 메시징을 위해 설계되었습니다.
정리:
- MQTT는 IoT 기기 간 효율적이고 경량화된 통신을 위해 설계된 프로토콜입니다.
- RabbitMQ는 다양한 메시징 패턴 및 큐잉 기능을 폭넓게 지원하는 범용 메시지 브로커입니다.
RabbitMQ와 관련된 주요 정보
RabbitMQ가 사용하는 프로토콜
- RabbitMQ는 기본적으로 **AMQP(Advanced Message Queuing Protocol)**을 기반으로 동작합니다.
- AMQP는 애플리케이션 간 메시지를 송수신하기 위한 이식성 높은 메시징 프로토콜로, TCP/IP 위에서 작동합니다.
- 따라서 RabbitMQ는 TCP/IP → AMQP → RabbitMQ 순서로 동작한다고 이해할 수 있습니다.
RabbitMQ의 데이터(메시지) 담는 방식
- RabbitMQ는 메시지 형식에 대해 특정한 제한을 두지 않습니다.
- 메시지의 **페이로드(payload)**는 다음과 같은 형식으로 사용할 수 있습니다:
- JSON
- XML
- 바이너리 데이터
- 문자 데이터
- 주로 사용되는 형식은 JSON이나 **직렬화된 데이터(예: Protocol Buffers)**입니다.
- 또한, 메시지 헤더나 **속성(Properties)**을 사용하여 메시지를 라우팅하거나 우선순위를 지정할 수 있습니다.
페이로드(Payload)란?
페이로드의 의미
- **"페이로드"**는 메시지에서 실제 전달하고자 하는 핵심 데이터를 의미합니다.
- 비유하자면, 소포 상자라면 상자 자체나 운송 정보를 제외한 상자 안의 내용물이 페이로드입니다.
페이로드와 메시지 구조
메시지는 일반적으로 두 부분으로 구성됩니다:
- 헤더(Header):
- 메시지 라우팅, 우선순위, 포맷, 인증 등 메시지를 어떻게 처리해야 할지를 나타내는 메타데이터.
- 페이로드(Payload):
- 실제 전달하고자 하는 내용(데이터).
페이로드의 형식
- 페이로드에는 형식적 제약이 없습니다.
- JSON, XML, 바이너리 형식, 단순 텍스트 등 다양한 방식으로 데이터를 담을 수 있습니다.
- 개발자는 상황에 맞게 원하는 포맷을 선택하여 사용할 수 있습니다.
MQTT와 RabbitMQ 비교 표
항목MQTTRabbitMQ
사용 목적 | IoT 기기 간 효율적이고 경량화된 통신 | 다양한 메시징 패턴 및 큐잉 기능 제공 |
운영 체제 | CentOS 기반 서버 이미지 추가해야 함 | NAVER Cloud 관리 (별도 OS 관리 필요 없음) |
실행 환경 | 콘솔창, WEB | 네이버 공공 클라우드 플랫폼 Management UI |
프로토콜 | MQTT (TCP/IP) | AMQP (TCP/IP) |
요금 | 서버 운영 시간에 따른 과금 | 서버 운영 시간에 따른 과금 |
기반 기술 | 전자부품연구원 OneM2M 기반 | RabbitMQ 기반 |
양방향 통신 | 지원 (Pub/Sub 방식) | 지원 |
오버헤드 | 매우 작음 | 중간 정도 |
전송 방식 | 퍼블리시/서브스크라이브 방식(Pub/Sub) | 메시지 큐 및 라우팅 |
페이로드 형식 | JSON, XML, 바이너리 데이터, 문자 데이터 등 가능 | JSON, XML, 바이너리 데이터, 문자 데이터 등 가능 |
리전 사용 가능 여부 | 모든 리전에서 사용 가능 | 수도권 리전 (5~15ms 지연 시간 발생, VPC 필요) |
용어 정리
- TCP(Transmission Control Protocol): 전송 제어 프로토콜, 신뢰성 있는 연결 지향형 통신을 보장합니다.
- AMQP(Advanced Message Queuing Protocol): 고기능 메시지 큐잉 기능을 지원하는 프로토콜로, RabbitMQ와 같은 시스템에서 많이 사용됩니다.
결론
MQTT와 RabbitMQ는 각자의 특성과 사용 목적이 다릅니다.
- MQTT는 IoT 환경에서 경량성과 빠른 데이터 전송에 초점을 맞춘 프로토콜입니다.
- RabbitMQ는 AMQP를 기반으로 하는 범용 메시징 시스템으로, 다양한 패턴과 기능을 제공하며, 메시징에 유연성이 필요할 때 적합합니다.
필요한 환경과 목적에 따라 적합한 프로토콜과 시스템을 선택하는 것이 중요합니다.
'임베디드 관련 카테고리 > 프로토콜' 카테고리의 다른 글
SSL, TLS, SSH, SCP, 원격 접속 및 네트워크 통신의 이해 (0) | 2025.01.15 |
---|---|
Paho 라이브러리란 무엇인가? (0) | 2025.01.13 |
MQTT Explorer를 사용하여 NCP 서버의 신호 확인하기 (0) | 2024.12.15 |
Docker를 활용한 Mosquitto 브로커 설정 및 TLS 보안 적용 (0) | 2024.12.15 |
MQTT TLS/SSL 인증 및 설정 가이드 (0) | 2024.12.12 |
댓글